Model performance
Every number here is out-of-sample: for each season the models were trained only on earlier seasons, and settings were chosen on 2016-17 to 2020-21 before the test seasons were scored. Lower log loss, Brier score and ranked probability score (RPS) mean better probabilities; they matter more than accuracy.
Test seasons 2021-22 – 2025-26 (1900 matches)
| Model | Log loss ↓ | Brier ↓ | RPS ↓ | Accuracy ↑ |
|---|---|---|---|---|
| Always home win (base-rate probabilities) | 1.0686 | 0.6465 | 0.2323 | 44.2% |
| Elo (logistic on rating gap) | 0.9843 | 0.5863 | 0.2029 | 52.6% |
| Dixon-Coles goals model | 0.9748 | 0.5796 | 0.1999 | 54.0% |
| Multinomial logistic regression | 0.9728 | 0.5785 | 0.1991 | 53.4% |
| Gradient boosting (HistGradientBoosting) | 0.9885 | 0.5881 | 0.2026 | 52.5% |
| Ensemble (final model) | 0.9783 | 0.5820 | 0.2006 | 53.0% |
| Bookmaker average, pre-match (margin removed) | 0.9594 | 0.5699 | 0.1949 | 55.3% |
| Bookmaker average, closing (margin removed) | 0.9556 | 0.5670 | 0.1936 | 56.0% |
The honest headline: the bookmakers' pre-match average is better than this model on every metric, which is normal for public-data models. The final ensemble (dc 50%, gbm 50%) was chosen because it was best on the validation seasons. On the test seasons Dixon-Coles goals model and Multinomial logistic regression did slightly better; we report that rather than switch models after seeing the test results. Bold marks the best non-bookmaker value in each column.
Calibration on test seasons
Every home, draw and away probability is grouped into 10% bins. A well-calibrated forecaster sits on the dashed line: events given 40% happen about 40% of the time. Bins with fewer than 20 forecasts are hidden.
Show as table
| Bin | n | Model predicted | Happened |
|---|---|---|---|
| 0–10% | 162 | 7.6% | 7.4% |
| 10–20% | 926 | 15.5% | 15.3% |
| 20–30% | 2149 | 25.5% | 25.8% |
| 30–40% | 849 | 34.7% | 35.1% |
| 40–50% | 684 | 44.9% | 44.1% |
| 50–60% | 387 | 54.8% | 53.2% |
| 60–70% | 282 | 64.8% | 63.8% |
| 70–80% | 198 | 74.1% | 75.8% |
| 80–90% | 62 | 83.9% | 87.1% |
| 90–100% | 1 | 90.1% | 100.0% |
Validation seasons 2016-17 – 2020-21
| Model | Log loss ↓ | Brier ↓ | RPS ↓ | Accuracy ↑ |
|---|---|---|---|---|
| Always home win (base-rate probabilities) | 1.0640 | 0.6433 | 0.2339 | 45.1% |
| Elo (logistic on rating gap) | 0.9635 | 0.5693 | 0.1980 | 55.7% |
| Dixon-Coles goals model | 0.9547 | 0.5647 | 0.1960 | 55.4% |
| Multinomial logistic regression | 0.9570 | 0.5653 | 0.1960 | 55.3% |
| Gradient boosting (HistGradientBoosting) | 0.9545 | 0.5644 | 0.1963 | 54.6% |
| Ensemble (final model) | 0.9505 | 0.5619 | 0.1952 | 55.4% |
| Bookmaker average, pre-match (margin removed) | 0.9447 | 0.5574 | 0.1930 | 56.0% |
| Bookmaker average, closing (margin removed) | 0.9846 | 0.5834 | 0.2047 | 52.5% |
Used to choose every setting, so these numbers are slightly optimistic.
Log loss by season
| Season | Matches | Always home | Elo | Dixon-Coles | Boosting | Ensemble | Bookmakers |
|---|---|---|---|---|---|---|---|
| 2016-17validation | 380 | 1.045 | 0.923 | 0.936 | 0.923 | 0.926 | 0.909 |
| 2017-18validation | 380 | 1.066 | 0.959 | 0.958 | 0.949 | 0.949 | 0.944 |
| 2018-19validation | 380 | 1.048 | 0.910 | 0.896 | 0.889 | 0.889 | 0.894 |
| 2019-20validation | 380 | 1.065 | 0.984 | 0.973 | 0.981 | 0.973 | 0.973 |
| 2020-21validation | 380 | 1.096 | 1.042 | 1.011 | 1.031 | 1.016 | 1.004 |
| 2021-22test | 380 | 1.073 | 0.958 | 0.955 | 0.980 | 0.963 | 0.936 |
| 2022-23test | 380 | 1.049 | 0.987 | 0.993 | 1.002 | 0.994 | 0.966 |
| 2023-24test | 380 | 1.056 | 0.928 | 0.924 | 0.930 | 0.925 | 0.909 |
| 2024-25test | 380 | 1.084 | 1.006 | 0.978 | 0.997 | 0.984 | 0.971 |
| 2025-26test | 380 | 1.082 | 1.042 | 1.024 | 1.034 | 1.026 | 1.015 |
| 2026-27in progress | 80 | 1.100 | 1.020 | 1.026 | 1.025 | 1.023 | 1.020 |
How the model works
Elo ratings run over the Premier League and Championship together since 2004-05, so a promoted club arrives with the rating it earned in the Championship. Dixon-Coles fits attack and defence strengths from the last three seasons, weighting recent matches more and blending goals with shots on target (a free stand-in for xG), and gives the full scoreline distribution.
A gradient-boosted classifier combines those ratings with recent form, home/away form, shot difference, league position, rest days including cup and European games, and promotion status. The final forecast averages Dixon-Coles and the boosted model. Bookmaker odds are never used as an input, so the comparison with the market is fair. Model v20261029-e9c638, trained Oct 29, 2026 on 7,300 matches.