Diego Garcia

Back to logs

> var / tempo

Two Thirds of a Second-Tier Title Race Is a Prior

Fourteen leagues, 20,000 simulated 2026-27 seasons each. In the eleven top flights the answer belongs to the model. In the three second tiers, 55 to 70% of the title probability sits on teams the model has never seen, and moving that one assumption by a standard deviation takes Southampton from 21.8% to either 40.3% or 3.2%.

Aug 202612 min read

KairoX Tempo answers one match at a time: P(home), P(draw), P(away). A title is a property of a whole season. Getting from one to the other turns out to be free. A 1X2 triple carries two degrees of freedom, and a Dixon-Coles scoreline model at a fixed dependence parameter has exactly two free parameters, so inverting a calibrated triple into a lambda pair is a change of coordinates rather than a model fitted to another model. The worst residual across all 2,808 priced fixtures is 1.7e-16 nats of KL divergence, which is solver precision and not approximation error.

So the season simulation is Tempo's own answer, re-expressed as scorelines and played out 20,000 times per league under each league's real format, tiebreak chain included. That holds for every fixture between two teams Tempo knows. The interesting part is the fixtures it does not.

The 2026-27 Answer

The top five in every league, with projected points and the 10th-90th percentile band around them. The bands are the part worth staring at: Manchester City's projected 74.7 points carries a range of 65 to 84, nineteen points wide, more than a third of the gap between champion and mid-table. A favourite at 51.7% is not a prediction that City finish on 75 points.

Bundesliga

18 teams · 34 games

1.27 eff. contenders · 0.0% no 25-26 record

1
Bayern München88.3%

81.0 pts · 10-90th 73 to 89

2
Bayer Leverkusen7.0%

67.9 pts · 10-90th 59 to 77

3
Borussia Dortmund3.3%

64.9 pts · 10-90th 56 to 74

4
RB Leipzig1.1%

60.8 pts · 10-90th 52 to 70

5
VfB Stuttgart0.3%

56.4 pts · 10-90th 47 to 66

> remaining 13 teams: 0.1%

Eredivisie

18 teams · 34 games

1.68 eff. contenders · 0.1% no 25-26 record

1
PSV Eindhoven75.7%

73.9 pts · 10-90th 65 to 83

2
Feyenoord14.0%

64.6 pts · 10-90th 55 to 74

3
Ajax4.0%

59.0 pts · 10-90th 50 to 68

4
Twente2.6%

57.4 pts · 10-90th 48 to 67

5
NEC Nijmegen1.5%

55.3 pts · 10-90th 46 to 65

> remaining 13 teams: 2.2%

Ligue 1

18 teams · 34 games

1.88 eff. contenders · 0.1% no 25-26 record

1
Paris Saint-Germain71.4%

73.2 pts · 10-90th 64 to 82

2
Lens12.1%

63.5 pts · 10-90th 54 to 73

3
Marseille6.8%

60.9 pts · 10-90th 51 to 70

4
Rennes2.7%

57.1 pts · 10-90th 48 to 67

5
Monaco2.0%

56.3 pts · 10-90th 47 to 66

> remaining 13 teams: 4.9%

Scottish Premiership

12 teams · 38 games

1.93 eff. contenders · 0.1% no 25-26 record

1
Celtic65.6%

77.7 pts · 10-90th 68 to 87

2
Rangers29.4%

72.4 pts · 10-90th 63 to 82

3
Hearts4.0%

62.2 pts · 10-90th 52 to 72

4
Hibernian0.5%

55.4 pts · 10-90th 47 to 65

5
Motherwell0.4%

54.3 pts · 10-90th 46 to 64

> remaining 7 teams: 0.1%

LaLiga

20 teams · 38 games

2.15 eff. contenders · 0.1% no 25-26 record

1
Barcelona56.1%

83.8 pts · 10-90th 75 to 93

2
Real Madrid38.5%

81.4 pts · 10-90th 72 to 90

3
Atlético Madrid3.0%

69.4 pts · 10-90th 60 to 79

4
Villarreal2.0%

67.5 pts · 10-90th 58 to 77

5
Real Betis0.1%

