Markets coveredMatch OddsCorrect ScoreOver / UnderFirst HalfSecond Half
Statometrics
Model Library · Distributions

Dixon-Coles Model

A Poisson football model with a correction for low scores and a time decay, so recent results count more than old ones.

Intermediatepre-match

In one sentence

Dixon-Coles is a Poisson goals model that rates each team's attack and defence, adjusts the four lowest scorelines, and down-weights older matches.

How it works

Mark Dixon and Stuart Coles published the model in 1997, aiming it squarely at beating football betting markets. It starts from the standard setup: each team has an attack rating and a defence rating, plus a home advantage, and those combine to give each side's expected goals.

They then noticed that plain Poisson gets 0-0, 1-0, 0-1 and 1-1 wrong: real matches finish 0-0 and 1-1 more often than predicted. So the model multiplies just those four scorelines by a correction factor controlled by one parameter, ρ (rho). Every other score is left alone, and the corrections are built so the probabilities still add up to 100%.

The second idea is time decay. A result from last month tells you more about a team than one from two seasons ago, so each past match is weighted by how long ago it happened.

The maths

P(X=x,Y=y)=τλ,μ(x,y) λxe−λx! μye−μy!P(X=x, Y=y) = \tau_{\lambda,\mu}(x,y)\,\frac{\lambda^{x}e^{-\lambda}}{x!}\,\frac{\mu^{y}e^{-\mu}}{y!} τ(0,0)=1−λμρ,τ(0,1)=1+λρ,τ(1,0)=1+μρ,τ(1,1)=1−ρ\tau(0,0)=1-\lambda\mu\rho,\quad \tau(0,1)=1+\lambda\rho,\quad \tau(1,0)=1+\mu\rho,\quad \tau(1,1)=1-\rho λ=αhome βaway γ,μ=αaway βhome\lambda = \alpha_{\text{home}}\,\beta_{\text{away}}\,\gamma, \qquad \mu = \alpha_{\text{away}}\,\beta_{\text{home}}
  • λ and μ are home and away expected goals.
  • α is a team's attack strength, β its defensive weakness, γ the home advantage.
  • τ is the correction, equal to 1 for every score other than the four listed.
  • ρ controls the correction; a negative ρ adds 0-0 and 1-1 and removes 1-0 and 0-1.
  • Time decay multiplies each match's contribution by e raised to (−ξ × days ago), where ξ sets how fast old results fade.

In words: start with Poisson, tweak the low scores, and trust recent form more.

Worked betting example

Match Odds and Correct Score, illustrative inputs. Home expected goals λ = 1.3, away μ = 1.0, and ρ = −0.1.

  1. Independent Poisson: P(0-0) 10.03%, P(1-1) 13.03%, P(1-0) 13.03%, P(0-1) 10.03%.
  2. Corrections: 0-0 × 1.13, 0-1 × 0.87, 1-0 × 0.90, 1-1 × 1.10.
  3. Adjusted: P(0-0) 11.33%, P(1-1) 14.34%, P(1-0) 11.73%, P(0-1) 8.72%. The full grid still sums to 100%.
  4. P(draw) rises from 27.96% to 30.57%. Fair draw odds fall from 3.58 to 3.27.
  5. The exchange shows 3.40 on the draw. Backing £10 under plain Poisson: 0.2796 × £24 − 0.7204 × £10 ≈ −£0.49. Under Dixon-Coles: 0.3057 × £24 − 0.6943 × £10 ≈ +£0.39, which shrinks to about +£0.25 after 2% commission.

The correction flips the verdict, but the edge after commission is only about 2.5% of stake. That is typical.

Where it's good

  • Match odds, draw, correct score and low totals (under 1.5, under 2.5) in football.
  • Lower leagues where the market is less sharp and data is still plentiful.
  • A well-understood baseline to benchmark fancier models against.
  • Updating ratings weekly with the time decay doing the forgetting for you.

Limitations and pitfalls

  • Published in 1997 and now widely copied. The major Betfair football markets already price in what it knows.
  • Results-based ratings react slowly to injuries, transfers and manager changes. Expected goals inputs help.
  • ρ is one number for the whole league; the true low-score effect may differ by team style.
  • The decay rate ξ is chosen by trial and error, which invites overfitting to your backtest.
  • Promoted teams and the start of a season are weak spots: little relevant data, big uncertainty.
  • It ignores in-match dynamics such as red cards and game state.

How to build it

  • Python: penaltyblog has a ready Dixon-Coles implementation; or write the likelihood and optimise with scipy.optimize.
  • Data: results with dates for two or more seasons; expected goals improves ratings.
  • Tip: choose ξ by walk-forward testing on log loss, never by in-sample fit.
Learn it step by step
18+ only. Educational content, not financial or betting advice. Past results do not guarantee future returns. If gambling stops being fun, get free, confidential help at BeGambleAware.org.
Members