WorldCupQuant
Prediction Terminal
Model: historical Elo + PoissonFixtures: live APIRatings: international history
Model Stack
| Component | Role | State |
|---|---|---|
Historical International Elo Fitted from international results with recency decay | Ranks team strength before kickoff | active |
Poisson score model Uses expected goals derived from historical Elo gaps | Turns expected goals into scoreline probabilities | active |
Tipp EV optimizer Optimizes game rules, not emotional plausibility | Chooses the score with best expected scoring-rule points | active |
Historical calibration Needs historical international fixture dataset | Backtests log loss, Brier score, and calibration buckets | planned |
Data Lineage
- Fixtures and match status come from football-data.org via the ingest endpoint.
- Teams are upserted into Postgres and predictions are generated on request.
- Tournament tips are regenerated after ingest and stored as pre_tournament/current phases.
- No scheduled retraining exists yet; ratings refresh when fixture ingest or the Elo admin endpoint runs.
Calibration Status
Elo fitting is now data-driven, but calibration is not fully proven yet. Confidence labels should still be treated as probability-spread diagnostics until backtests are published.
Retraining
Fixture ingest ensures historical Elo ratings exist, then refreshes tournament tips. Use the Elo admin endpoint with force=true to refit ratings from source history.
Next Upgrade
Publish backtested log loss, Brier score, and calibration curves per model version.
Interpretation
A “Low” confidence label does not mean the model is broken. It means the top 1X2 outcome is close to the alternatives, which is common in football.