2026-27 2. Bundesliga Season
0 games
Promoted
—
No promotions.
Relegated
No relegation
Biggest Overachiever
1. FC Heidenheim
0.00 points above expected
0 points · 0.00 expected points
Biggest Disappointment
1. FC Heidenheim
0.00 points below expected
0 points · 0.00 expected points
League Table
The final standings for the season. vsSim shows actual points minus the simulation's mean — positive means the team overachieved against the model, negative means they underperformed.
| # | Team | GP | W | D | L | Pts | GF | GA | GD | SimPts | vsSim |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1. FC Heidenheim | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 2 | 1. FC Kaiserslautern | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 3 | 1. FC Magdeburg | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 4 | 1. FC Nurnberg | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 5 | Arminia Bielefeld | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 6 | Dynamo Dresden | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 7 | Eintracht Braunschweig | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 8 | Energie Cottbus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 9 | Greuther Furth | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 10 | Hannover 96 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 11 | Hertha BSC | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 12 | Holstein Kiel | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 13 | Karlsruher SC | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 14 | SV Darmstadt 98 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 15 | St. Pauli | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 16 | VfL Bochum | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 17 | VfL Osnabruck | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
| 18 | VfL Wolfsburg | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | +0.00 |
Form
Each team's 5-game rolling points-per-game across the season. Hot streaks push above the dashed 1.5 PPG reference line; cold spells drop below. Each team gets a distinct color; the legend below the plot lets you read off which line is which. (First 4 games of each team have no rolling window, so the lines start at game 5.)
League Race
Cumulative points across the season for each team. Highlighted teams are drawn in color (top finishers for the Title Race, bottom finishers for the Relegation Race); the rest of the league appears in light gray as context. Switch views with the buttons below.
Season Summary
Every team's regular-season finish compared against 100,000 simulations. Click any column header to sort. Luck is the team's actual points minus the sim's mean — positive means the team beat the model. Percentile is where the actual result fell in the team's sim distribution (e.g. 90% = the team did this well or better in only 10% of sims).
| Team | Elo | Points | Avg | Luck | Percentile | Min | 5th | Q1 | Median | Q3 | 95th | Max |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| VfL Wolfsburg | 1833 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Hannover 96 | 1825 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1. FC Heidenheim | 1788 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| St. Pauli | 1774 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| VfL Bochum | 1757 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| SV Darmstadt 98 | 1755 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Holstein Kiel | 1748 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Hertha BSC | 1745 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1. FC Nurnberg | 1744 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1. FC Kaiserslautern | 1734 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1. FC Magdeburg | 1725 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Dynamo Dresden | 1723 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Arminia Bielefeld | 1719 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Karlsruher SC | 1700 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| VfL Osnabruck | 1668 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Greuther Furth | 1659 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Eintracht Braunschweig | 1647 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Energie Cottbus | 1628 | 0 | 0.00 | +0.00 | 100.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Head-to-Head
Each cell shows a team's record in that matchup (row vs column, formatted W-D-L) with the model's expected points on the line below. Navy-tinted cells mean the team beat the model's expectations by more than one point in that matchup; gold-tinted cells mean they fell short by the same margin.
| Team |
|---|
Points vs. Goals Scored, Allowed, and Differential
Points plotted against goals scored, allowed, and differential. Use the buttons to switch views; hover a team for exact values. The table gives each fit's R² and slope (the change in points per 10 goals).
Fit Metrics
| R² | Slope | |
|---|---|---|
| Scored | — | — |
| Allowed | — | — |
| Differential | — | — |
Home-Field Advantage Edge
The simulation applies the same home-field boost to every game across the league, so the per-game home win probabilities bake in the model's idea of HFA. For each team, we sum expected points at home and compare to actual home points, and the same on the road. The bar shows (home points above expected) minus (away points above expected). A tall positive bar means the team's home/road split exceeded what the model predicted — a real fortress effect. A tall negative bar means the reverse: they played worse at home or better on the road than expected.
Top Overachievers & Disappointments
Teams that most beat — or most fell short of — their simulated point projections. A positive vsSim means the team accumulated more points than the model expected on average; a negative one means fewer.
Biggest Overachievers
| # | Team | Actual | Sim | vsSim |
|---|---|---|---|---|
| 1 | 1. FC Heidenheim | 0 | 0.00 | +0.00 |
| 2 | 1. FC Kaiserslautern | 0 | 0.00 | +0.00 |
| 3 | VfL Osnabruck | 0 | 0.00 | +0.00 |
| 4 | VfL Bochum | 0 | 0.00 | +0.00 |
| 5 | St. Pauli | 0 | 0.00 | +0.00 |
Biggest Disappointments
| # | Team | Actual | Sim | vsSim |
|---|---|---|---|---|
| 1 | 1. FC Heidenheim | 0 | 0.00 | +0.00 |
| 2 | VfL Bochum | 0 | 0.00 | +0.00 |
| 3 | St. Pauli | 0 | 0.00 | +0.00 |
| 4 | SV Darmstadt 98 | 0 | 0.00 | +0.00 |
| 5 | Karlsruher SC | 0 | 0.00 | +0.00 |
Finish Position Heatmap
Each cell is the probability — across 100,000 simulations — that the team (row) finished at that position (column). Rows are sorted by actual finish (champion at top, bottom of the table at the bottom).
| Team | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. FC Heidenheim | 5.28% | 5.54% | 5.74% | 5.61% | 6.12% | 5.73% | 5.38% | 5.56% | 5.33% | 5.54% | 5.56% | 5.51% | 5.25% | 5.60% | 5.83% | 5.40% | 5.36% | 5.66% |
| 1. FC Kaiserslautern | 5.59% | 5.75% | 4.75% | 5.63% | 5.30% | 5.68% | 5.63% | 5.47% | 5.32% | 5.41% | 5.48% | 6.01% | 5.99% | 5.33% | 5.61% | 5.80% | 5.67% | 5.58% |
| 1. FC Magdeburg | 5.59% | 5.14% | 5.96% | 5.57% | 5.75% | 5.35% | 5.11% | 5.36% | 5.64% | 5.64% | 5.47% | 5.62% | 5.70% | 5.63% | 5.78% | 5.86% | 5.63% | 5.20% |
| 1. FC Nurnberg | 5.39% | 5.58% | 5.70% | 5.55% | 5.33% | 5.36% | 5.74% | 5.86% | 5.36% | 5.73% | 5.73% | 5.33% | 5.39% | 5.52% | 5.87% | 5.69% | 5.54% | 5.33% |
| Arminia Bielefeld | 5.26% | 5.83% | 5.46% | 5.49% | 6.09% | 5.29% | 5.70% | 5.86% | 5.50% | 5.50% | 5.64% | 5.12% | 5.74% | 5.60% | 5.21% | 5.57% | 5.54% | 5.60% |
| Dynamo Dresden | 5.74% | 5.20% | 5.67% | 5.75% | 5.53% | 5.87% | 5.43% | 5.82% | 5.84% | 5.25% | 5.22% | 5.42% | 5.18% | 5.66% | 5.62% | 5.24% | 5.59% | 5.97% |
| Eintracht Braunschweig | 6.19% | 5.36% | 5.09% | 5.95% | 5.63% | 5.55% | 5.95% | 5.57% | 5.47% | 5.41% | 5.83% | 5.37% | 5.61% | 5.80% | 5.00% | 5.43% | 5.38% | 5.41% |
| Energie Cottbus | 5.34% | 5.58% | 5.41% | 5.52% | 5.75% | 5.34% | 5.67% | 5.79% | 5.84% | 5.71% | 5.60% | 5.53% | 5.43% | 5.67% | 5.34% | 5.78% | 5.22% | 5.48% |
| Greuther Furth | 5.89% | 5.50% | 5.37% | 5.95% | 5.44% | 5.63% | 5.18% | 5.28% | 5.77% | 5.52% | 5.86% | 5.85% | 5.45% | 5.58% | 5.58% | 5.62% | 5.39% | 5.14% |
| Hannover 96 | 5.11% | 5.77% | 5.19% | 4.98% | 5.41% | 5.65% | 5.92% | 5.88% | 5.74% | 5.43% | 5.46% | 5.30% | 5.45% | 5.76% | 5.91% | 5.71% | 5.57% | 5.76% |
| Hertha BSC | 5.41% | 5.62% | 5.68% | 5.52% | 5.47% | 5.38% | 5.59% | 5.19% | 5.43% | 5.66% | 5.67% | 5.62% | 5.84% | 5.47% | 5.21% | 5.94% | 5.39% | 5.91% |
| Holstein Kiel | 5.63% | 5.73% | 5.88% | 5.67% | 5.75% | 5.44% | 5.34% | 5.24% | 5.48% | 5.29% | 5.27% | 5.51% | 5.60% | 5.44% | 5.67% | 5.63% | 5.76% | 5.67% |
| Karlsruher SC | 5.30% | 5.37% | 5.61% | 5.36% | 5.39% | 5.82% | 5.43% | 5.47% | 5.76% | 5.75% | 5.63% | 5.55% | 5.45% | 5.88% | 5.92% | 5.44% | 5.34% | 5.53% |
| SV Darmstadt 98 | 5.33% | 5.71% | 5.45% | 5.68% | 5.49% | 5.77% | 5.89% | 5.54% | 5.45% | 5.51% | 5.58% | 5.14% | 5.57% | 5.35% | 5.47% | 5.25% | 6.29% | 5.53% |
| St. Pauli | 5.54% | 5.48% | 5.80% | 5.43% | 5.51% | 5.27% | 5.31% | 5.50% | 5.66% | 5.66% | 5.61% | 5.82% | 6.02% | 5.53% | 5.54% | 5.37% | 5.37% | 5.58% |
| VfL Bochum | 6.08% | 5.50% | 5.89% | 5.37% | 5.45% | 5.78% | 5.65% | 5.51% | 5.76% | 5.57% | 5.28% | 6.19% | 5.44% | 5.61% | 5.29% | 4.97% | 5.42% | 5.24% |
| VfL Osnabruck | 5.61% | 5.65% | 6.01% | 5.21% | 5.36% | 5.83% | 5.61% | 5.19% | 5.37% | 5.75% | 5.53% | 5.53% | 5.66% | 5.13% | 5.45% | 5.44% | 5.74% | 5.93% |
| VfL Wolfsburg | 5.72% | 5.69% | 5.34% | 5.76% | 5.23% | 5.26% | 5.47% | 5.91% | 5.28% | 5.67% | 5.58% | 5.58% | 5.23% | 5.44% | 5.70% | 5.86% | 5.80% | 5.48% |
Points Required Per Position
The empirical CDF of simulated point totals per finishing position. Each curve shows, for one position (1st, 2nd, ..., last), the spread of point totals teams accumulated across simulations. Reading the curve at the 50% mark gives the median points typically needed to finish at that position. Steep curves mean the position is tightly clustered around a particular point range; shallow curves mean the position came with a wide variety of point totals.
Points Totals in Context
How did each team's actual results compare to their simulated points, Elo rating, average opponent Elo, and percentile within simulated outcomes? Use the buttons to switch between views. In each chart, dashed crosshairs at the league means split the plot into four quadrants: pastel green (team did well, model agreed), pastel red (team did poorly, model agreed), and pastel yellow (model and reality disagreed).
No Trend Data Yet
Next-Season Status
Across 100,000 regular-season simulations, the probability of each team's next-season status. Columns appear in best-to-worst outcome order: promotion-positive on the left, relegation-positive on the right. Cells with darker shading indicate higher likelihood.
| Team | Direct promotion | Lost promotion playoff | Same level | Qualified for relegation playoff | Direct relegation |
|---|---|---|---|---|---|
| VfL Bochum | 11.58% | 5.89% | 66.90% | 4.97% | 10.66% |
| Greuther Furth | 11.39% | 5.37% | 67.09% | 5.62% | 10.53% |
| Eintracht Braunschweig | 11.55% | 5.09% | 67.14% | 5.43% | 10.79% |
| Energie Cottbus | 10.92% | 5.41% | 67.19% | 5.78% | 10.70% |
| VfL Wolfsburg | 11.41% | 5.34% | 66.11% | 5.86% | 11.28% |
| 1. FC Nurnberg | 10.97% | 5.70% | 66.77% | 5.69% | 10.87% |
| 1. FC Kaiserslautern | 11.34% | 4.75% | 66.86% | 5.80% | 11.25% |
| St. Pauli | 11.02% | 5.80% | 66.86% | 5.37% | 10.95% |
| Arminia Bielefeld | 11.09% | 5.46% | 66.74% | 5.57% | 11.14% |
| Holstein Kiel | 11.36% | 5.88% | 65.70% | 5.63% | 11.43% |
| 1. FC Magdeburg | 10.73% | 5.96% | 66.62% | 5.86% | 10.83% |
| 1. FC Heidenheim | 10.82% | 5.74% | 67.02% | 5.40% | 11.02% |
| Karlsruher SC | 10.67% | 5.61% | 67.41% | 5.44% | 10.87% |
| Hertha BSC | 11.03% | 5.68% | 66.05% | 5.94% | 11.30% |
| VfL Osnabruck | 11.26% | 6.01% | 65.62% | 5.44% | 11.67% |
| Hannover 96 | 10.88% | 5.19% | 66.89% | 5.71% | 11.33% |
| Dynamo Dresden | 10.94% | 5.67% | 66.59% | 5.24% | 11.56% |
| SV Darmstadt 98 | 11.04% | 5.45% | 66.44% | 5.25% | 11.82% |