Advanced guide · 5 min read
The Poisson betting model, step by step
The Poisson distribution is the classic starting point for modelling football scores. In four steps you get from two teams' scoring records to a full score matrix and fair odds for home, draw, away and over/under 2.5 goals. This guide works through one match with real numbers, shows where the model goes wrong, and explains why a sharp bookmaker's price usually beats it.
Updated 22 October 2026
Contents
What the Poisson distribution does
The Poisson distribution describes how often a rare event happens in a fixed period when you know its average. Goals in football fit that well: they are rare, and every team has an average per match. The statistician Michael Maher showed in 1982 that football scores can be described reasonably well this way.
P(k goals) = λk × e−λ ÷ k!
λ (lambda) is the expected number of goals, k the number of goals, e ≈ 2.718, and k! means "k factorial" (3! = 3 × 2 × 1 = 6). In Excel you calculate it with =POISSON.DIST(k, λ, FALSE); in Python with scipy.stats.poisson.pmf(k, λ).
Step 1: estimate expected goals
The classic method compares each team with the league average. Suppose a league averages 1.60 home goals and 1.25 away goals per match.
- Home team: scores 1.80 goals per home match. Attack strength = 1.80 ÷ 1.60 = 1.125.
- Away team: concedes 1.42 goals per away match. Defence weakness = 1.42 ÷ 1.60 = 0.8875.
- Expected home goals: 1.125 × 0.8875 × 1.60 ≈ 1.60.
- Away team: scores 1.10 goals per away match, attack strength 1.10 ÷ 1.25 = 0.88. Home team concedes 1.25 per home match, defence weakness 1.25 ÷ 1.25 = 1.00.
- Expected away goals: 0.88 × 1.00 × 1.25 = 1.10.
Instead of actual goals you can use expected goals (xG). They are less affected by luck, so many modellers treat them as a better measure of team strength.
Step 2: goal probabilities
With λ = 1.60 and λ = 1.10, put k = 0, 1, 2, … into the formula:
| Goals | Home team (λ = 1.60) | Away team (λ = 1.10) |
|---|---|---|
| 0 | 20.2% | 33.3% |
| 1 | 32.3% | 36.6% |
| 2 | 25.8% | 20.1% |
| 3 | 13.8% | 7.4% |
| 4 | 5.5% | 2.0% |
| 5 | 1.8% | 0.4% |
Step 3: the score matrix
The basic model assumes the two teams' goals are independent. The probability of a scoreline is then the product: 1–0 = 32.3% × 33.3% = 10.8%. That gives a matrix (rows: home goals, columns: away goals):
| Home \ Away | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 0 | 6.7% | 7.4% | 4.1% | 1.5% |
| 1 | 10.8% | 11.8% | 6.5% | 2.4% |
| 2 | 8.6% | 9.5% | 5.2% | 1.9% |
| 3 | 4.6% | 5.0% | 2.8% | 1.0% |
In practice you go up to about 10 goals per team so that the total comes close to 100%. The single most likely score here is 1–1 at 11.8%.
Step 4: fair odds
Now add up the matching cells:
- Home win: all cells below the diagonal = 49.0%, fair odds 1 ÷ 0.490 = 2.04
- Draw: the diagonal (0–0, 1–1, 2–2, …) = 24.9%, fair odds 4.02
- Away win: all cells above the diagonal = 26.2%, fair odds 3.82
- Under 2.5 goals: every score with at most 2 goals = 49.4%, fair odds 2.03; over 2.5 = 50.6%, fair odds 1.97
Fair odds contain no margin. To compare them with real prices you first remove the margin from those prices, as explained in no-vig fair odds.
The limits of the model
- Draws are underestimated. The two teams' goals are not fully independent: behaviour changes when the score is close. Dixon and Coles (1997) therefore added a correction for 0–0, 1–0, 0–1 and 1–1. Karlis and Ntzoufras (2003) use a bivariate Poisson distribution with a shared component.
- The past is not the present. Season averages react slowly. Dixon and Coles weight recent matches more heavily.
- No team news. An injured key player, rotation before a European tie, a new coach: the model knows nothing about them; the market does.
- Small samples. Ten home matches are not many. A single 5–0 shifts the average a lot.
- Different schedules. A team that has just played the three strongest sides looks weaker than it is.
Model against market
Suppose a low-margin bookmaker offers 2.10 / 3.50 / 3.70 for our match. With the margin removed (the prices add up to 103.2%) that corresponds to 46.1% / 27.7% / 26.2%. Your model says 49.0% for the home win. Is 2.10 a bargain?
Probably not. Almost the whole gap sits in the draw: the model gives it 24.9%, the market 27.7%. That is exactly the known weakness of the basic model. The market, on the other hand, processes line-ups, weather, motivation and the money of many well-informed bettors. In major leagues, sharp bookmakers' prices shortly before kick-off are hard to beat (see how efficient betting markets are).
If you want to test a model seriously, compare your bets with the closing price, the closing line value, over hundreds of matches. How to build and test a model properly is covered in how to build a betting model. Our honest view: the Poisson model is an excellent tool for understanding odds. As the only basis for betting it is rarely enough.
The alternative: sure bets need no forecast
A model tries to estimate probabilities better than the market. A sure bet doesn't need that: it only uses the fact that two or three bookmakers price the same outcome differently. When the best prices together add up to less than 100%, you cover every outcome and the result of the match no longer matters, as long as all bets stand at the planned odds. That has risks too: prices change, bets get voided and bookmakers limit accounts. But you don't have to predict any match.
Frequently asked questions
How do you use the Poisson distribution for football betting?
Estimate the expected goals for each team, calculate the probability of 0, 1, 2 and more goals for each, multiply them into a score matrix and add up the cells for home win, draw, away win or over and under. One divided by each probability gives the fair odds.
How accurate is the Poisson model?
It is a reasonable first approximation, but the basic version underestimates draws and ignores team news. That is why researchers such as Dixon and Coles added corrections. Against sharp closing prices in major leagues it rarely has an edge.
Can I build a Poisson model in Excel?
Yes. The function POISSON.DIST(k, lambda, FALSE) gives the probability of exactly k goals. Two columns of goal probabilities and one multiplication table are enough for the score matrix.
Do I need a model for sure betting?
No. A sure bet uses price differences between bookmakers and covers every outcome, so it needs no forecast. It still carries risks such as price changes, voided bets and account limits.
Sources
- Maher, M. J. (1982): Modelling association football scores. Statistica Neerlandica 36(3), 109–118.
- Dixon, M. J. and Coles, S. G. (1997): Modelling association football scores and inefficiencies in the football betting market. Journal of the Royal Statistical Society, Series C 46(2), 265–280.
- Karlis, D. and Ntzoufras, I. (2003): Analysis of sports data by using bivariate Poisson models. Journal of the Royal Statistical Society, Series D 52(3), 381–393.
- Microsoft Support: POISSON.DIST function (Excel)
As of October 2026. The match and the prices in this guide are illustrations; the probabilities are calculated with the stated averages.
Not betting, legal or tax advice. 18+. Betting involves risk and no profit is guaranteed: odds change, bets get voided and accounts get limited. Only bet money you can afford to lose. Our responsible gambling page lists free help, and the disclaimer applies.