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) | Formula | Verified Output |
|---|---|---|
| Skellam Goal-Diff Variance Var(X - Y) | lambda_H + lambda_A | 2.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.