58.9 pts · 10-90th 49 to 69

> remaining 15 teams: 0.2%

Liga Portugal

18 teams · 34 games

2.36 eff. contenders · 0.0% no 25-26 record

1
Sporting CP54.9%

81.3 pts · 10-90th 74 to 89

2
Benfica32.5%

78.6 pts · 10-90th 71 to 86

3
Porto12.4%

74.1 pts · 10-90th 66 to 82

4
Braga0.1%

57.7 pts · 10-90th 49 to 67

5
Famalicão0.0%

51.7 pts · 10-90th 43 to 61

> remaining 13 teams: 0.0%

Premier League

20 teams · 38 games

2.52 eff. contenders · 0.5% no 25-26 record

1
Manchester City51.7%

74.7 pts · 10-90th 65 to 84

2
Arsenal35.0%

72.4 pts · 10-90th 63 to 82

3
Liverpool7.8%

64.2 pts · 10-90th 54 to 74

4
Manchester United1.4%

57.1 pts · 10-90th 47 to 67

5
Chelsea0.9%

55.8 pts · 10-90th 46 to 66

> remaining 15 teams: 3.1%

Danish Superliga

12 teams · 32 games

2.64 eff. contenders · 0.8% no 25-26 record

1
København56.8%

60.2 pts · 10-90th 51 to 69

2
Midtjylland20.6%

54.5 pts · 10-90th 46 to 63

3
AGF6.8%

49.8 pts · 10-90th 42 to 58

4
Nordsjælland6.6%

49.7 pts · 10-90th 42 to 58

5
Brøndby6.6%

49.6 pts · 10-90th 42 to 58

> remaining 7 teams: 2.6%

Serie A

20 teams · 38 games

2.71 eff. contenders · 0.2% no 25-26 record

1
Inter57.4%

79.2 pts · 10-90th 70 to 88

2
Napoli14.1%

71.0 pts · 10-90th 61 to 81

3
Juventus10.4%

69.7 pts · 10-90th 60 to 79

4
Como6.7%

67.5 pts · 10-90th 58 to 77

5
Roma5.0%

66.4 pts · 10-90th 56 to 76

> remaining 15 teams: 6.4%

Austrian Bundesliga

12 teams · 32 games

3.42 eff. contenders · 0.7% no 25-26 record

1
Salzburg41.1%

55.6 pts · 10-90th 46 to 65

2
Sturm Graz30.7%

54.1 pts · 10-90th 45 to 63

3
LASK16.3%

50.8 pts · 10-90th 42 to 60

4
Rapid Wien3.5%

45.0 pts · 10-90th 37 to 53

5
Wolfsberger AC3.1%

44.9 pts · 10-90th 37 to 53

> remaining 7 teams: 5.5%

Swiss Super League

12 teams · 38 games

3.87 eff. contenders · 1.4% no 25-26 record

1
Servette38.6%

65.0 pts · 10-90th 55 to 75

2
Young Boys29.8%

63.4 pts · 10-90th 54 to 73

3
St. Gallen11.3%

58.3 pts · 10-90th 49 to 68

4
Lugano5.2%

55.0 pts · 10-90th 46 to 64

5
Luzern5.0%

55.0 pts · 10-90th 46 to 64

> remaining 7 teams: 10.1%

2. Bundesliga

18 teams · 34 games

6.52 eff. contenders · 69.8% no 25-26 record

1
Heidenheimnew23.4%

54.3 pts · 10-90th 37 to 72

2
St. Paulinew21.7%

54.1 pts · 10-90th 38 to 72

3
Wolfsburgnew18.8%

53.1 pts · 10-90th 37 to 70

4
Hannover 968.4%

53.2 pts · 10-90th 43 to 63

5
Darmstadt6.7%

52.0 pts · 10-90th 42 to 62

> remaining 13 teams: 21.0%

EFL Championship

24 teams · 46 games

6.73 eff. contenders · 55.4% no 25-26 record

1
Southampton21.8%

79.0 pts · 10-90th 68 to 90

2
Wolvesnew19.3%

71.8 pts · 10-90th 51 to 94

3
West Ham Unitednew16.9%

