Teams Loaded
Active in model
Finished Matches
FIFA2026 results in data
Predictions Served
Since last restart
Uptime
Last retrain: —
XGBoost Feature Importance (Top 25) loading...

This chart is diagnostic only — this XGBoost model is not used for the live win/draw/loss predictions elsewhere in the app (those come from the Dixon-Coles engine). Known limitation: the form_*/qual_* features are single current snapshots merged onto every historical training row rather than recomputed as of each match's own date, so treat rankings here as "correlated with outcomes," not a validated out-of-sample predictor. (An earlier version of this chart also included head-to-head record features, which for any pair with only one prior meeting directly encoded that match's own result — that leak has been removed.)

Model Health
XGBoost Model
Retrain Status
Eval Matches
Auto-Update Active (30 min)
Grafana Metrics /api/metrics
Project Structure
new-project/
├── app.py Flask dashboard
├── train_predict.py XGBoost + Poisson
├── scraper_all_teams.py ESPN scraper
├── build_dataset.py Feature engineering
├── run_pipeline.sh Full pipeline
├── data/
│ ├── wc2026_match_results.csv
│ ├── all_player_career_stats.csv
│ ├── wc2026_all_rosters.csv
│ └── 48 squad CSVs...
├── dataset/
│ ├── team_features.csv
│ ├── matches_train.csv
│ ├── matches_test.csv
│ └── evaluation_results.csv
├── models/
│ ├── xgb_model.pkl
│ ├── label_encoder.pkl
│ └── feature_cols.pkl
└── templates/ 8 HTML pages
Transitive Strength Model (common-opponent bridge) loading...

For every FIFA2026 team pair, scores how each side performed against shared opponents (e.g. France vs Paraguay, bridged via Argentina/Brazil/Morocco) and simulates the implied result. This is a shadow/reference signal — it does not feed the live win/draw/loss probabilities above. Rebuilt automatically on every retrain by build_transitive_dataset.py.

Matchup Favorite Net GD Win / Draw / Win Likely score Paths Common opp.
Type a team name above to see its matchups.