How the Model Works
We publish this page because honest analytics deserve an honest explanation. You should be able to read the approach, check our backtest numbers, and decide for yourself whether the forecasts on this site are worth your attention.
1. What we're modelling
For every qualifying fixture we estimate three probabilities — a home win (H), a draw (D), and an away win (A) — plus the expected number of goals each team will score. We are notpredicting exact scores, we are not issuing “picks”, and we never guarantee outcomes. The right way to read us is: “if this match were played 100 times, the model thinks the home team would win roughly this many.”
2. The statistical baseline — Dixon-Coles (1997)
Each team is assigned an attack strength α and a defence weakness β. Expected goals are:
λ_home = α_home × β_away × γ (γ = home-field advantage, ≈ 1.3) λ_away = α_away × β_home
Goal counts follow Poisson distributions with those means, with a low-score correction τ that accounts for the negative correlation between home and away goals in 0-0, 1-0, 0-1, and 1-1 scorelines — a well-known quirk of football that pure Poisson misses. We fit α, β, γ, and the correction ρ by maximum likelihood with time-decayed weights (recent matches count more than old ones).
3. The AI reviewer — Claude Haiku 4.5
The statistical model is blind to things humans care about: injuries, rotations, tournament state, stylistic matchups, and breaking news. So after fitting Dixon-Coles, we hand the baseline probabilities plus a structured context document (recent form, opponent strength, round, venue, news context) to Claude and ask for an adjusted forecast with reasoning.
The final published probability is a 55/45 blend of the statistical and LLM outputs. The weights are deliberately conservative: the stats model is the anchor, the LLM nudges. This prevents the AI from overreacting to narrative while still capturing context the equations miss.
4. The data-quality gate
Not every match has enough data to warrant a confident forecast. We score every fixture out of 100 based on:
- Effective training sample per team (30 pts)
- Recent form availability for both sides (25 pts)
- Lineups published before kickoff (20 pts)
- Head-to-head history (10 pts)
- News and injury context (10 pts)
- Competition tier (5 pts)
Matches scoring ≥65publish at up to 5★ confidence. Scores of 45–64 publish with a 3★ cap and a “moderate data” note. Scores of 25–44 publish free as experimental. Anything under 25 is suppressed entirely — we would rather show nothing than a misleading number.
5. The SHA256 integrity lock
Every prediction's canonical JSON is hashed with SHA256 and the hash is stored alongside the prediction. The hash appears at the bottom of every prediction page and can be re-verified by anyone hitting our public endpoint:
GET /api/predictions/verify?id=<fixtureId>
This is the proof layer. If a prediction turns out to be wrong after kickoff, we can't quietly change it and claim we were right — the hash would no longer match. If it turns out to be right, you know we didn't have insider information tweaked in at the last minute.
6. Backtest results (real numbers, no cherry-picking)
Top-5 European leagues, last 12 months
Walk-forward backtest on 750 matches across Premier League, La Liga, Bundesliga, Serie A, and Ligue 1. The model was retrained every 10 matches using only data available before each fixture kicked off — no future information leakage.
| 1X2 accuracy | 49.9% |
| Uniform baseline | 33.3% |
| Always-home baseline | 42.8% |
| Log-loss | 1.02 (uniform = 1.10) |
| High-confidence bucket (87%+) | 85% hit rate |
FIFA World Cup 2022 — ensemble backtest
All 64 matches predicted using pre-tournament training data only. International football is materially harder than club football — sample sizes per team are small and upsets define the tournament.
| Stats-only accuracy | 42.2% |
| Ensemble (stats + LLM) | 43.8% |
| Log-loss vs uniform | 1.19 vs 1.10 |
| Model-called 'chalk' picks | hit rate ~70% |
| True upsets (Saudi, Japan, Morocco) | largely missed — as disclosed |
These numbers will improve when real-time injury feeds and live lineup data are wired into the LLM reviewer for matches during the tournament window. The 2022 backtest was run without those signals; 2026 matches will have them.
7. What this model deliberately does not do
- Predict exact scores (the Poisson distribution makes exact scores a fool's errand).
- Reliably catch upsets. Argentina 1-2 Saudi Arabia sat at 5% in our model. Famous upsets are, by definition, unpredictable from historical patterns.
- Provide betting tips or recommend wagers. This is analytical forecasting only.
- Incorporate insider information. We use only publicly available data from our sports-data partners.
8. Read further
- Dixon & Coles (1997). “Modelling Association Football Scores and Inefficiencies in the Football Betting Market.”
- Constantinou & Fenton (2012). “pi-football: A Bayesian network model for forecasting Association Football match outcomes.”
- Hubáček et al. (2019). “Learning to predict soccer results.”
Questions? Email hello@soccerportalx.com or read our Terms.