← Blog · Methodology Series

Bayesian Poisson Models for Football Score Prediction

Published: June 2026 · 7 min read

At the heart of FootballMoney's prediction engine is a Bayesian hierarchical Poisson model — the same class of models that Dixon and Coles introduced to football analytics in 1997. With 53.0% accuracy across 15,292 matches, it remains our strongest single predictor.

1. Why Poisson for Football?

Football goals are rare, discrete, non-negative events that occur at a roughly constant average rate over a fixed 90-minute period. The Poisson distribution is the natural choice: it models the probability of observing exactly k goals given an expected rate λ.

P(Goals = k) = (λk × e−λ) / k!

λ = expected goals (e.g. 1.5), k = actual goals (0, 1, 2, ...)

For a match between Team A at home and Team B away, the expected goal rates are:

λhome = baseline × exp(attackA − defenseB + home_advantage)
λaway = baseline × exp(attackB − defenseA)

The key insight: each team has an attack strength (how many goals they score above average) and a defense strength (how many they concede below average). The expected goals in a match is the product of the attacking team's attack strength and the defending team's defensive weakness.

2. The Bayesian Advantage: Priors

A pure Poisson model would estimate attack/defense parameters from data alone. But early in a season — or for newly promoted teams — data is sparse. This is where the Bayesian approach shines: we don't start from zero.

Instead, we place prior distributions on each parameter. For a newly promoted Championship side, the prior says: "You're probably about one standard deviation below the Premier League average in attack, with moderate uncertainty." The model starts skeptical and gets more confident as match data accumulates.

Conjugate Prior: Gamma-Poisson

We use a Gamma(α, β) prior for the goal rate λ. The Gamma distribution is the conjugate prior for the Poisson — meaning the posterior after observing data is also a Gamma distribution. This makes updating computationally efficient: after observing G goals in N matches, the posterior is simply Gamma(α + G, β + N).

3. Hierarchical Structure

Our model is hierarchical: parameters aren't estimated independently for each team. Instead, league-level hyperparameters define the distribution from which individual team parameters are drawn. This provides partial pooling — teams "borrow" information from the league average when their own data is thin.

Three-Level Hierarchy

  1. Global level: overall goal rate across all leagues (~2.7 goals/match)
  2. League level: league-specific baseline (Bundesliga ~3.1 goals/match, Serie A ~2.6)
  3. Team level: team-specific attack/defense deviations from league baseline

4. From Goals to Win/Draw/Loss Probabilities

Once we have λhome and λaway, we can compute the probability of every possible scoreline:

P(Score = i−j) = Poisson(i | λhome) × Poisson(j | λaway)

Then sum over all scorelines:

We cap i and j at 10 goals each (101 scorelines) since the probability of >10 goals is vanishingly small (< 0.01%).

5. The Low-Scoring Correlation Fix

A naive assumption is that home and away goals are independent — but real football shows a slight negative correlation at low scores. 0-0 and 1-1 draws occur more often than the independent Poisson model predicts, while 1-0 and 0-1 results are slightly less frequent.

We apply the Dixon-Coles correction: a parameter ρ that adjusts the probability of low-scoring outcomes (0-0, 1-0, 0-1, 1-1) to match empirical frequencies. This correction improves Brier score by approximately 0.005 — small but meaningful over thousands of predictions.

Pcorrected(i,j) = PPoisson(i,j) × τρ(i,j)

τ adjusts only i,j ∈ {0,1} scorelines; all others remain unchanged.

6. Why Ensemble Beats Single Models

Our Bayesian Poisson achieves 53.0% accuracy — but the ensemble (48.7%) has better calibration (Brier 0.190 vs 0.205). Why?

The Bayesian Poisson model is optimistic — it produces sharp, confident probability estimates that are right more often but wrong more confidently when wrong. The Gradient Boosted model (GB-RF) is more conservative, spreading probability across all three outcomes. Averaging them produces the best of both worlds: well-calibrated probabilities that neither over- nor under-estimate certainty.

For value betting, calibration matters more than accuracy. A model that says 55% and is right 55% of the time is far more useful than one that says 70% and is right 55% of the time — because the first enables accurate EV calculation and the second doesn't.

Continue Reading

Previous: How ELO Ratings Work in Football
Next: Kelly Criterion: The Mathematics of Optimal Bet Sizing — how to turn model probabilities into profitable position sizes.