71.6 pts · 10-90th 52 to 92

4
Burnleynew15.0%

70.5 pts · 10-90th 51 to 91

5
Middlesbrough9.7%

74.1 pts · 10-90th 63 to 85

> remaining 19 teams: 17.3%

Segunda División

22 teams · 42 games

7.53 eff. contenders · 64.2% no 25-26 record

1
Mallorcanew22.0%

66.3 pts · 10-90th 47 to 87

2
Gironanew17.4%

65.2 pts · 10-90th 47 to 84

3
Oviedonew17.0%

65.4 pts · 10-90th 47 to 84

4
Almería10.4%

67.5 pts · 10-90th 57 to 78

5
Castellón9.2%

66.8 pts · 10-90th 56 to 78

> remaining 17 teams: 24.0%

Top five and projected points in each of the fourteen leagues, ordered by effective contenders: the inverse Herfindahl index of the title-probability vector, where 1.0 is a formality and the field size would mean every team level. Teams marked new have no 25-26 record in the league and are priced from the cohort prior rather than by the model. Monte Carlo standard error is at most 0.35pp on any probability shown.

Three things in there are worth a sentence before moving on. Arsenal won the 25-26 Premier League by seven points and sit second at 35.0%, because the projection regresses hard toward the mean: across all 202 returning teams the spread of projected points per game is 0.295 against last season's realised 0.362, a regression slope of 0.73. The Austrian figure is load-bearing on a rule change, since Austria halved points at the championship split every season from 2018-19 until this one, and halving would compress the gap Salzburg and Sturm Graz build in the regular phase into something materially more open than 41.1% against 30.7%.

The third is the one to hold on to. Look at the point bands in the Championship card. Southampton, a returning team, projects 79 points in a 68-to-90 band. Wolves projects 71.8 in a band running 51 to 94, more than twice as wide. Same league, same 20,000 seasons, same accounting. The width is not a statement about Wolves; it is a statement about how little is known about Wolves, and it is the rest of this log.

Measure the Arrival Instead

Every Tempo feature is a rolling window over the league's own history: form over the last five, xG over the last ten, points gap, venue splits. A side promoted into the league has nothing to roll over, so 63 of 94 features come back NaN, and XGBoost routes NaN down a default branch at no cost. Nothing raises, nothing warns, and the number comes back with the same type, the same range and the same shape as a real one: newly-promoted Coventry, at home to Liverpool, 39.4% to win. The direction of that error is the part that matters, because a missing gap reads as no gap. The failure is biased optimistic. Across the fourteen leagues, 42 of 244 teams did not play in their league in 25-26.

The replacement is not a guess. Tempo's own Poisson component is fitted to each league-season on its own, decay off, attack and defence re-centred to mean zero, which is the gauge the parameterisation is invariant under. Teams absent the season before are the sample. That puts the prior and its destination on the same scale by construction, so there is no calibration step to argue about.

PoolnAttackDefenceScoresConcedes
promoted into a top flight101-0.216 ± 0.200-0.179 ± 0.182×0.81×1.20
promoted into a second tier39-0.066 ± 0.238-0.087 ± 0.121×0.94×1.09
relegated into a second tier32+0.116 ± 0.180+0.119 ± 0.275×1.12×0.89

172 real arrivals across 14 leagues and 4 seasons. Multipliers are relative to the average team in the league being entered.

172 real arrivals, measured on the model's own strength scale

Every team that appeared in one of the fourteen leagues without having played there the season before, 22-23 through 25-26. Attack and defence are fitted per league-season with the model's own Poisson component and re-centred to mean zero, so the origin is that season's league average.

-0.8×0.45-0.6×0.55-0.4×0.67-0.2×0.820.0×1.00+0.2×1.22+0.4×1.49-0.6×1.82-0.3×1.350.0×1.00+0.3×0.74+0.6×0.55+0.9×0.41+1.2×0.30attack: log multiplier on goals scored vs league averagedefence: higher means fewer concededscores more, concedes lessscores less, concedes moreBurnley, Championship 24-2516 conceded in 46 gamespromoted into a top flightn=101 · ×0.81 scored · ×1.20 concededpromoted into a second tiern=39 · ×0.94 scored · ×1.09 concededrelegated into a second tiern=32 · ×1.12 scored · ×0.89 conceded
Figure 2: The three pools separate along the diagonal, and only one of them sits in the positive quadrant. A side relegated into a second tier is not a weak arrival to be discounted; it is above the average of the league it lands in, which is why the prior alone puts three of them on every second-tier podium. Crosshairs are ±1 sd; the dashed line joins the pool means.

