We use privacy-friendly analytics to understand traffic. With your consent we also load Google Analytics. No analytics cookies are set until you accept. See our privacy policy.
What the rolling-strength model forecast before each kickoff — win/draw/loss probability and expected score — graded against what actually happened. Out-of-sample (the model never saw the result). What do these mean?
Every call the model made this season, graded against the result — and, more importantly, whether its probabilities held up.
Accuracy is the wrong lens for a three-way outcome: draws are rarely any side's single most-likely result, so ~25% of games are "wrong" by design. What matters is whether a stated 60% really happens ~60% of the time — that's calibration, and it's the number that actually matters.
Over 380 matches, the model lands within 95.9% of the consensus forecast's accuracy. The consensus wins narrowly — as expected, since it aggregates all available information. Source: football-data.co.uk (closing: Pinnacle/Bet365). Analysis only.
The model gave Inter only a 43% chance while the market strongly favored them at 81%, suggesting the market priced in information beyond the recent xG trends the model weighs. Inter's early goal at minute 5 and dominant 2.53–0.26 xG edge produced the comfortable win the market had anticipated.
The model gave Napoli only 49% based on measures like recent xG, while the market priced them at a much stronger 82%, suggesting it factored in information the public-data model could not capture. The result validated the market, as Napoli won comfortably with a commanding 2.49–0.11 xG edge and goals in the 42nd and 51st minutes.
The model favored Genoa (41%) based on their edge in expected goals (2.72 vs 2.01), while the market strongly backed Inter (64%), likely pricing in information beyond public xG data. The 2-2 draw, with Genoa's equalizer at the 90th minute, validated the model's more balanced read over the market's heavy away lean.
The market was far more confident in an Inter win (70% vs the model's 42%), likely pricing in information a public-data model cannot see, while the model gave a more balanced spread. Inter's xG dominance (1.67 vs 0.25) supported that favoritism, but late goals at the 81st and 88th minutes produced a 1-1 draw the model rated as relatively more likely.
The model rated Parma as slight favourites (41% home) while the market strongly backed Milan (60% away), likely pricing in information a public-data model cannot fully capture. The result and near-even xG (1.71 vs 1.89) validated the model's more balanced view, as Parma won 2-1.
The model rated Lazio only a 41% favourite, while the market priced them much higher at 68%, likely reflecting information a public-data model cannot capture. Lazio's dominant 2.41-0.61 xG edge and early goals (minutes 3 and 11) in the 3-1 win validated the market's stronger read.
The model was more skeptical of Roma, giving the home side just 39% versus the market's 67%, likely reflecting differing weight on recent xG trends versus information the market priced in. The result vindicated the model, as Empoli's 2.19 xG backed a genuine away win despite Roma's higher 2.98 xG.
The model gave Milan only a 49% chance while the market was far more confident at 76%, likely pricing in information a public-data model cannot capture. The result vindicated the market, as Milan dominated with a 2.33-0.25 xG edge and scored four times by the 29th minute.
"closer" = the side that gave the actual result the higher probability. Pick badges: H/D/A = home / draw / away. One-line reads are AI-written strictly from each match's data (xG, red cards, goals, score) — no outside news.