The Poisson model for football predictions
A Poisson model turns two expected-goals numbers into a full matrix of scorelines, and that matrix prices every market at once — 1X2, over/under, both teams to score, correct score. Formulas, a worked example, and the three places it breaks.
A Poisson model assumes each team's goals arrive independently at a constant rate. Feed it two expected-goal values and it produces the probability of every scoreline. Summing the right cells of that matrix gives every market: home win, over 2.5, both teams to score, correct score — all from one distribution, all mutually consistent by construction.
The formula and what the inputs mean
The Poisson probability of exactly k goals from a team whose expectation is λ (lambda):
P(k goals) = (λ^k × e^−λ) / k!e ≈ 2.71828; k! is k factorial (0! = 1).With independence assumed between sides, the probability of an exact scoreline is the product of the two:
P(home = i, away = j) = P_home(i) × P_away(j)The two lambdas are the model. Everything downstream is bookkeeping. In the simplest specification, λ_home combines the home side's attack strength, the away side's defensive strength, the league's baseline scoring rate and a home-advantage term.
A worked example
Take λ_home = 1.60 and λ_away = 1.10. Individual goal probabilities:
| Goals | Home (λ=1.60) | Away (λ=1.10) |
|---|---|---|
| 0 | 20.19% | 33.29% |
| 1 | 32.30% | 36.62% |
| 2 | 25.84% | 20.14% |
| 3 | 13.78% | 7.38% |
| 4 | 5.51% | 2.03% |
| 5+ | 2.37% | 0.53% |
The scoreline 1–0 has probability 32.30% × 33.29% = 10.75%. Do that for every cell and the matrix is complete. Now every market is a sum over cells:
| Market | Which cells | Result |
|---|---|---|
| Home win | all cells where i > j | ≈ 47.2% |
| Draw | all cells where i = j | ≈ 24.3% |
| Away win | all cells where i < j | ≈ 28.5% |
| Over 2.5 goals | all cells where i + j ≥ 3 | ≈ 51.6% |
| Both teams to score | all cells where i ≥ 1 and j ≥ 1 | ≈ 53.2% |
This is the property that matters. The 1X2 probabilities and the over/under probabilities come from the same matrix, so they cannot disagree. Models that estimate each market separately routinely produce a set of prices that imply two different games.
Where the Poisson model breaks
- Draws are underestimated. Independent Poisson systematically under-predicts 0–0, 1–1 and other level scorelines. The error is well documented and is the reason the Dixon–Coles correction exists — see Dixon–Coles explained.
- Goals are not independent. A team that goes 2–0 up changes how it plays. Real matches contain state; the model contains none.
- The rate is not constant. Poisson assumes a constant hazard across ninety minutes. Actual scoring rates rise late in halves and change after red cards.
- Nothing outside the two lambdas exists. Line-ups, travel, motivation, weather and referee are either folded into the lambdas or absent entirely.
The honest framing: a Poisson matrix is a coherent price map, not a simulation of football. Its value is that it makes every market consistent with one belief about the game. Its limits should be stated before, not after, someone asks.
How does CONSENSUS use the Poisson model?
The engine builds a score matrix with a Dixon–Coles correction for football, ice hockey and baseball, and uses a continuous distribution for basketball, American football and rugby, where the margin/total structure fits better than a goal grid. Every published market is a projection of that distribution, so the coherence property holds across the whole line rather than one market at a time.
Sports where we have not built a projection — tennis, volleyball, cricket, motorsport — are collected and classified but not priced, and the engine flags them rather than emitting an approximate number.
Check any of this against our record
Every signal CONSENSUS publishes carries the bookmaker odds fixed before the event starts and the settled result afterwards — including the drawdowns and the losing runs. The running total is on the front page and every entry is in the log.