3b065775f5
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
42 lines
1.1 KiB
YAML
42 lines
1.1 KiB
YAML
# Italian sports news sources for RAG pipeline
|
|
sources:
|
|
gazzetta:
|
|
name: "Gazzetta dello Sport"
|
|
url: "https://www.gazzetta.it/calcio/serie-a/"
|
|
rss: "https://www.gazzetta.it/rss/calcio/serie-a.xml"
|
|
enabled: true
|
|
|
|
skysport:
|
|
name: "Sky Sport Italia"
|
|
url: "https://sport.sky.it/calcio/serie-a"
|
|
rss: "https://sport.sky.it/calcio/serie-a/rss.xml"
|
|
enabled: true
|
|
|
|
dimarzio:
|
|
name: "Gianluca Di Marzio"
|
|
url: "https://gianlucadimarzio.com/"
|
|
enabled: true
|
|
|
|
tuttomercatoweb:
|
|
name: "TuttoMercatoWeb"
|
|
url: "https://www.tuttomercatoweb.com/serie-a/"
|
|
enabled: true
|
|
|
|
football_italia:
|
|
name: "Football Italia"
|
|
url: "https://football-italia.net/"
|
|
enabled: true
|
|
|
|
# Entity extraction schema
|
|
entities:
|
|
- name: "INJURY"
|
|
fields: [player, team, injury_type, severity, expected_return_matchday]
|
|
- name: "SUSPENSION"
|
|
fields: [player, team, matchdays_banned, reason]
|
|
- name: "TACTICAL_SHIFT"
|
|
fields: [team, old_formation, new_formation, confidence]
|
|
- name: "TRAINING_UPDATE"
|
|
fields: [player, team, status, notes]
|
|
- name: "TRANSFER_RUMOR"
|
|
fields: [player, from_team, to_team, probability]
|