The Poisson Score Model, Explained
After reading this you can turn two expected-goals numbers into full match odds: win, draw, loss, the most likely exact scores, over/under 2.5 and both teams to score, and you will know when the plain Poisson model needs the Dixon-Coles fix.
What the model does
Give the model two numbers: how many goals the home team is expected to score and how many the away team is expected to score. It treats each team's goal count as a random draw from a Poisson distribution centered on that expected value, then multiplies the two distributions together to get the probability of every scoreline from 0-0 up to about 10-10.
Take the tool defaults: home expected goals 1.8, away expected goals 1.1. Plain Poisson turns that into a home win probability of about 52.6%, a draw of about 25.2% and an away win of about 22.2%. The single most likely scoreline is 1-0 at about 10.9%, closely followed by 2-1 and 1-1. Those three numbers came from nothing but the two inputs and one formula.
The expected-goals inputs are yours to supply. You can pull them from a shot-based xG model, or estimate them from a team's average goals scored and conceded. The model does not judge where the numbers come from. It only propagates them into scoreline probabilities.
When to use it, and when not
Use it when you have a credible pair of expected-goals numbers and you want a coherent set of match probabilities that all agree with each other. Because it builds every market from one scoreline grid, your win/draw/loss split, your over/under line and your both-teams-to-score number can never contradict one another. That internal consistency is the main reason the model has been the analytics baseline since the 1990s.
Do not use it to model a single specific match as if the score were certain. It is a distribution, not a prediction. A home expected goals of 1.8 does not mean the home team scores 1.8 goals; it means their goal count averages 1.8 over many identical matches, and any single game can land anywhere from 0 to 5 or more.
The model assumes the two teams' goal counts are independent and that each team's scoring rate is constant across the 90 minutes. Both assumptions are approximate. Red cards, a team chasing a late equalizer and score-dependent tactics all break them. Treat the output as a well-calibrated baseline, not the last word.
The Poisson formula and why goals fit it
The Poisson distribution gives the probability of seeing exactly k events when events happen at a steady average rate and independently of each other.
Here \lambda is the expected number of events (the expected goals), k is a specific goal count, e is about 2.71828, and k! is k factorial. Goals fit this shape reasonably well because a match is many short intervals in which a goal is rare and roughly independent of the last one. That is exactly the setup Poisson describes.
For the full match, assume the two teams' goal counts are independent. The probability of an exact scoreline (h, a) is then the product of two Poisson terms:
where \lambda_H and \lambda_A are the home and away expected goals. Add up the cells where h \gt a for the home win, h = a for the draw, and h \lt a for the away win.
Reproducing the demo: 1.8 versus 1.1
Set home expected goals to 1.8 and away to 1.1, correction none, and press Calculate. Here is where the headline numbers come from.
- Home goal probabilities from \lambda_H = 1.8:
P(0)=0.1653,P(1)=0.2975,P(2)=0.2678,P(3)=0.1607. - Away goal probabilities from \lambda_A = 1.1:
P(0)=0.3329,P(1)=0.3662,P(2)=0.2014,P(3)=0.0738. - Score
1-0: 0.2975 \times 0.3329 = 0.0990, about9.9%. Score2-1: 0.2678 \times 0.3662 = 0.0981. Score1-1: 0.2975 \times 0.3662 = 0.1090, the single most likely result. - Sum every cell with more home goals than away goals: home win \approx 0.526. Sum the equal-score diagonal: draw \approx 0.252. The rest: away win \approx 0.222.
- Over 2.5 goals means three or more total. Summing those cells gives about
0.556, so under 2.5 is about0.444. Both teams to score is about0.556.
The three outcome probabilities add to 1.000, as they must, once you include the tiny tail of high scores past what is listed above.
The Dixon-Coles low-score correction
Plain Poisson has one known bias. When researchers compared it to thousands of real matches (Dixon and Coles 1997, Karlis and Ntzoufras 2003), they found it slightly underrates 0-0 and 1-1 draws and slightly overrates 1-0 and 0-1. Real goal counts are a touch positively correlated at the low end, which independence cannot capture.
Dixon and Coles patched exactly four cells with a multiplier \tau controlled by one parameter \rho:
Multiply each of those four Poisson cells by its \tau and leave every other scoreline untouched. With \rho \lt 0, the 0-0 and 1-1 cells grow and the 1-0 and 0-1 cells shrink. League fits usually land between -0.05 and -0.15; the original paper estimated about -0.06.
The correction is built to be close to zero-sum. Because it moves probability between draws and single-goal wins in the same low-score corner, over/under 2.5 goals barely moves and each team's total goal distribution stays essentially Poisson. What shifts is the draw-versus-win split, which is exactly what you want.
Reading and interpreting the output
The scoreline grid is the raw object; everything else is a sum over cells. Read it in this order.
- Win / draw / loss
- The three regions of the grid. With
1.8versus1.1they are about52.6%,25.2%,22.2%. These are your 1X2 odds. - Most likely scoreline
- The single largest cell. Here it is
1-1at10.9%. Note the most likely exact score can be a draw even when the home team is a clear favorite, because favorite wins spread their probability across many scorelines. - Over/under 2.5
- Sum of all cells with a total of 3 or more goals versus 2 or fewer. Here over is about
55.6%. - Both teams to score
- Sum of all cells where both counts are at least 1. Here about
55.6%as well.
A useful sanity check: the home win, draw and away win must add to 1, and the single most likely score is almost never above about 12% in a normal match. If a scoreline shows 30%, your expected goals are unrealistically low.
Common mistakes
The errors below are the ones that most often produce numbers that look wrong.
- Confusing expected goals with a predicted score. An input of
1.8is an average, not a forecast of 1.8 goals in this game. - Feeding in full-strength xG for a match that will not be full-strength. An early red card or a resting star means your \lambda is stale. The model cannot know that.
- Setting \rho too large in magnitude. Values past -0.2 distort the low-score cells beyond anything the data supports and can even push a cell negative in extreme cases.
- Reading the most likely scoreline as "the result". At
10.9%, the top score is wrong almost 9 times out of 10. It is the mode, not a call. - Expecting the correction to change totals. Over/under 2.5 stays near
55.6%with or without Dixon-Coles. If you want a different total, change the expected goals, not \rho.
Related tools
This model gives you a single-match win probability. To carry that number forward:
- Turn ratings into expected goals or an expected score with the Elo Rating Calculator.
- Simulate a whole table from per-match odds with the League Season Simulator.
- Take a single-game win probability into a series with the Playoff Series Probability Calculator.
- If the match is level after normal time, estimate the shootout with the Penalty Shootout Probability Calculator.
For other sports whose scoring runs point by point rather than as goal counts, see the Tennis Match Probability Calculator, the Volleyball Match Probability Calculator, the Table Tennis Match Probability Calculator, the Badminton Match Probability Calculator and the Squash Match Probability Calculator.
Frequently asked questions
How accurate is the Poisson score model?
For win/draw/loss splits it is well calibrated across large samples, within a couple of percentage points of observed frequencies when the expected goals are good. Its known weakness is at the very lowest scores, which is what Dixon-Coles repairs. The bigger error source is almost always your expected-goals inputs, not the distribution.
Where do I get the expected-goals numbers?
Two common routes: a shot-based xG model that sums the chance quality of every shot, or a simple estimate from a team's average goals scored and conceded adjusted for the opponent. Either way the model takes your two numbers as given.
What value of rho should I use?
If you have not fitted your own, start near -0.06, the original Dixon-Coles estimate. League fits typically fall between -0.05 and -0.15. Larger magnitudes are rarely justified.
Why is the most likely score a draw when one team is favored?
Because a favorite's win probability is spread over many scorelines (2-1, 3-1, 2-0, 3-2 and so on), while draws concentrate on a few (0-0, 1-1, 2-2). A single draw cell can outrank any single win cell even when total win probability is much higher. At 1.8 versus 1.1, 1-1 tops the grid despite a 52.6% home win.
Does the correction change over/under or both-teams-to-score?
Almost not at all. The correction moves probability inside the low-score corner between draws and single-goal wins. Over/under 2.5 stays near 55.6% and each team's goal distribution stays Poisson. Only the draw-versus-win split shifts.