> kairox 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%.
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
Ordered by how settled the race is, measured as effective contenders: the inverse Herfindahl index of the title-probability vector, where 1.0 means a formality and the field size would mean every team level. The last column is the share of title probability held by teams with no 25-26 record in that league, and it is the column this log is about.
| League | Favourite | P(title) | Runner-up | Third | Eff. contenders | No 25-26 record |
|---|---|---|---|---|---|---|
| Bundesliga | Bayern München | 88.3% | Leverkusen 7.0% | Dortmund 3.3% | 1.27 | 0.0% |
| Eredivisie | PSV Eindhoven | 75.7% | Feyenoord 14.0% | Ajax 4.0% | 1.68 | 0.1% |
| Ligue 1 | PSG | 71.4% | Lens 12.1% | Marseille 6.8% | 1.88 | 0.1% |
| Scottish Premiership | Celtic | 65.6% | Rangers 29.4% | Hearts 4.0% | 1.93 | 0.1% |
| LaLiga | Barcelona | 56.1% | Real Madrid 38.5% | Atlético 3.0% | 2.15 | 0.1% |
| Liga Portugal | Sporting CP | 54.9% | Benfica 32.5% | Porto 12.4% | 2.36 | 0.0% |
| Premier League | Manchester City | 51.7% | Arsenal 35.0% | Liverpool 7.8% | 2.52 | 0.5% |
| Danish Superliga | København | 56.8% | Midtjylland 20.6% | AGF 6.8% | 2.64 | 0.8% |
| Serie A | Inter | 57.4% | Napoli 14.1% | Juventus 10.4% | 2.71 | 0.2% |
| Austrian Bundesliga | Salzburg | 41.1% | Sturm Graz 30.7% | LASK 16.3% | 3.42 | 0.7% |
| Swiss Super League | Servette | 38.6% | Young Boys 29.8% | St. Gallen 11.3% | 3.87 | 1.4% |
| 2. Bundesliga | Heidenheim | 23.4% | St. Pauli 21.7% | Wolfsburg 18.8% | 6.52 | 69.8% |
| EFL Championship | Southampton | 21.8% | Wolves 19.3% | West Ham 16.9% | 6.73 | 55.4% |
| Segunda División | Mallorca | 22.0% | Girona 17.4% | Oviedo 17.0% | 7.53 | 64.2% |
20,000 seasons per league, 280,000 in total. Monte Carlo standard error is at most 0.35pp on any figure in the table.
Two things in that table are worth a sentence before moving on. Arsenal won the 25-26 Premier League by seven points and are second here 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. And the Austrian figure is load-bearing on a rule change. Austria halved points at the championship split every season from 2018-19 until this one; 26-27 is the first without it, 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 Fixture the Model Cannot Price
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.
FootballFeatureBuilder("premier_league").build_single(history, date="2026-05-25",home="coventry_city", away="liverpool",)-> 63 of 94 features NaN-> TempoModel.predict_probaP(home) 0.394 P(draw) 0.219 P(away) 0.387# the same call, two teams that played in 25-26:-> 0 of 94 features NaN
Newly-promoted Coventry, at home to Liverpool, 39.4% to win. XGBoost routes NaN down a default branch at no cost, so nothing raises, nothing warns, and the number comes back with the same type, the same range and the same shape as a real one. The identical call for two teams Tempo does know returns zero NaN, which makes this a specifically new-to-the-league failure rather than general sparsity.
The direction of the error is the part that matters. A missing gap reads as no gap, so the failure is biased optimistic: the model does not return noise around the right answer, it returns a team that looks roughly average. Across the fourteen leagues, 42 of 244 teams did not play in their league in 25-26.
Why the definition is strict
A team counts as informative here only if it played in the league in 25-26. Some arrivals do have older history in the same league: Schalke were in the Bundesliga in 22-23, Troyes in Ligue 1 the same season. But Tempo's rolling windows have no notion of staleness, so they would happily describe Schalke by their form from four years ago. Treating every arrival the same way is both simpler and more honest, and it makes the newcomer set exactly derivable from the data rather than declared by hand.
Measure the Arrival Instead
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.
| Pool | n | Attack | Defence | Scores | Concedes |
|---|---|---|---|---|---|
| promoted into a top flight | 101 | -0.216 ± 0.200 | -0.179 ± 0.182 | ×0.81 | ×1.20 |
| promoted into a second tier | 39 | -0.066 ± 0.238 | -0.087 ± 0.121 | ×0.94 | ×1.09 |
| relegated into a second tier | 32 | +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.
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 tables 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.
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.
| League | 1st | 2nd | 3rd | 4th |
|---|---|---|---|---|
| EFL Championship | Southampton 21.8% | Wolves 19.3% (new) | West Ham 16.9% (new) | Burnley 15.0% (new) |
| 2. Bundesliga | Heidenheim 23.4% (new) | St. Pauli 21.7% (new) | Wolfsburg 18.8% (new) | Hannover 96 8.4% |
| Segunda División | Mallorca 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 results table 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 tables are robust to everything tested except overall strength confidence, and can be quoted as they stand with that caveat. The three second-tier tables 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 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.