OrcaScore
Upset index

Bundesliga upset index

Including the years before odds: the biggest upsets in history, the most chaotic seasons and the giant killers by our learning Elo model's pre-match probabilities. Index 100 = as many upsets as expected.

Matches with a clear favourite
13,040
Upsets
2,537
Upset rate
19.5%
Upset index
101

Filters

Model data: 2,473,332 matches with a clear favourite between 26 Apr 1970 and 6 Nov 2026 (learning Elo, pre-match state).

Biggest upsets

By the winner's pre-match chance (Elo model) — lowest first

  1. Bundesliga FC Bayern München1 FC Augsburg2 Winner's pre-match chance 5.0%
  2. Bundesliga 1. FC Kaiserslautern1 Arminia Bielefeld3 Winner's pre-match chance 6.0%
  3. Bundesliga FC Bayern München2 Fortuna Düsseldorf3 Winner's pre-match chance 6.2%
  4. Bundesliga 1. FC Köln3 Karlsruher SC4 Winner's pre-match chance 6.3%
  5. Bundesliga FC Bayern München2 VfL Bochum 18483 Winner's pre-match chance 6.4%
  6. Bundesliga Hamburger SV0 Eintracht Frankfurt2 Winner's pre-match chance 6.5%
  1. Borussia Dortmund 1–2 TSG Hoffenheim Bundesliga · 18 May 2013 6.7%
  2. SV Werder Bremen 0–2 1. FC Kaiserslautern Bundesliga · 11 Feb 2006 6.9%
  3. Borussia M'gladbach 1–2 Rot-Weiss Essen Bundesliga · 21 Feb 1976 7.0%
  4. FC Bayern München 0–1 FC Schalke 04 Bundesliga · 28 May 1983 7.2%
  5. SV Werder Bremen 2–3 Eintracht Frankfurt Bundesliga · 9 Mar 1984 7.2%
  6. FC Bayern München 1–3 Borussia Dortmund Bundesliga · 28 Nov 1987 7.3%
  7. FC Bayern München 0–1 FC St. Pauli Bundesliga · 2 Mar 1991 7.5%
  8. Borussia M'gladbach 1–2 Hannover 96 Bundesliga · 7 Nov 1987 7.9%
  9. Hamburger SV 2–3 SV Waldhof Mannheim Bundesliga · 31 Mar 1984 7.9%
  10. Hamburger SV 1–2 MSV Duisburg Bundesliga · 23 Feb 1980 7.9%
  11. FC Bayern München 0–1 Borussia Dortmund Bundesliga · 9 Nov 1985 8.0%
  12. FC Bayern München 0–1 SV Werder Bremen Bundesliga · 21 Jan 2024 8.0%
  13. FC Bayern München 0–1 FC Augsburg Bundesliga · 9 May 2015 8.1%
  14. 1. FC Kaiserslautern 1–2 KFC Uerdingen 05 Bundesliga · 29 May 1976 8.1%
  15. Borussia Dortmund 1–1 FC St. Pauli Bundesliga · 3 Mar 2002 8.2%
  16. 1. FC Köln 1–3 Fortuna Düsseldorf Bundesliga · 21 Oct 1989 8.5%
  17. FC Bayern München 1–2 1. FC Köln Bundesliga · 21 Feb 2009 9.0%
  18. Borussia M'gladbach 0–2 Arminia Bielefeld Bundesliga · 13 Feb 1971 9.0%
  19. Borussia Dortmund 1–4 Hamburger SV Bundesliga · 9 Feb 2013 9.0%
  20. Hamburger SV 2–3 Borussia M'gladbach Bundesliga · 31 Oct 2009 9.1%
  21. FC Schalke 04 0–1 1. FC Saarbrücken Bundesliga · 2 Apr 1977 9.1%
  22. Borussia M'gladbach 0–2 Fortuna Düsseldorf Bundesliga · 30 Nov 1984 9.1%
  23. FC Augsburg 1–0 FC Bayern München Bundesliga · 5 Apr 2014 9.2%
  24. Borussia M'gladbach 1–2 Fortuna Düsseldorf Bundesliga · 6 May 1972 9.3%
  25. FC Bayern München 1–2 1. FSV Mainz 05 Bundesliga · 2 Mar 2016 9.4%
  26. Bayer 04 Leverkusen 0–2 SV Werder Bremen Bundesliga · 8 Mar 2025 9.4%
  27. FC Schalke 04 1–2 Hannover 96 Bundesliga · 4 Jun 1976 9.5%
  28. 1. FC Köln 3–3 Hannover 96 Bundesliga · 10 Mar 1973 9.6%
  29. Hamburger SV 0–4 Karlsruher SC Bundesliga · 26 Aug 1987 9.6%
  30. FC Bayern München 1–2 SV Waldhof Mannheim Bundesliga · 6 Oct 1984 9.6%
  31. FC Bayern München 0–2 1. FC Köln Bundesliga · 28 Feb 1998 9.8%
  32. FC Bayern München 0–1 FC Hansa Rostock Bundesliga · 30 Sep 2000 9.8%
  33. FC Bayern München 1–4 VfB Stuttgart Bundesliga · 12 May 2018 9.9%
  34. Hamburger SV 0–1 VfL Bochum 1848 Bundesliga · 22 Nov 2009 10%

Bundesliga: by season

The most chaotic and most predictable seasons

Giant killers

Win more than expected as the underdog

Giant killers
Team Underdog wins Expected Index
Stuttgarter Kickers 12/35 7.3 151
1. FC Union Berlin 27/98 22.6 131
TSG Hoffenheim 58/229 54.3 122
Bayer 04 Leverkusen 91/371 86.4 121
1. FSV Mainz 05 73/297 69.7 120
Rostock 47/206 45.8 117
VfL Wolfsburg 88/364 86.7 116
Ulm 3/12 2.5 112
Hamburger SV 127/565 132.6 111
Alemannia Aachen 3/12 2.6 110

Upset victims

Lose more than expected as the favourite

Upset victims
Team Losses as favourite Expected Index
Holstein Kiel 5/6 1.7 154
Energie Cottbus 12/27 7.7 146
FC Augsburg 33/96 26.1 138
Stuttgarter Kickers 5/10 2.6 138
Arminia Bielefeld 47/149 38.7 136
SpVgg Greuther Fürth 3/5 1.5 128
1. FC Saarbrücken 10/30 7.9 127
Darmstadt 98 8/22 6.3 124
Hannover 96 57/200 52.6 123
SV 07 Elversberg 2/3 0.8 122
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.86 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.