Model Performance
A probability model is judged by calibration over samples, not by single-match hits. Every engine change must move these numbers on out-of-sample matches — or it gets cut.
2026-27 Season · Cumulative (pregame predictions, no hindsight)
Matches scored
99
Model log loss
0.9731
League-prior baseline
1.0749
Edge vs baseline
+0.1017
Brier score
0.5766
Modal picks correct
52/99
Lower log loss = better. Baseline = constant league base rates (home 46%, draw 24%, away 30%). Sample is still tiny (99 matches): treat every number here as noise until at least a half-season has accumulated.
Over 2.5 Calibration
Matches scored
99
Actual Over 2.5 rate
56.6%
Model avg Over 2.5
57.9%
Over 2.5 Brier
0.2243
Over 2.5 log loss
0.6389
Hits (3+ goals)
56/99
Pregame Over 2.5 probability (same number as on each match analysis page) vs whether the final score actually had 3+ goals.
| Model said | n | Model avg | Actual Over rate | Δ |
|---|---|---|---|---|
| 20–30% | 1 | 29.2% | 0.0% (0/1) | -29.2 pp |
| 30–40% | 5 | 35.1% | 40.0% (2/5) | +4.9 pp |
| 40–50% | 10 | 45.8% | 40.0% (4/10) | -5.8 pp |
| 50–60% | 42 | 55.1% | 47.6% (20/42) | -7.5 pp |
| 60–70% | 31 | 64.1% | 71.0% (22/31) | +6.8 pp |
| 70–80% | 8 | 75.0% | 75.0% (6/8) | +0.0 pp |
| 80–90% | 2 | 84.1% | 100.0% (2/2) | +15.9 pp |
Well-calibrated bands sit near Δ ≈ 0 (actual rate ≈ model average). Positive Δ = model under-called Over; negative = over-called.
Per Gameweek
| GW | Matches | Model log loss | Baseline | Δ | Picks |
|---|---|---|---|---|---|
| GW 1 | 10 | 0.9003 | 0.9921 | +0.0919 | 7/10 |
| GW 2 | 10 | 1.0675 | 1.2301 | +0.1625 | 4/10 |
| GW 3 | 10 | 0.8733 | 0.8620 | -0.0113 | 6/10 |
| GW 4 | 10 | 1.0775 | 1.0999 | +0.0224 | 4/10 |
| GW 5 | 10 | 1.0400 | 1.1427 | +0.1026 | 3/10 |
| GW 6 | 10 | 0.7955 | 1.0126 | +0.2171 | 7/10 |
| GW 7 | 10 | 1.0175 | 1.0999 | +0.0824 | 4/10 |
| GW 8 | 9 | 0.9466 | 1.1132 | +0.1666 | 5/9 |
| GW 9 | 10 | 0.9690 | 1.1650 | +0.1960 | 6/10 |
| GW 10 | 10 | 1.0411 | 1.0349 | -0.0063 | 6/10 |