One statistical model sets every published number. Two AI analysts, Claude and Codex, forecast matches in selected leagues in shadow: their views are locked and graded the same way, and they get a weight only if they prove better on enough matches. No betting-market data is used.
Model version v1.3-2026-11
The model panel
Each card shows that layer's own graded matches, so check the count before comparing scores. In this version the published forecast equals the statistical model.
Sets every published probability. Elo ratings measure team strength; a Dixon-Coles goal model turns ratings into expected goals and a full score grid, from which we read win, draw and loss chances, scores, over/under and both teams to score.
Data: Results and fixtures; historical results (CC0) for fitting. Shots on target are not used yet.
An AI analyst that reads the same numbers as the statistical model plus a sourced team-news dossier, then gives its own win, draw and loss probabilities and a bounded adjustment to expected goals. Its view is locked and graded like every other layer, but it does not change the published numbers yet.
Data: The match dossier (dated team news with links), model ratings and recent results. No live browsing at prediction time.
A second AI analyst with the same inputs and rules as Claude, run separately. Comparing the two shows whether an adjustment is a real signal or one model’s quirk; their combined view forms the AI layer that is tested in shadow.
Data: The same match dossier, model ratings and recent results as Claude, prepared separately.
A betting-market layer would anchor forecasts to closing odds, which are hard to beat. We do not use it: free odds sources forbid public or commercial use, so the layer stays off until we can license odds.
At least 300 graded matches and 6 weeks11 graded with the AI layer over 0.1 weeks
AI layer beats the statistical model on log loss and RPS, on the same matchesAI layer minus statistical: RPS +0.0003, log loss +0.0009 (negative is better; the next condition checks whether the gap is real)
95% interval of the RPS difference excludes zero-0.0004 to +0.0010
Improvement holds in at least two-thirds of leagues1 of 4 leagues with AI forecasts
0 of 4 conditions met. All four must hold before the AI layer gets a weight (at most 50%), with a new model version and a changelog entry.
Statistical model: Elo + Dixon-Coles, log-pooled and calibrated per league; European club competitions rated across leagues
0%
Adds the Champions League, Europa League and Conference League. A club's European rating starts from its domestic rating and adds a league-strength offset and a club offset, both learned from European results since 2016/17, qualifying rounds included. Clubs whose domestic league is not in our data are rated from European matches only. Goals use the club's domestic attack and defence plus league and club offsets fitted on European matches. Settings were chosen on 2019/20 and 2021/22 (matches played without fans left out) and tested on 2022/23 to 2025/26: Champions League RPS 0.191 over 628 matches, Europa League 0.198 over 660, Conference League 0.208 over 588. In the Champions League test the model was too cautious about favourites. Domestic league forecasts are unchanged from v1.2-2026-11.
v1.2-2026-11
2 Nov 2026 – 2 Nov 2026
Statistical model: Elo + Dixon-Coles, log-pooled and calibrated per league
0%
Calibration per league: each league gets its own temperature, chosen on its validation seasons (2020/21–2021/22; Scotland 2020/21; Saudi Pro League 2023/24) and pulled towards the shared value when the league has little history. Serie A keeps the shared value because its own failed our calibration check. Clubs moving between the Premier League and the Championship now keep their rating across the two leagues (Elo gap 400 points, Dixon-Coles gap 0.1) instead of starting as newly promoted sides. One erroneous result removed from the Saudi history. Other settings unchanged from v1.1-2026-10.
v1.1-2026-10
31 Oct 2026 – 2 Nov 2026
Statistical model: Elo + Dixon-Coles, log-pooled and calibrated
0%
First version fitted on real results: open historical data (CC0) from 2016/17 plus live-season results after the open data's last update. Settings chosen on the 2020/21–2021/22 validation seasons, reported on 2022/23–2025/26. Claude and Codex not run yet (no AI layer).
v1.0-2026-10
Not published
Statistical model: Elo + Dixon-Coles, log-pooled and calibrated
0%
Development prototype, run only on sample data while the site was being built. It was never published, and none of its forecasts are in the ledger or the track record.
Every locked forecast records its model version in the ledger.
Claude is an AI model made by Anthropic and Codex by OpenAI. We use them as tools to read match dossiers; neither company reviews, sponsors or endorses these forecasts.
For information and entertainment only. Not betting advice. 18+. Predictions are probabilities, not certainties. Responsible gambling
Can we count your visit?With your permission we use Google Analytics, which sets cookies, to see which pages people read. No ads. The site works the same if you say no.