Bundesliga · Surprises against the model
2025-26 ↺ — reconstructed walk-forward estimates: each one calculated only from earlier matches and frozen on match day at 00:00 UTC (the site did not exist then). All leagues → How good is the model? →
298 matches with an estimate out of 306 played (teams with fewer than 8 matches in the model's window have no estimate).
The biggest upsets 2025-26 ↺
The matches in which the result happened that the model gave the smallest chance before kick-off. Example: if the model gave the away win 5% and the away side won, the match is near the top of the list. A 5% chance happens, on average, once every 20 matches.
- ↺model: 1 87% · X 9% · 2 3.6% · the actual result had 3.6% (≈ 1 in 28.14)
- ↺FC Bayern München 3–3 1. FC Heidenheim 1846model: 1 91% · X 6.5% · 2 3% · the actual result had 6.5% (≈ 1 in 15.30)
- ↺model: 1 77% · X 14% · 2 8.4% · the actual result had 8.4% (≈ 1 in 11.85)
- ↺model: 1 72% · X 18% · 2 10.2% · the actual result had 10.2% (≈ 1 in 9.85)
- ↺model: 1 61% · X 26% · 2 12.7% · the actual result had 12.7% (≈ 1 in 7.87)
- ↺model: 1 13.1% · X 20% · 2 67% · the actual result had 13.1% (≈ 1 in 7.61)
- ↺model: 1 81% · X 13.2% · 2 6% · the actual result had 13.2% (≈ 1 in 7.57)
- ↺model: 1 63% · X 23% · 2 14.0% · the actual result had 14.0% (≈ 1 in 7.14)
- ↺model: 1 14.2% · X 23% · 2 63% · the actual result had 14.2% (≈ 1 in 7.05)
- ↺model: 1 6% · X 14.3% · 2 79% · the actual result had 14.3% (≈ 1 in 6.98)
- ↺model: 1 7% · X 15.1% · 2 78% · the actual result had 15.1% (≈ 1 in 6.61)
- ↺model: 1 73% · X 16.5% · 2 10% · the actual result had 16.5% (≈ 1 in 6.05)
- ↺FC St. Pauli 1910 2–1 VfB Stuttgartmodel: 1 17.3% · X 28% · 2 55% · the actual result had 17.3% (≈ 1 in 5.79)
- ↺TSG 1899 Hoffenheim 0–1 FC St. Pauli 1910model: 1 56% · X 26% · 2 17.7% · the actual result had 17.7% (≈ 1 in 5.65)
- ↺model: 1 17.9% · X 25% · 2 57% · the actual result had 17.9% (≈ 1 in 5.60)
- ↺model: 1 18.1% · X 26% · 2 56% · the actual result had 18.1% (≈ 1 in 5.53)
- ↺model: 1 71% · X 18.3% · 2 11% · the actual result had 18.3% (≈ 1 in 5.45)
- ↺model: 1 58% · X 23% · 2 18.4% · the actual result had 18.4% (≈ 1 in 5.43)
- ↺model: 1 56% · X 25% · 2 19.2% · the actual result had 19.2% (≈ 1 in 5.21)
- ↺model: 1 19.2% · X 26% · 2 55% · the actual result had 19.2% (≈ 1 in 5.20)
How often low-chance results happen n = 298
All the possible results (home win, draw, away win) the model gave a small chance to, grouped into bands. For each band: how often they happened, next to what the model estimated on average. A well-calibrated model has the two numbers close together.
| the model's chance | results | happened | actual | estimated on average |
|---|---|---|---|---|
| 0% – 10% | 31 | 3 | 9.7%95%: 3–25% | 7.1% |
| 10% – 20% | 119 | 18 | 15.1%95%: 10–23% | 15.7% |
| 20% – 30% | 330 | 77 | 23.3%95%: 19–28% | 25.1% |
Results under 20% that came: 21; expected on average 20.9 (if the model is right, between 13 and 29, 95%).
Teams and upsets 2025-26 ↺
For each team: the results under 20% that went its way (a win or a draw) and against it (a defeat), next to how many were expected on average. “Expected” = the sum of those results' chances in its matches.
| Team | matches | in favour: actual | expected | against: actual | expected |
|---|---|---|---|---|---|
| 1. FC Union Berlin | 33 | 5 | 1.8 | 0 | 0.0 |
| Hamburger SV | 26 | 4 | 1.5 | 0 | 0.0 |
| FC Augsburg | 34 | 3 | 1.8 | 0 | 0.0 |
| Bayer 04 Leverkusen | 34 | 3 | 1.9 | 4 | 3.2 |
| 1. FSV Mainz 05 | 33 | 2 | 1.2 | 1 | 0.1 |
| FC Bayern München | 33 | 4 | 3.8 | 1 | 2.3 |
| FC St. Pauli 1910 | 33 | 2 | 1.9 | 0 | 0.0 |
| TSG 1899 Hoffenheim | 34 | 1 | 1.0 | 1 | 0.2 |
| 1. FC Heidenheim 1846 | 33 | 2 | 2.3 | 0 | 0.0 |
| Borussia Mönchengladbach | 33 | 1 | 1.4 | 0 | 0.0 |
| RB Leipzig | 33 | 0 | 0.4 | 2 | 1.9 |
| VfB Stuttgart | 34 | 0 | 0.5 | 3 | 2.5 |
| Borussia Dortmund | 34 | 0 | 0.9 | 0 | 2.8 |
| 1. FC Köln | 34 | 1 | 1.9 | 0 | 0.0 |
| Eintracht Frankfurt | 34 | 0 | 1.0 | 2 | 1.0 |
| SV Werder Bremen | 34 | 0 | 1.2 | 0 | 0.0 |
| SC Freiburg | 34 | 0 | 1.5 | 0 | 0.0 |
| VfL Wolfsburg | 33 | 0 | 1.5 | 0 | 0.2 |
This season · estimates frozen in real time ❄
The matches of the current season played after the model's estimate was frozen, within the last hour before kick-off, in which a result under 20% came.
16 matches played with a frozen estimate ❄; in 3 of them a result under 20% came.
- ❄model: 1 8% · X 13.6% · 2 78% · the actual result had 13.6% (≈ 1 in 7.36)
- ❄model: 1 64% · X 20% · 2 17.0% · the actual result had 17.0% (≈ 1 in 5.90)
- ❄model: 1 71% · X 18.1% · 2 11% · the actual result had 18.1% (≈ 1 in 5.51)
How to read it
How to read the figures on this page and what they do not say.
- A match's upset = the chance the model gave, before kick-off, to the result that happened (home win, draw or away win). The smaller it is, the less the model expected the result.
- A result with a 20% chance happens, on average, once every 5 matches. Upsets are normal: the right question is whether they come as often as the model says — the “How often” table answers it.
- Estimates marked ↺ are reconstructed: calculated only from earlier matches, but the site did not publish them at the time. Those marked ❄ were frozen and published within the last hour before kick-off.
- The figures say what happened against the estimate, not why.
← Bundesliga: standings, results
Updated: 25 Oct 2026, 07:20 UTC