Arte SheetsLearn. Try. Understand.

Sports Analytics & Quantitative Modeling

Skellam Goal Difference & Dixon-Coles Tau Formula

Calculate Skellam Poisson Goal-Difference Mean (lambda_H - lambda_A) and Variance (lambda_H + lambda_A), plus Dixon & Coles (1997) low-scoring correlation adjustment for 0-0 and 1-1 soccer draws.

Correct independent Poisson under-prediction of 0-0 and 1-1 draws while preserving unit probability!

When Home Goals X ~ Poisson(lambda_H) and Away Goals Y ~ Poisson(lambda_A) are modeled independently, Goal Difference D = X - Y follows John Gordon Skellam’s (1946) distribution with Mean E[D] = lambda_H - lambda_A and Variance Var(D) = lambda_H + lambda_A (a frequent rookie mistake is subtracting variances instead of adding them!). Yet Mark Dixon and Stuart Coles (1997, Royal Statistical Society) proved empirically that Premier League matches exhibit tactical low-score dependence (rho < 0): 0-0 and 1-1 draws occur significantly MORE often than independent Poisson predicts, while 1-0 and 0-1 occur slightly less often! Their exact probability-preserving multiplier tau_{x,y}(rho) scales (0,0) by (1 - lambda_H * lambda_A * rho), (1,0) by (1 + lambda_A * rho), (0,1) by (1 + lambda_H * rho), and (1,1) by (1 - rho)—so the four probability shifts (-lambda_H*lambda_A*rho + lambda_H*lambda_A*rho + lambda_H*lambda_A*rho - lambda_H*lambda_A*rho)*e^{-(lambda_H+lambda_A)} cancel to ZERO!

Verify on Home_xG lambda_H = 1.50 (B2), Away_xG lambda_A = 1.00 (B3), and Dependence_Parameter rho = -0.12 (B4): Skellam Mean Goal Difference is 1.50 - 1.00 = +0.50 goals, Skellam Variance is 1.50 + 1.00 = 2.50 goals^2 (SD = 1.5811), Independent 0-0 Probability EXP(-2.50) = 0.0821 (8.21%) rises to Dixon-Coles P_DC(0,0) = 0.082085 * (1 - 1.5 * 1.0 * (-0.12)) = 0.082085 * 1.18 = 0.0969 (9.69%), and P_DC(1,1) rises by 1 - (-0.12) = 1.12x to 0.1379 (13.79%)! Enforce positivity bounds MAX(-1/lambda_H, -1/lambda_A) <= rho <= MIN(1/(lambda_H*lambda_A), 1) so no scoreline probability ever turns negative!

Soccer Scoreline Metric (lambda_H=1.50, lambda_A=1.00, rho=-0.12)FormulaVerified Output
Skellam Goal-Diff Variance Var(X - Y)lambda_H + lambda_A2.5000 (Mean = +0.5000)
Independent Poisson P(0 - 0)EXP(-(lambda_H + lambda_A))0.0821 (8.21%)
Dixon-Coles Adjusted P_DC(0 - 0)EXP(-(lH + lA)) * (1 - lH * lA * rho)0.0969 (9.69%, +18.0% Lift)
Dixon-Coles Adjusted P_DC(1 - 1)lH * lA * EXP(-(lH + lA)) * (1 - rho)0.1379 (13.79%, +12.0% Lift)

Feasibility-Guarded Dixon-Coles P(0-0) & P(1-1) Formula

Check all four tau positivity conditions at once: 1 - lambda_H*lambda_A*rho >= 0, 1 + lambda_H*rho >= 0, 1 + lambda_A*rho >= 0, and 1 - rho >= 0!

=LET(lm_h, B2, lm_a, B3, rh_d, B4, IF(OR(lm_h <= 0, lm_a <= 0, 1 - lm_h * lm_a * rh_d < 0, 1 + lm_h * rh_d < 0, 1 + lm_a * rh_d < 0, 1 - rh_d < 0), "Invalid Dixon-Coles Bound", ROUND(EXP(-(lm_h + lm_a)) * (1 - lm_h * lm_a * rh_d), 4)))

Dixon-Coles P(1-1) & Zero-Dependence Independence Check

Set rho = 0 in cell B4 to verify exact collapse back to independent Skellam/Poisson probabilities!

=IF(ISTEXT(E4), E4, ROUND(B2 * B3 * EXP(-(B2 + B3)) * (1 - B4), 4))

Try the example

Use the original values or change them to test your understanding.

Further reading