Dixon-Coles — goals as Poisson, with the draws fixed
Each team’s goals are a Poisson count from its attack and the opponent’s defence, with a low-score correction that repairs the classic under-prediction of 0-0 and 1-1 draws. The validated kernel and the simulator’s default engine.
0.1926
OOS RPS · expanding
the headline skill (realism protocol)
0.1828
OOS RPS · LOTO
optimistic ceiling (leaks future folds)
#4
Leaderboard rank
of 7 · CI 0.1528–0.2292
§ 01
The intuition
In plain English, before any mathematics.
Models each team's goals as a Poisson count driven by attack and defence strengths, with a low-score correction (the tau term) that fixes the classic under-prediction of 0-0 and 1-1 draws, and an exponential time-decay so recent matches count more. The validated baseline kernel and cheapest simulator input.
§ 02
Mathematical specification
From two team strengths to a full scoreline distribution: the goal rates, the corrected joint probability, and the time-decayed likelihood the parameters are fitted by.
The goal rate, and the corrected bivariate scoreline probability
01The goal rates
Each side’s expected goals combine the global scoring level μ, its own attack, and the opponent’s defence. The host bonus fires only for the United States, Canada and Mexico in their own stadiums; every other fixture is treated as neutral. Attack and defence are centred to mean zero so the parameters are identified.
logλi=μ+hadv1host+αi−βj,logλj=μ+αj−βi
Two log-linear Poisson goal rates per fixture
02The corrected scoreline probability
Independent Poissons get low-scoring draws wrong. The τ factor reweights exactly four cells of the scoreline grid — 0-0, 1-0, 0-1 and 1-1 — and leaves everything else untouched.
P(X=x,Y=y)=τλi,λj(x,y)x!e−λiλixy!e−λjλjy
The joint scoreline probability with the low-score correction
03The τ correction
With ρ negative, the two draw cells are lifted and the two narrow wins are trimmed — repairing the classic under-prediction of 0-0 and 1-1. ρ is a single shared parameter, clipped to ±0.2.
Parameters maximise a time-decayed log-likelihood: every match is weighted by its age at ξ = 0.0019 per day — a one-year half-life, slower than the club-football convention because international sides play sparsely. A small ridge keeps the strengths of rarely-seen teams finite.
Time-decay-weighted maximum likelihood with a ridge
05From grid to forecast
The grid runs to 10 goals a side and is renormalised; win, draw and loss probabilities — and totals, handicaps and exact scores — are all read off the same object.
OOS RPS — expanding (headline) and LOTO (optimistic)
On the headline expanding window this model scores 0.1926 — −0.0012 below the Elo floor (0.1938) and +0.0021 versus the market ceiling (0.1905).
Elo floor 0.1938market 0.1905
Expanding0.1926
LOTO0.1828
Bar fills to the model’s RPS on the floor–ceiling axis; the whisker on the expanding bar is the conservative 95% CI (0.1528–0.2292). Lower (left) is better.
It clears the Elo floor; the gap to the market is small and — at n = 3 — inside the bootstrap interval.
Source · Oxford Football Forecasting model · Bookmaker consensus (de-vigged closing odds) · 152 matches · 3 tournaments
§ 06
Strengths & limits
What this model is good for — and where it is weak.