Model

The Dixon-Coles model in football, explained with a worked example

Published

Most published football probabilities start life as a pair of Poisson distributions, and most of them are wrong in the same specific way: they do not produce enough draws. The Dixon-Coles model is the standard fix. Introduced in a 1997 paper by Mark Dixon and Stuart Coles, it keeps the Poisson engine intact and bolts on two adjustments — a correction that redistributes probability across four low-scoring results, and a time-decay weighting that makes old matches count for less. Both are small. Both are easy to state precisely. Together they are the difference between a model that looks reasonable and one that survives being scored.

Where the independent Poisson model breaks

The standard Poisson approach estimates an expected goal count for each side, generates a probability for every scoreline, and multiplies the two sides together to fill a score matrix. That multiplication assumes the two teams’ goal counts are statistically independent — that knowing the home side scored zero tells you nothing about how many the away side scored.

That assumption fails at the bottom of the scoreline distribution. Real matches at 0-0 with twenty minutes left are not two independent processes; they are one cagey game in which neither side is taking risks. Real matches at 1-0 late often see the leading side drop deep and the trailing side commit bodies forward, correlating the two counts again. The empirical consequence, visible in any large results dataset, is that 0-0 and 1-1 occur more often than independent Poisson predicts, while 1-0 and 0-1 occur less often.

Because those four scorelines carry a large share of all matches, the error is not cosmetic. A model that under-prices 0-0 and 1-1 systematically under-prices the draw in 1X2 markets — the market where mispricing is easiest to punish.

What the Dixon-Coles model actually changes

The correction is deliberately minimal. Dixon-Coles multiplies the independent Poisson probability of exactly four scorelines by a factor τ (tau), leaving every other cell in the matrix untouched. With λ as the home side’s expected goals, μ as the away side’s, and ρ (rho) as a single fitted parameter:

Scoreline τ multiplier
0-0 1 − λμρ
0-1 1 + λρ
1-0 1 + μρ
1-1 1 − ρ

ρ is estimated from data rather than chosen, and on football results it comes out small and negative — typically somewhere in the region of −0.1. A negative ρ makes the 0-0 and 1-1 multipliers greater than one and the 1-0 and 0-1 multipliers less than one, which is exactly the direction the empirical error demands.

The elegant part is what the four factors do collectively. Work through the algebra and the probability added to 0-0 and 1-1 is exactly equal to the probability removed from 1-0 and 0-1, for any λ, μ and ρ. The correction is mass-preserving by construction: nothing needs renormalising afterwards, and the rest of the score matrix is left alone.

A worked example

Take a hypothetical match where the model has estimated λ = 1.5 expected goals for the home side and μ = 1.1 for the away side, and where ρ has been fitted at −0.13. Independent Poisson gives the four affected cells first, then τ adjusts them:

Scoreline Poisson τ Dixon-Coles
0-0 7.43% 1.215 9.02%
1-0 11.14% 0.857 9.55%
0-1 8.17% 0.805 6.58%
1-1 12.26% 1.130 13.85%

The two draw cells gain 1.59 points each; the two one-goal wins lose 1.59 points each. Summing into the three 1X2 outcomes, the draw probability rises by about 3.2 percentage points while the home win and the away win each fall by about 1.6. Every other scoreline — 2-1, 3-0, 2-2 and the rest — is numerically identical to what plain Poisson produced.

Three points worth drawing out of that table. First, the size of the shift is material: a draw priced at 24% instead of 27% is a meaningful difference in decimal odds. Second, the adjustment is asymmetric between the two teams, because τ for 1-0 depends on μ while τ for 0-1 depends on λ — the stronger side’s one-goal win is discounted less. Third, none of this required a new model. It is one parameter applied to four cells.

Time decay: why old matches should count for less

The second Dixon-Coles contribution is about which matches inform the attack and defence ratings in the first place. Fitting those ratings by treating every historical match equally implies a squad’s quality three years ago is as informative as its quality last month, which no one believes.

Dixon-Coles weights each historical match by an exponential decay function of its age, w(t) = exp(−ξt), where t is the number of days since the match and ξ is a fitted decay rate. The behaviour is easiest to read as a half-life. At ξ = 0.0065 per day, a match loses half its weight after roughly 107 days: a game from three months back counts about half as much as one from last week, and a game from a year ago carries under a tenth of the weight.

Choosing ξ is a genuine trade-off rather than a detail. Decay too slowly and the ratings lag real changes in squad quality. Decay too quickly and the ratings chase noise, because a handful of recent matches is a very small sample to estimate anything from. The rate has to be fitted on out-of-sample performance, and it will not be the same number for every competition — leagues differ in how fast team strength actually turns over. This is one reason our own ratings are fitted separately per league rather than pooled.

What Dixon-Coles does not fix

The correction is narrow on purpose, and it is worth being explicit about its limits. It touches only four scorelines, so any dependence between goal counts at 2-2 or 3-2 remains unmodelled. It says nothing about where λ and μ come from — a Dixon-Coles model with poor attack and defence estimates is still a poor model, and the estimation step is where implementations genuinely differ. It does not handle red cards, fixture congestion or motivation, all of which shift a match’s scoring rate in ways a static rating cannot see. And it assumes goals within a match arrive at a constant rate, which is not quite true either.

None of that makes the correction optional. It makes it one component in a chain, each link of which can be evaluated separately.

Judging whether the correction earns its place

The honest test of any modelling adjustment is whether it improves probabilities on matches the model was not fitted on, measured with a proper scoring rule rather than a hit rate. (How much of the score grid that correction covers, and how large the bias inside it actually looks, is measured separately here.) For the Dixon-Coles correction that test is unusually clean, because ρ is a single parameter: fit the model with it and without it on identical training data, then compare scores on a held-out period. If the corrected version does not score better out of sample, the correction is not earning anything on that dataset.

That standard is the reason we publish every prediction with a timestamp and keep the outcomes on a public track record rather than describing the methodology and asking for trust. A model’s architecture is a claim; the scored record is the evidence. Dixon-Coles is a well-founded, decades-old adjustment with a clear mechanism behind it — and it should still be held to the same evidential bar as anything else in the pipeline.