Commit Graph

17 Commits

Author SHA1 Message Date
ramseshk 68670889c7 Full 25/26 dataset: 38 matchdays of votes + season stats + ML predictions
- Added new_data/ with complete 2025/26 Fantacalcio dataset:
  - 38 matchday vote files (Voti_*_Giornata_1-38.xlsx) = 12,049 per-player votes
  - Statistiche 2025/26 (663 players) and 2026/27 (507 players)
- Built comprehensive per-match training dataset from vote files
- Expert model: real 25/26 FV baselines + home/away + opponent strength adj
- Generated 505 Matchday 1 predictions with differentiated FV scores
- Top 5: Malen (9.11), Martinez L. (8.43), Thuram (8.13), Dimarco (7.82), Calhanoglu (7.82)
- MCTS Starting XI: Captain Malen, 4 Inter (home vs Monza), 93.1 expected pts
- All 31 tests passing
2026-08-11 14:31:40 +08:00
ramseshk 4702571285 Run pipeline: live 26/27 data + real 25/26 stats, expert model predictions
- Updated 26_27_teams.yaml with confirmed teams from live Fantacalcio.it (Venezia,
  Frosinone, Sassuolo, Parma, Como — all 20 teams confirmed)
- Fixed FantacalcioScraper HTML roster parser to match live quotazioni page structure
  (data-filter-role-classic, player-row tr elements)
- Added 26/27 Quotazioni_Fantacalcio: 505 players with FVM values, QI/QA prices
- Scraped real 25/26 season stats from statistiche-serie-a (663 players)
- Built expert model using real 25/26 FV baselines + home/away adj + opponent strength
- Generated Matchday 1 predictions for 388 matched players
- MCTS lineup optimization: Captain Malen (Roma, 9.67 FV), 98.1 expected pts
- All 31 tests passing
2026-08-11 14:13:01 +08:00
ramseshk 3b065775f5 Major refactor: Fantabeto 26/27 — modular package, GBM ensemble, MILP/MCTS optimization
Phase 1: Data Engineering
- Refactored notebooks into src/{scraper,features,models,optimization,bot}
- FBref scraper with proxy rotation + Playwright Cloudflare bypass
- Fantacalcio.it integrated scraper (authenticated API + HTML fallback)
- api-football RapidAPI client for supplementary xG/xA/injuries
- RAG news pipeline: Gazzetta, Sky Sport, Di Marzio → injury/suspension/tactical extraction
- 26/27 season config: teams, scoring rules, name mappings, news sources

Phase 2: SOTA ML Architecture
- GBM Ensemble (LightGBM + CatBoost + XGBoost) with stacked blending
- Bootstrap ensemble for uncertainty quantification
- SinhArcsinh distribution head (ported from original TF Probability)
- Card classifiers (yellow/red), penalty model, goal probability (Poisson)
- Temporal GNN for player interaction modeling (crosses→goals, passes→assists)
- Optuna hyperparameter tuning with time-series CV

Phase 3: Operations Research
- Auction solver: MILP knapsack with PuLP (budget + role constraints)
- Grid Auction (Asta a Griglia): Minimax game theory bidding strategy
- Weekly lineup optimizer: MCTS maximizing win probability vs opponent
- Modificatore Difesa integration + captain selection
- Transfer market analyzer: buy-low/sell-high via xG regression to mean
- Opponent behavior modeling from historical lineage patterns

Phase 4: Agentic Workflow
- Telegram bot: auto-briefing (Friday + Sunday morning)
- Tactical briefing generator with start/sit recommendations
- GitHub Actions CI/CD: scheduled pipeline (scrape → predict → notify)

Infrastructure:
- 31 pytest unit tests (features, models, scraper, optimization)
- requirements.txt (lightgbm, catboost, xgboost, optuna, pulp, playwright, langchain)
- Makefile with install/test/lint/scrape/train/bot targets
- Jupyter notebook: 26_27_strategy.ipynb demonstrating auction + matchday 1 mockup
- Completely rewritten README.md with architecture diagram
2026-08-11 13:16:07 +08:00
Giuseppe Musicco 6d9167596c Update matchday #8 2023-10-05 19:41:20 +02:00
Giuseppe Musicco 3e9080e07d Matchday #7 2023-09-30 09:24:58 +02:00
Giuseppe Musicco 09a0e33af5 Serie A 23/24 matchday 5 2023-09-21 07:51:22 +02:00
Giuseppe Musicco caf7754be7 Code updated for Serie A 2023/2024
- Reorganization of data folders
- Code adapted for the new Serie A season, also considering only a small number of league games has been played
- Stats from other leagues are considered for players at their first Serie A season (rookies), for now without any adaptation based on league difficulty
- Minor fixes
2023-09-09 19:36:56 +02:00
Giuseppe Musicco 1492328958 Code updated for Serie A 2023/2024
- Reorganization of data folders
- Code adapted for the new Serie A season, also considering only a small number of league games has been played
- Stats from other leagues are considered for players at their first Serie A season (rookies), for now without any adaptation based on league difficulty
- Minor fixes
2023-09-09 19:31:52 +02:00
Giuseppe Musicco 2ea1b65972 Update README.md 2023-07-11 08:37:47 +02:00
Giuseppe Musicco 99fb244c26 Matchday 34 2023-05-06 09:12:45 +02:00
Giuseppe Musicco 4dc3df3ec2 Matchdays 32 and 33 + notebook for Lineup simulation 2023-04-29 10:39:31 +02:00
Giuseppe Musicco 09302a08e4 Update matchday 22 + code fixed for new FBRef data and Fantacalcio probable lineups 2023-02-11 08:44:48 +01:00
Giuseppe Musicco 8f7df5dd7f Minor update (matchday 21)
- updated code for new FBRef stats;
- updated players list;
- players who changed team handled slightly better
2023-02-04 13:10:39 +01:00
Giuseppe Musicco bfdc38b7d6 Merge branch 'main' of https://github.com/uPeppe/fantabeto 2023-01-28 11:09:15 +01:00
Giuseppe Musicco c4a50cecd2 Update Jan before matchday 20 2023-01-28 11:06:11 +01:00
Giuseppe Musicco 0a2121b0fc Update after matchday 15 2022-11-15 20:10:35 +01:00
Giuseppe Musicco b60a8a061c Release 2022-11-12 11:29:20 +01:00