Superior Supercomputer
Bundesliga Table Predictor: Season Simulator and Title Odds
The first projection for this league lands after the next nightly pass (05:35 UTC). The simulator plays the rest of the season 10,000 times from our per-team ratings and counts where every club finishes.
How this projection is made
Every remaining fixture gets expected goals for both sides from our per-team attack and defence ratings, the model behind every match prediction on this site: learned from each club's whole history, one small step per finished match, with the opponent's strength priced in.
Two limits worth knowing. A promoted club carries the rating it earned in the division below, so its first months here are priced off results against weaker opponents; only a club the ratings have barely seen at all falls back to the league average, and the count above says how many fixtures that was. And the form window, weather, congestion and market steps the match pages apply to a fixture a few days out are left out here, which is right for a match in May and a real simplification for one this weekend.
The simulator draws goals for both sides from those expected goals (independent Poisson, the site's match model without corrections it does not use), adds the points to the current table, ranks by points, goal difference and goals scored, and repeats 10,000 times. Each club's number is the share of those seasons it finished in that place. The projection is computed every morning and every day's result is kept, so the movement is a record, not a rewrite.
The settled record of the match predictions this same model produces is public on the accuracy page, with every selection in an open dataset (CC-BY 4.0) at github.com/st0jka/superior-tips-predictions-dataset. These simulated seasons are not in that dataset and are not covered by its licence. A projection is a count of simulated outcomes, not a promise about the season.