The ordering is football sense arrived at from data, which is the cheap part. The expensive part is the third row. A side relegated into a second tier is not a discounted arrival at all: it scores 12% more and concedes 11% less than the average team in the league it drops into. Second tiers are also compressed, which is why the middle pool sits so close to the origin, and the combination is what makes the second-tier projections what they are.

Two implementation details do real work. Attack and defence are drawn as whole pairs, bootstrapped from the sample, so the correlation between them survives at +0.22, +0.09 and +0.30 by pool: promoted sides are not independently bad at scoring and bad at defending. And the draw happens once per simulated season, not once per match. A promoted side that comes up flying is flying in all 34 of its games, and that persistence is what turns the prior into a strength-of-schedule effect for everyone else in the league.

One note on the spread, because it looks too wide. Fitting a single season measures realised performance, which mixes true strength with a season's luck. That is the right quantity: the simulation wants the predictive distribution of what a newcomer will actually do, not a noise-free estimate of what it is.

Where It Matters

Shift every newcomer's prior mean by a standard deviation in each direction and rerun, with common random numbers so the differences are not swamped by Monte Carlo noise. Then do the same for a completely different worry: that Tempo is more confident about who is better than whom than it should be. That knob pulls every fixture's log-lambda a fixed fraction of the way to its venue's mean, flattening team-to-team strength while holding home advantage and the league's goals-per-game fixed, so it isolates one assumption rather than degrading the model generally.

What actually moves each favourite's title probability

Fourteen leagues, ordered by how much of the title probability sits on teams with no 25-26 record. Both panels share the same x-axis: P(title) for that league's favourite.

A. Flatten team strength 25% toward the league meanwhat the model is unsure about0%25%50%75%100%B. Shift the newcomer prior by ±1 sdwhat the model cannot see at all0%25%50%75%100%BundesligaBayernLiga PortugalSportingLaLigaBarcelonaLigue 1PSGEredivisiePSVScottish Prem.CelticSerie AInterPremier LeagueMan CityAustrian Bund.SalzburgDanish SuperligaKøbenhavnSwiss Super Lg.ServetteEFL ChampionshipSouthampton37.1ppSegunda DivisiónMallorca24.6pp2. BundesligaHeidenheim23.9ppheadlinestrength flattened 25%newcomers 1 sd weakernewcomers 1 sd stronger
Figure 1: The eleven top flights collapse to a single dot in panel B and spread out in panel A. The three second tiers do the opposite. Note that the endpoints swap sides: weaker newcomers help Southampton, the only returning team near the top of the Championship, and hurt Mallorca and Heidenheim, who are newcomers themselves. 20,000 seasons per league per variant, common random numbers throughout.

In the eleven top flights the newcomer perturbation is a rounding error. The largest favourite move is 4.56pp, København, and the largest move for any team in any top flight is 8.82pp, Vaduz, which is itself a newcomer. Newcomers hold between 0.0% and 1.4% of all top-flight title probability, and the answers survive being substantially wrong about them.

In the three second tiers the same perturbation decides the league. Southampton goes from 21.8% to 40.3% when newcomers are a standard deviation weaker and to 3.2% when they are stronger, because the teams either side of it in the market are all relegated Premier League clubs priced entirely from the prior. In 2. Bundesliga and Segunda it is worse: the entire podium is.

League1st2nd3rd4th
EFL ChampionshipSouthampton 21.8%Wolves 19.3% (new)West Ham 16.9% (new)Burnley 15.0% (new)
2. BundesligaHeidenheim 23.4% (new)St. Pauli 21.7% (new)Wolfsburg 18.8% (new)Hannover 96 8.4%
Segunda DivisiónMallorca 22.0% (new)Girona 17.4% (new)Oviedo 17.0% (new)Almería 10.4%

