The model makes VfL Wolfsburg the title favourite, first in 51.9% of 1,000,000 simulated seasons, ahead of Hannover 96 on 16.9% and 1. FC Heidenheim on 11.9%. On expected points that is VfL Wolfsburg 65.6, Hannover 96 58.7, 1. FC Heidenheim 56.7. Three clubs finish in the top four more often than not: VfL Wolfsburg 88.9%, Hannover 96 64.7%, 1. FC Heidenheim 55.2%.
At the other end, Energie Cottbus carries the highest relegation risk at 57.1%, then SpVgg Greuther Fürth on 53.4% and VfL Osnabrück on 52.3%. The bottom club averages 34.3 points to VfL Wolfsburg's 65.6.
This simulation gives you a spread of outcomes, not a single, clear answer. It's useful for understanding the range of possibilities for each club, showing you just how wide their potential end-of-season positions could be. But remember, it's based on pre-season data, frozen in time. It doesn't account for the chaos of an actual season: injuries, fixture piles, form swings, and all the rest. It's a starting point, a way to frame your thinking, not a crystal ball. Use it to inform your selections, but always keep an eye on the real-world noise that the model can't see.
Every club, every finishing position
| Club | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | xPts |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| VfL Wolfsburg | 51.95 | 20.24 | 10.52 | 6.15 | 3.86 | 2.48 | 1.69 | 1.11 | 0.75 | 0.50 | 0.33 | 0.20 | 0.11 | 0.06 | 0.04 | 0.02 | 0.01 | 65.6 | |
| Hannover 96 | 16.92 | 20.64 | 15.61 | 11.54 | 8.75 | 6.74 | 5.24 | 4.05 | 3.11 | 2.34 | 1.75 | 1.25 | 0.86 | 0.56 | 0.34 | 0.18 | 0.09 | 0.03 | 58.7 |
| 1. FC Heidenheim | 11.90 | 16.57 | 14.77 | 12.00 | 9.69 | 7.90 | 6.36 | 5.15 | 4.16 | 3.29 | 2.59 | 1.94 | 1.43 | 0.99 | 0.64 | 0.36 | 0.18 | 0.07 | 56.7 |
| Hertha BSC | 3.67 | 7.31 | 9.12 | 9.74 | 9.74 | 9.25 | 8.67 | 7.94 | 7.16 | 6.31 | 5.44 | 4.59 | 3.70 | 2.85 | 2.04 | 1.36 | 0.78 | 0.34 | 51.5 |
| FC St. Pauli | 2.81 | 6.03 | 8.07 | 9.13 | 9.45 | 9.35 | 9.00 | 8.40 | 7.64 | 6.84 | 5.98 | 5.07 | 4.10 | 3.19 | 2.26 | 1.48 | 0.84 | 0.35 | 50.8 |
| Holstein Kiel | 3.23 | 6.43 | 8.17 | 8.90 | 9.03 | 8.86 | 8.50 | 7.98 | 7.37 | 6.74 | 5.93 | 5.11 | 4.30 | 3.42 | 2.59 | 1.80 | 1.11 | 0.51 | 50.6 |
| Arminia Bielefeld | 2.04 | 4.51 | 6.20 | 7.30 | 7.92 | 8.28 | 8.31 | 8.22 | 7.99 | 7.58 | 6.97 | 6.27 | 5.42 | 4.48 | 3.52 | 2.53 | 1.65 | 0.81 | 48.9 |
| Dynamo Dresden | 2.17 | 4.72 | 6.34 | 7.34 | 7.79 | 8.12 | 8.12 | 8.00 | 7.79 | 7.36 | 6.83 | 6.28 | 5.44 | 4.60 | 3.67 | 2.71 | 1.78 | 0.93 | 48.9 |
| SV Darmstadt 98 | 1.68 | 3.91 | 5.64 | 6.80 | 7.59 | 8.00 | 8.24 | 8.26 | 8.18 | 7.78 | 7.29 | 6.67 | 5.86 | 4.83 | 3.82 | 2.78 | 1.79 | 0.88 | 48.4 |
| 1. FC Kaiserslautern | 1.24 | 3.09 | 4.58 | 5.78 | 6.62 | 7.29 | 7.77 | 8.07 | 8.13 | 8.13 | 7.85 | 7.31 | 6.63 | 5.72 | 4.68 | 3.53 | 2.36 | 1.23 | 47.2 |
| 1. FC Nürnberg | 0.93 | 2.39 | 3.70 | 4.82 | 5.70 | 6.44 | 7.01 | 7.50 | 7.84 | 8.02 | 8.07 | 7.90 | 7.41 | 6.72 | 5.76 | 4.58 | 3.31 | 1.91 | 46.0 |
| VfL Bochum | 0.78 | 2.04 | 3.29 | 4.36 | 5.29 | 6.08 | 6.73 | 7.32 | 7.77 | 8.06 | 8.25 | 8.13 | 7.77 | 7.13 | 6.18 | 5.03 | 3.65 | 2.16 | 45.4 |
| Karlsruher SC | 0.39 | 1.11 | 1.90 | 2.70 | 3.49 | 4.23 | 5.00 | 5.75 | 6.51 | 7.25 | 7.93 | 8.48 | 8.90 | 8.94 | 8.59 | 7.71 | 6.48 | 4.64 | 42.7 |
| 1. FC Magdeburg | 0.19 | 0.62 | 1.14 | 1.74 | 2.37 | 3.02 | 3.74 | 4.55 | 5.36 | 6.31 | 7.25 | 8.20 | 9.12 | 9.85 | 10.19 | 9.98 | 9.06 | 7.32 | 40.6 |
| Eintracht Braunschweig | 0.05 | 0.17 | 0.40 | 0.69 | 1.07 | 1.53 | 2.10 | 2.81 | 3.61 | 4.57 | 5.75 | 7.15 | 8.73 | 10.42 | 12.08 | 13.26 | 13.49 | 12.12 | 37.6 |
| VfL Osnabrück | 0.02 | 0.08 | 0.18 | 0.34 | 0.56 | 0.86 | 1.22 | 1.70 | 2.33 | 3.12 | 4.14 | 5.39 | 7.08 | 9.16 | 11.53 | 14.47 | 17.52 | 20.32 | 35.1 |
| SpVgg Greuther Fürth | 0.02 | 0.08 | 0.21 | 0.36 | 0.59 | 0.88 | 1.25 | 1.73 | 2.32 | 3.07 | 4.04 | 5.29 | 6.80 | 8.77 | 11.15 | 14.05 | 17.58 | 21.81 | 35.0 |
| Energie Cottbus | 0.02 | 0.06 | 0.16 | 0.30 | 0.50 | 0.71 | 1.04 | 1.46 | 2.00 | 2.73 | 3.60 | 4.76 | 6.34 | 8.32 | 10.94 | 14.16 | 18.33 | 24.58 | 34.3 |
Each cell is the percentage of 1,000,000 simulated seasons in which that club finished in that position, so every row adds up to 100%. A blank cell is under 0.005%, not impossible. The xPts column is the club's average points total across those seasons. Club names link to that club's full model profile.
View the same grid as a shaded heatmap, which is easier to scan than the table above.
How it's built
Every one of the 306 fixtures is played out from each club's attacking and defending strength, a blend of shots-adjusted Elo and last season's goal rates, then adjusted for this summer's transfers on both sides of the ball: a departed 16-goal scorer weakens a club's attack, while an incoming ball-winner (tackles won, interceptions, blocks) strengthens its defence. Scorelines are drawn from the same negative-binomial and Dixon-Coles model the live BetSignals signals use. Strengths are frozen at pre-season, so this is a start-of-season expectation, not a mid-season read.
_Generated from the BetSignals season simulation, 1,000,000 runs._