Upset index
Bundesliga upset index
Matches won by the side the pre-match odds gave little chance, and which leagues and teams produce more upsets than expected. Index 100 = as many upsets as expected.
- Matches with a clear favourite
- 58
- Upsets
- 15
- Upset rate
- 25.9%
- Upset index
- 123
Filters
Odds data: 555,247 matches with a clear favourite between 31 Dec 2015 and 7 Nov 2026.
Biggest upsets
By the winner's pre-match chance (from odds) — lowest first
-
Bundesliga
VfB Stuttgart2
Borussia M'gladbach3
Winner's pre-match chance 13% · odds 7.50
-
Bundesliga
TSG Hoffenheim2
HSV3
Winner's pre-match chance 13% · odds 7.00
-
Bundesliga
SV 07 Elversberg3
Bayer 04 Leverkusen2
Winner's pre-match chance 18% · odds 5.25
-
Bundesliga
1. FSV Mainz 052
SV Werder Bremen3
Winner's pre-match chance 22% · odds 4.33
-
Bundesliga
HSV1
VfB Stuttgart0
Winner's pre-match chance 23% · odds 4.20
-
Bundesliga
1. FSV Mainz 051
Eintracht Frankfurt3
Winner's pre-match chance 23% · odds 4.10
-
Bayer 04 Leverkusen
2–4
VfB Stuttgart
-
SC Paderborn 07
3–1
TSG Hoffenheim
-
SV Werder Bremen
3–1
RB Leipzig
-
Eintracht Frankfurt
1–4
FC Augsburg
-
SV 07 Elversberg
4–1
1. FSV Mainz 05
-
Borussia M'gladbach
3–4
SV 07 Elversberg
-
TSG Hoffenheim
3–0
Bayer 04 Leverkusen
-
1. FC Köln
3–2
TSG Hoffenheim
-
1. FC Union Berlin
1–3
FC Schalke 04
Bundesliga: by season
The most chaotic and most predictable seasons
Giant killers
Win more than expected as the underdog
| Team | Underdog wins | Expected | Index |
|---|---|---|---|
| 3/6 | 1.2 | 130 | |
| 2/5 | 1.1 | 116 | |
| 2/6 | 1.1 | 116 | |
| 1/1 | 0.3 | 114 | |
| 1/3 | 0.6 | 108 | |
| 1/3 | 0.6 | 108 | |
| 1/3 | 0.7 | 107 | |
| 1/3 | 0.7 | 106 | |
| 1/5 | 1.1 | 99 | |
| 1/6 | 1.4 | 95 |
Upset victims
Lose more than expected as the favourite
| Team | Losses as favourite | Expected | Index |
|---|---|---|---|
| 3/5 | 1.1 | 131 | |
| 3/5 | 1.3 | 128 | |
| 2/4 | 0.7 | 123 | |
| 3/8 | 1.9 | 118 | |
| 1/1 | 0.3 | 113 | |
| 1/2 | 0.6 | 108 | |
| 1/3 | 0.7 | 107 | |
| 1/6 | 1.2 | 98 |
How is it calculated?
- Probability: From pre-match 1X2 (or two-way) odds, with the bookmaker margin removed proportionally: p = (1/odds) / Σ(1/odds). The same formula as the stats hub's “upsets by odds” block.
- Clear favourite and upset: Only matches with at least a 10-point gap between the home and away win probabilities count; if the favourite's opponent wins, it is an upset. Draws are not upsets. Winner's chance of 25% or less = big upset.
- Ranking: The lower the winner's pre-match chance, the bigger the upset (surprise score = 100 × (1 − chance)).
- Index: 100 × (actual upsets + 5) / (expected upsets + 5); expected = sum of the underdogs' win probabilities. The +5 pulls small samples towards 100. Teams have two directions: giant killing (winning as the underdog) and fragility (losing as the favourite).
- Calibration: Expected values are scaled by the source's overall hit factor (0.95 in this view), so a systematic bias of the source does not shift every league the same way.
- Historical (model): For past matches without odds, the probability comes from our learning Elo model replaying the full history chronologically and taking its state before the match (both teams need at least 15 matches; friendlies excluded). Never mixed with odds.