Bundesliga 2025-2026 Performance vs Market
Expected points (xPTS) come from pre-match market odds: what the market rated each team's chances at before kickoff. A positive Δ means the team is outperforming those expectations — playing better than the market rated them; a negative Δ means they're delivering less than their billing. Big gaps usually say more about the team than about fortune.
| # | Team | P | Pts | xPts | vs xPTS | |||||
|---|---|---|---|---|---|---|---|---|---|---|
1 | Dortmund | 34 | 73 | 60.9 | +12.1Outperforming ++ | 2 | +7.0 | +5.1 | 0:2 vs Stuttgart (+1.7) | 1:0 vs B. Monchengladbach (-1.7) |
2 | Hoffenheim | 34 | 61 | 52.5 | +8.5Outperforming ++ | 6 | +3.0 | +5.5 | 1:2 vs Bayer Leverkusen (+2.1) | 0:1 vs St. Pauli (-2.1) |
3 | Bayern Munich | 34 | 89 | 80.7 | +8.3Outperforming ++ | 1 | +0.9 | +7.4 | 3:4 vs Mainz (+1.2) | 1:2 vs Augsburg (-2.6) |
4 | RB Leipzig | 34 | 65 | 56.9 | +8.1Outperforming ++ | 3 | +5.6 | +2.5 | 0:1 vs Mainz (+1.7) | 1:2 vs Mainz (-2.1) |
5 | Stuttgart | 34 | 62 | 55.9 | +6.1Outperforming ++ | 5 | +7.7 | -1.5 | 1:4 vs Bayer Leverkusen (+1.8) | 2:1 vs St. Pauli (-1.9) |
6 | Augsburg | 34 | 43 | 38.5 | +4.5Outperforming | 14 | +3.8 | +0.7 | 1:2 vs Bayern Munich (+2.7) | 2:1 vs Heidenheim (-1.5) |
7 | Bayer Leverkusen | 34 | 59 | 56.1 | +2.9Outperforming | 4 | -0.3 | +3.3 | 0:1 vs Dortmund (+1.9) | 1:2 vs Augsburg (-2.2) |
8 | Freiburg | 34 | 47 | 45.6 | +1.4On expectation | 8 | +5.7 | -4.4 | 0:1 vs Mainz (+1.9) | 2:1 vs Heidenheim (-1.9) |
9 | Hamburger SV | 34 | 38 | 37.5 | +0.5On expectation | 15 | +2.3 | -1.8 | 1:2 vs Eintracht Frankfurt (+2.1) | 0:1 vs Wolfsburg (-1.6) |
10 | Paderborn | 1 | 1 | 1.9 | -0.9On expectation | 18 | 0.0 | +0.2 | 0:0 vs Wolfsburg (+0.2) | 0:0 vs Wolfsburg (0.2) |
11 | Union Berlin | 34 | 39 | 40.4 | -1.4On expectation | 11 | -1.6 | +0.2 | 3:4 vs Eintracht Frankfurt (+2.2) | 1:2 vs Heidenheim (-2.0) |
12 | Eintracht Frankfurt | 34 | 44 | 46.7 | -2.7Underperforming | 7 | -1.3 | -1.5 | 1:2 vs Wolfsburg (+1.7) | 3:4 vs Union Berlin (-2.0) |
13 | Mainz | 34 | 40 | 43.3 | -3.3Underperforming | 10 | -8.7 | +5.5 | 1:2 vs RB Leipzig (+2.3) | 1:3 vs Union Berlin (-1.9) |
14 | Heidenheim | 34 | 26 | 31.3 | -5.3Underperforming −− | 17 | -1.2 | -4.1 | 1:2 vs Union Berlin (+2.3) | 0:2 vs Mainz (-1.7) |
15 | Werder Bremen | 34 | 32 | 40.2 | -8.2Underperforming −− | 13 | -4.6 | -3.6 | 0:4 vs B. Monchengladbach (+1.9) | 1:3 vs Augsburg (-1.7) |
16 | FC Koln | 34 | 32 | 40.3 | -8.3Underperforming −− | 12 | -3.8 | -4.5 | 0:1 vs Mainz (+2.0) | 1:3 vs Heidenheim (-1.6) |
17 | St. Pauli | 34 | 26 | 36.3 | -10.3Underperforming −− | 16 | -4.4 | -5.9 | 0:1 vs Hoffenheim (+2.3) | 0:4 vs B. Monchengladbach (-1.5) |
18 | Wolfsburg | 35 | 30 | 44.4 | -14.4Underperforming −− | 9 | -15.1 | +2.3 | 1:3 vs B. Monchengladbach (+1.9) | 2:3 vs Augsburg (-1.6) |
