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 306 matches, the model lands within 96.2% 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 home and away roughly even chances (38% vs 34%), while the market heavily favored the away side at 80%, likely pricing in information a public-data model cannot capture. The 1-6 result, backed by an away xG of 3.32 versus 0.31 and goals spread from the 1st to 90th minute, showed the market was far closer.
The model, weighing the relatively even xG (1.62 vs 1.11), rated Bayern only a 41% favourite, whereas the market priced them at 81%, likely reflecting information a public-data model cannot capture. The 2-0 result, with goals at the 38th and 78th minutes, sided with the market's stronger read.
The model saw a near-even contest and gave the away side only 38%, while the market strongly favored Bayern at 74%, pricing in information a public-data model likely could not capture. The result validated the market, as Bayern's 5-0 win with a 3.03-0 xG edge reflected total dominance.
The model favored Wolfsburg at 44% based on their edge in the data available to it, while the market strongly backed Bayern at 64%, likely pricing in information the public-data model could not capture. Bayern's higher xG (2.46 vs 1.93) and 3-2 win in a five-goal game validated the market's lean.
The model gave Leipzig only a 44% chance, likely reflecting the narrow xG edge (1.36 vs 1.03), while the market was far more confident at 79%, pricing in information a public-data model may not capture. Leipzig's 59th-minute goal secured the 1-0 win, aligning more closely with the market's strong favouritism.
The model rated the match near a coin-flip between the sides (home 38% vs away 35%), likely weighing Dortmund's modest recent xG edge, while the market strongly favored the hosts at 72%. The result and Dortmund's 2.74-1.85 xG advantage, capped by four goals, vindicated the market's confidence.
The model favored St. Pauli (47%) while the market strongly backed Leipzig (58%), a wide gap likely reflecting information a public-data model cannot capture. The result validated the market, as Leipzig scored twice by the 35th minute and dominated on xG (1.58 vs 0.57) for a comfortable 2-0 win.
The model favored Heidenheim heavily (62%) based on their superior underlying performance, and indeed they dominated the xG battle 1.85 to 0.68. The market priced the game as near even, information the public-data model couldn't reflect, and the 0-0 draw showed that xG superiority didn't translate into goals.
"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.