Every team marked (new) is priced from the cohort prior, not from Tempo. Ten of the twelve teams in the top four of the three second tiers have no 25-26 record in the league they are being simulated in.

The Two Sensitivities Run Opposite Ways

Panel A of the figure is the honest bound on the headline numbers. At 25% shrinkage the top-flight favourites move a long way: PSV 75.7% to 60.4%, the largest single move in the entire sweep, Bayern 88.3% to 76.1%, Inter 57.4% to 44.3%. The reported spread integrates match outcomes and the newcomer prior; it does not contain Tempo's own parameter uncertainty, so it is a floor, and the most confident-looking figures are the ones with the most to lose.

The three second tiers barely register it. At most 3.9pp, because their strength spread is already flat and pulling a flat distribution toward its own mean does very little. So the ordering inverts: the leagues whose numbers are least sensitive to the model being overconfident are precisely the leagues whose numbers are most sensitive to an assumption the model never made.

This is the reason the finding is worth writing down rather than filing. Read the projections alone and the second tiers look like honest wide races: 6.5 to 7.5 effective contenders, no favourite above 24%, the sort of distribution that reads as appropriate humility about a competitive league. The width is real. But it is not the model expressing uncertainty about teams it has measured. It is a bootstrap over a 32-team cohort mean, wearing the model's output format.

How to quote these numbers

The eleven top-flight projections are robust to everything tested except overall strength confidence, and can be quoted as they stand with that caveat. The three second-tier projections should never appear without the newcomer share attached. They are 55 to 70% prior, and the prior is a cohort mean, not a read on those specific clubs. The same rule applies to any promoted side's relegation number, for the reason the next section works through.

The Same Seasons, Read From the Bottom

Relegation needed no new simulation. The finishing-position distribution for every team is already in the same 20,000 seasons, so reading the bottom of the table is a change to the accounting and nothing else. It did need the real rules, which are not "bottom three" everywhere: England, Spain and Italy send three down directly, while Germany and France send two and put 16th into a two-legged play-off against the third-placed second-tier side.

That play-off needs a survival rate, and there is a measured one. The Bundesliga tie has been played 18 times since it returned in 2008-09 and the top-flight side survived 14 of them, so 16th goes down with probability 4/18, or 22.2%. Ligue 1's barrage only began in 2023-24 and has no usable base rate of its own, so it borrows the German figure. That is the one imported assumption in this section, and the direct and play-off components are reported separately so it can be discarded.

promoted, priced from the priorreturning, priced by the model| bar = prior ±1 sd, tick = headline

Premier League

3 down
Ipswich Townpromoted58.2%

prior ±1 sd: 25.8 to 85.8%

Hull Citypromoted53.7%

prior ±1 sd: 23.6 to 83.2%

Coventry Citypromoted53.5%

prior ±1 sd: 23.8 to 82.4%

Everton20.7%

prior ±1 sd: 8.7 to 32.3%

Leeds United20.1%

prior ±1 sd: 7.8 to 31.8%

Crystal Palace18.6%

prior ±1 sd: 7.2 to 28.7%

LaLiga

3 down
Deportivopromoted50.4%

prior ±1 sd: 21.1 to 77.3%

Málagapromoted44.4%

prior ±1 sd: 16.7 to 74.9%

Racing Santanderpromoted43.1%

prior ±1 sd: 15.7 to 73.0%

Espanyol38.4%

prior ±1 sd: 20.5 to 51.7%

Getafe29.8%

prior ±1 sd: 15.5 to 41.4%

Elche24.0%

prior ±1 sd: 10.9 to 36.1%

Serie A

3 down
Lecce63.5%

prior ±1 sd: 42.1 to 75.7%

Parma42.2%

prior ±1 sd: 23.5 to 55.7%

Monzapromoted40.6%

prior ±1 sd: 15.4 to 69.6%

Frosinonepromoted39.0%

prior ±1 sd: 14.1 to 67.5%

Veneziapromoted38.4%

prior ±1 sd: 13.6 to 66.1%

