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?
The model's forecast for the upcoming fixtures — make your own picks before kickoff and see how you stack up.
Model probabilities are this site's own forecast. Picks lock at kickoff and are graded from the final result — no stakes, just bragging rights.
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.5% 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 favored Stuttgart much more strongly (69% vs 45%), likely weighing their superior xG (1.9 vs 1.42), while the market priced the outcome as more uncertain, possibly accounting for information a public-data model cannot see. Stuttgart's 2-1 win, built on two first-half goals (41', 45') before a late Mainz reply (79'), aligned more closely with the model's forecast.
The model strongly favored the away side (62% vs the market's 38%), likely underrating the hosts based on the data available to it, whereas the market priced a much tighter contest. St. Pauli's edge in xG (1.81 to 1.32) and the late equalizer at minute 86 delivered a draw that the market's more balanced pricing came closer to anticipating.
The model heavily favored Freiburg at 64%, while the market was far more balanced (41% home, 31% away), likely pricing in factors a public-data model cannot see. The result validated the market's caution, as Hoffenheim's superior xG (2.55 vs 1.32) matched their early goal to earn a draw.
The model favored Heidenheim on their superior recent xG edge (1.23 vs 0.75), while the market leaned toward Augsburg, likely pricing in information a public-data model cannot capture. The result validated the model, as Heidenheim's home win reflected their xG advantage, sealed by a late goal at the 90th minute.
The model favored Mainz far more strongly (58% vs the market's 36%), and the away side's superior xG (2.53 vs 1.16) backed that lean up in a 4-1 win that included early goals at minutes 14 and 26. The market may have priced in information a public-data model cannot see, but the result validated the model's read.
The model rated the match as an even contest (37% home vs 37% away), while the market strongly favored the visitors (59%), likely pricing in information a public-data model cannot capture. Gladbach's two early goals (14', 23') paved the way for a 4-0 win despite an underwhelming xG of 1.4, vindicating the model's more balanced view.
The model favored Heidenheim more strongly (62% vs the market's 41%), likely weighing their edge in recent xG, while the market priced the home side closer to even. The result validated the model, as Heidenheim won 2-0 with a slight xG advantage (1.63 vs 1.08), scoring early (3') and late (82').
The model saw a near-even xG battle (1.4 vs 1.59) and rated the away side as likely as the home side (both 38%), whereas the market strongly favored Mainz at 58%. The 2-1 home win, despite Heidenheim's marginally higher xG, aligned with the market's read, which may have priced in factors a public-data model could not capture.
"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.