Skip to content

Model comparison

Several models, trained on identical data cut at identical moments, asked about the same matches and scored by the same code. The question this page answers: if each of these had existed before these matches were played, how many would it actually have called correctly?

Backtested Everything here is retrodiction. Each match was priced from a fit over matches played strictly before its own kickoff, which is an honest test — but the code was written knowing how these seasons ended, so none of it is a forecast published in advance.

Big five + Greece 2018-2026
108,035 predictions · 15,473 matches · 5 hours ago
Model Matches Correct Accuracy RPS Log loss Overconfidence
Ensemble 15,404 8,050 52.26% ±0.79 0.1999 0.9855 +0.2%
Dixon-Coles 15,404 8,050 52.26% ±0.79 0.2000 0.9854 -0.7%
Elo 15,404 8,022 52.08% ±0.79 0.2017 1.0008 +1.4%
Poisson 15,404 7,963 51.69% ±0.79 0.2022 1.0056 +1.6%
League base rates baseline 15,404 6,641 43.11% ±0.78 0.2304 1.0751 +0.6%
Random baseline 15,404 5,111 33.18% ±0.74 0.2353 1.0986 +0.2%
Always home baseline 15,404 6,641 43.11% ±0.78 0.4271 2.6285 +54.9%

Are these differences real?

McNemar's test on the matches where exactly one of the pair was right. Matches they both got right, or both got wrong, say nothing about which is better.

Elo — in detail

Confusion matrix

Rows: what happened. Columns: what it said.

Home Draw Away
Home 5,478 39 1,124
Draw 2,686 40 1,201
Away 2,285 47 2,504

By outcome

Precision: when it said this, how often was it right. Recall: of the times this happened, how often did it say so.

Outcome Said Happened Precision Recall
Home 10,449 6,641 52.4% 82.5%
Draw 126 3,927 31.7% 1.0%
Away 4,829 4,836 51.9% 51.8%

This model almost never predicts a draw. That is normal for argmax over three outcomes — draws are rarely the single most likely result — but it means its accuracy figure is carried entirely by home and away calls.

Does confidence mean anything?

Grouped by how sure it was. A calibrated model matches its own claim.

Band Matches Said Happened Gap
< 40% 2,040 37.2% 35.8% +1.4%
40-45% 2,553 42.4% 42.1% +0.4%
45-50% 2,382 47.5% 46.2% +1.2%
50-55% 2,060 52.4% 49.4% +3.0%
55-60% 1,926 57.4% 54.3% +3.1%
60-65% 1,199 62.7% 62.6% +0.2%
65-70% 1,324 67.4% 65.3% +2.1%
70-75% 1,196 72.5% 72.9% -0.4%
75-80% 584 77.0% 75.9% +1.1%
80-90% 140 81.7% 87.9% -6.1%

If you only followed it when sure

Coverage matters as much as accuracy: a threshold that is right 80% of the time but fires four times a season is a curiosity, not a strategy.

At least Matches Accuracy Coverage
all 15,404 52.1% 100%
40% 13,364 54.6% 87%
45% 10,811 57.5% 70%
50% 8,429 60.7% 55%
55% 6,369 64.3% 41%
60% 4,443 68.7% 29%
65% 3,244 71.0% 21%
70% 1,920 74.9% 12%
75% 724 78.2% 5%
80% 140 87.9% 1%

When the models agree

Only the pure models are counted here — agreement with the bookmaker benchmark would be measuring something else.

Agreeing Matches Correct Accuracy
2 / 4 378 139 36.8%
3 / 4 1,754 697 39.7%
4 / 4 13,272 7,229 54.5%

By competition

Group Matches Accuracy RPS
Super League 1 1,728 52.6% 0.1903
Serie A 2,921 52.4% 0.1983
La Liga 2,947 51.8% 0.1994
Premier League 2,902 53.4% 0.2040
Bundesliga 2,301 51.3% 0.2058
Ligue 1 2,605 50.8% 0.2095

By season

Group Matches Accuracy RPS
Super League 1 2025/26 236 50.0% 0.1874
Super League 1 2024/25 235 52.8% 0.2115
Super League 1 2023/24 236 53.4% 0.1787
Super League 1 2022/23 240 52.1% 0.1801
Super League 1 2021/22 239 53.6% 0.2052
Super League 1 2020/21 242 49.2% 0.1972
Super League 1 2019/20 240 52.9% 0.1792
Super League 1 2018/19 60 70.0% 0.1626
Serie A 2025/26 378 51.3% 0.2070
Serie A 2024/25 379 52.2% 0.1924
Serie A 2023/24 380 53.4% 0.1885
Serie A 2022/23 379 52.2% 0.2006
Serie A 2021/22 378 51.3% 0.2049
Serie A 2020/21 378 54.8% 0.1899
Serie A 2019/20 377 53.1% 0.2072
Serie A 2018/19 272 50.4% 0.1943
Premier League 2025/26 379 47.5% 0.2085
Premier League 2024/25 379 52.0% 0.2053
Premier League 2023/24 379 58.0% 0.1927
Premier League 2022/23 379 54.9% 0.2012
Premier League 2021/22 379 55.4% 0.1976
Premier League 2020/21 379 50.1% 0.2241
Premier League 2019/20 377 53.1% 0.2036
Premier League 2018/19 251 58.2% 0.1959