Cagliari18.9%

prior ±1 sd: 8.1 to 29.5%

Bundesliga

2 down, 16th into a play-off
Paderbornpromoted42.1%

prior ±1 sd: 16.2 to 65.0% · 10.1% via 16th

Elversbergpromoted37.0%

prior ±1 sd: 13.6 to 60.3% · 9.7% via 16th

Schalke 04promoted36.9%

prior ±1 sd: 13.7 to 61.0% · 10.0% via 16th

Hamburger SV28.0%

prior ±1 sd: 11.0 to 42.9% · 15.1% via 16th

Augsburg19.8%

prior ±1 sd: 6.8 to 32.4% · 12.3% via 16th

Werder Bremen17.6%

prior ±1 sd: 6.1 to 29.2% · 11.3% via 16th

Ligue 1

2 down, 16th into a play-off
Angers57.7%

prior ±1 sd: 39.9 to 67.7% · 16.3% via 16th

Le Manspromoted37.9%

prior ±1 sd: 12.2 to 69.2% · 10.9% via 16th

Troyespromoted36.2%

prior ±1 sd: 11.6 to 66.5% · 10.1% via 16th

Le Havre24.5%

prior ±1 sd: 13.5 to 33.4% · 14.4% via 16th

Auxerre17.3%

prior ±1 sd: 9.3 to 24.4% · 11.8% via 16th

Lorient15.6%

prior ±1 sd: 7.9 to 23.1% · 11.0% via 16th

The six highest relegation risks in each of the five leagues that have a second tier in the dataset, read from the same 20,000 seasons. The bar is how far the number travels when the newcomer prior shifts by a standard deviation. Compare the terracotta bars with the slate ones: that difference, not the ordering, is the finding.

The caveat that was a rounding error on the title is the whole shortlist here. Nine of the fifteen highest-risk teams across the five leagues are promoted sides, including the top three in England, and their ±1 sd spans are enormous: Ipswich runs 25.8% to 85.8%, a sixty-point range on a single assumption. A promoted side's relegation number should be read as "roughly half, ±30", which is honest and still useful, rather than as 58.2%.

Two of the five shortlists are led by teams the model does know, and those numbers are much firmer. Lecce at 63.5% is the single highest relegation risk in the five and comes entirely from Tempo's own view of a returning team; its span is 42.1 to 75.7%, wide because its rivals for the bottom three are promoted sides, not because Lecce itself is uncertain. Angers at 57.7% in Ligue 1 is the same story with a tighter 39.9 to 67.7%. Espanyol at 38.4% and Parma at 42.2% are the other returning teams the model puts in real danger.

The play-off is worth 2 to 4 points of relegation probability and no more. Finishing 16th in Germany or France is a 10 to 16% outcome for the teams in danger, and only 22.2% of those end in relegation, so it adds roughly 2.2 to 3.6pp on top of the direct risk. It does not reorder any shortlist, which is the useful thing to know about it.

Strength shrinkage also behaves differently down here. At 25% flattening the riskiest team in each league moves 58.2% to 51.1% (Ipswich), 50.4% to 45.4% (Deportivo), 63.5% to 55.5% (Lecce), 42.1% to 38.1% (Paderborn) and 57.7% to 49.4% (Angers): smaller moves than the same knob produced at the top, and all in the same direction. Relegation risk concentrates in teams whose strength estimate is low, so flattening the table pulls them up rather than scattering them.

The Obvious Next Test

The three leagues where the prior dominates are also the three where the newcomers arrive from above, and their records exist. Wolves, West Ham and Burnley each played 38 Premier League matches last season. The prior throws all of that away and prices them from a 32-team cohort mean measured across four seasons and fourteen leagues.

Whether the club's own record beats the cohort is not answerable from this run, and it is not obvious which way it goes. The cohort is a tight estimate of the wrong thing: what an average relegated club does. The club's own season is a noisy estimate of the right thing, from a sample of one, in a division a tier above, before a transfer window that this experiment cannot see at all. The comparison needs running rather than reasoning about, and until it is run, the Championship number stays what it currently is: a well-calibrated statement about a cohort, formatted as a statement about Southampton.