Using Poisson Distribution for Football Betting: Correct Score & Match Prediction Guide

Learn how to use the Poisson distribution to predict correct scores, build a full probability matrix, calculate over/under and BTTS probabilities, and find value against bookmaker odds.

advanced15 min readLast updated: March 22, 2026Editorial Team
ET

Editorial Team

Betting Expert

Key Takeaways

  • The Poisson distribution converts expected goals (λ) into scoreline probabilities — multiply both teams' individual goal probabilities to get any correct score probability.
  • A full 0–4 × 0–4 probability matrix lets you derive all major markets: 1X2, correct score, over/under, BTTS, and Asian handicap from a single model.
  • Basic Poisson underestimates draws by roughly 20% — the Dixon-Coles correction adjusts 0-0, 1-0, 0-1, and 1-1 probabilities for more accurate draw predictions.
  • Model accuracy on 1X2 predictions typically reaches 45–52%, well above the 33% random baseline, but short-term variance is significant.
  • Use our free Poisson Calculator to generate a full scoreline matrix instantly — no spreadsheet required.

The Poisson distribution is the foundation of most professional football prediction models. It converts two numbers — each team's expected goals — into a complete probability grid covering every possible scoreline. From that single grid you can calculate 1X2 probabilities, correct score odds, over/under percentages, BTTS likelihood, and Asian handicap lines.

This guide walks through the full process: from calculating attack and defence strength ratings, to building a complete 0–4 × 0–4 matrix, to finding value against bookmaker odds.

Want to skip the maths? Use our free Poisson Match Predictor to generate a full matrix instantly.

How the Poisson Formula Works

The Poisson probability mass function:

P(X = k) = (e^-λ × λ^k) / k!

Where:

  • λ (lambda) = the expected number of goals for that team
  • k = the exact number of goals you want the probability for
  • e = Euler's number (≈ 2.718)
  • k! = k factorial (3! = 6, 2! = 2, 1! = 1, 0! = 1)

For a team with λ = 1.5 expected goals:

Goals (k) Calculation Probability
0 e^-1.5 × 1.5^0 / 1 22.3%
1 e^-1.5 × 1.5^1 / 1 33.5%
2 e^-1.5 × 1.5^2 / 2 25.1%
3 e^-1.5 × 1.5^3 / 6 12.6%
4 e^-1.5 × 1.5^4 / 24 4.7%
5+ remainder 1.8%

Step 1: Calculate Attack and Defence Strength

Attack and defence strength ratings normalise each team's performance against the league baseline, making the model applicable to any league.

Formula:

  • Attack strength = team's average goals scored (home or away) ÷ league average goals (home or away)
  • Defence strength = team's average goals conceded (home or away) ÷ league average goals conceded (in that venue)

Premier League 2025/26 league averages: Home goals = 1.45 per match, Away goals = 1.15 per match.

Worked example: Liverpool (home) vs Brighton (away)

Liverpool home stats (19 matches played):

  • Scored 42 goals at home = 2.21 per match → Attack strength = 2.21 / 1.45 = 1.524
  • Conceded 18 goals at home = 0.95 per match → Defence strength = 0.95 / 1.15 = 0.826

Brighton away stats (19 matches played):

  • Scored 17 goals away = 0.89 per match → Attack strength = 0.89 / 1.15 = 0.774
  • Conceded 23 goals away = 1.21 per match → Defence strength = 1.21 / 1.45 = 0.834

Expected goals (λ):

  • λ_Liverpool = Liverpool Attack × Brighton Defence × League Home Avg = 1.524 × 0.834 × 1.45 = 1.84
  • λ_Brighton = Brighton Attack × Liverpool Defence × League Away Avg = 0.774 × 0.826 × 1.15 = 0.74

Step 2: Generate Individual Goal Probabilities

Apply the Poisson formula to each team's expected goals for 0–4 goals:

Liverpool (λ = 1.84):

Goals Probability
0 15.9%
1 29.2%
2 26.9%
3 16.5%
4 7.6%
5+ 3.9%

Brighton (λ = 0.74):

Goals Probability
0 47.7%
1 35.3%
2 13.0%
3 3.2%
4 0.6%
5+ 0.2%

Step 3: Build the Complete Correct Score Matrix

Multiply Liverpool's probability for each goal count by Brighton's probability for each goal count to fill the full grid. Each cell = P(Liverpool score) × P(Brighton score).

Liverpool vs Brighton — Correct Score Probability Matrix (%)

Brighton 0 Brighton 1 Brighton 2 Brighton 3 Brighton 4
Liverpool 0 7.6 5.6 2.1 0.5 0.1
Liverpool 1 13.9 10.3 3.8 0.9 0.2
Liverpool 2 12.8 9.5 3.5 0.9 0.2
Liverpool 3 7.9 5.8 2.1 0.5 0.1
Liverpool 4 3.6 2.7 1.0 0.2 0.0

The cells shown account for approximately 92% of all outcomes. Scores of 5-0 or above (8% combined) are excluded from the table but included in aggregated market calculations.

The most likely scoreline is 1-0 to Liverpool at 13.9% — a typical result when a strong home side faces a weaker away team.

Step 4: Derive Market Probabilities

Sum the relevant cells from the matrix to calculate any betting market:

Match Result (1X2):

  • Home Win (Liverpool): sum all cells where Liverpool score > Brighton score = ~62% → fair odds ≈ 1.61
  • Draw: sum diagonal cells (0-0, 1-1, 2-2, 3-3, 4-4) = ~18% → fair odds ≈ 5.56
  • Away Win (Brighton): sum all cells where Brighton score > Liverpool score = ~13% → fair odds ≈ 7.69

Note: These probabilities sum to ~93% rather than 100% because they are derived from the full Poisson distribution (including 5+ scorelines), while the displayed matrix is truncated at 4 goals. The remaining ~7% is distributed across very-high-scoring outcomes.

Over/Under 2.5 Goals: Sum all cells where total goals ≥ 3 (e.g., 2-1, 3-0, 1-2, 3-1, 2-2, 4-0, etc.):

  • Over 2.5: ~51% → fair odds ≈ 1.96
  • Under 2.5: ~49% → fair odds ≈ 2.04

To calculate Over 1.5 instead, sum all cells where total goals ≥ 2 (includes 1-1, 2-0, 0-2, 2-1, etc.):

  • Over 1.5: ~75% → fair odds ≈ 1.33

Both Teams to Score (BTTS): Sum all cells where Liverpool score ≥ 1 AND Brighton score ≥ 1 (the interior of the matrix, excluding row 0 and column 0):

  • BTTS Yes: 10.3 + 3.8 + 0.9 + 0.2 + 9.5 + 3.5 + 0.9 + 0.2 + 5.8 + 2.1 + 0.5 + 0.1 + 2.7 + 1.0 + 0.2 + 0.0 ≈ 42% → fair odds ≈ 2.38
  • BTTS No: ~58% → fair odds ≈ 1.72

Correct Score (individual cells): Each cell in the matrix is directly the correct score probability. For example:

  • 2-1 to Liverpool = 9.5% → fair odds ≈ 10.5
  • 1-1 = 10.3% → fair odds ≈ 9.7
  • 0-0 = 7.6% → fair odds ≈ 13.2

Step 5: Find Value Against Bookmaker Odds

Convert your Poisson probability to fair decimal odds (1 ÷ probability) and compare to the bookmaker's price.

Value exists when bookmaker odds > your fair odds.

Example using the Liverpool vs Brighton matrix:

Market Poisson Probability Fair Odds Bookmaker Odds Value?
Liverpool Win (1X2) 62% 1.61 1.55 No — bookmaker has edge
1-0 Liverpool 13.9% 7.19 8.00 Yes — 11% edge
2-1 Liverpool 9.5% 10.53 11.00 Yes — 4% edge
1-1 Draw 10.3% 9.71 9.00 No — bookmaker has edge
Over 2.5 Goals 51% 1.96 1.90 No — bookmaker has edge
BTTS Yes 42% 2.38 2.50 Yes — 5% edge

A bet shows positive expected value (EV) when:

EV = (Your Probability × Bookmaker Odds) - 1 > 0

For 1-0 Liverpool: EV = (0.139 × 8.00) - 1 = 0.112 - 1 = +0.112 = +11.2% EV

Model Accuracy and Known Limitations

What the numbers say

Backtesting Poisson on Premier League data over multiple seasons consistently shows:

  • 1X2 accuracy: 45–52% — significantly better than random (33%) but reflecting football's inherent unpredictability
  • Correct score accuracy: ~15–18% on the most likely scoreline — markets are correctly priced most of the time

The draw underestimation problem

Basic Poisson underestimates draws by approximately 20%. In a typical Premier League season, 0-0 draws occur roughly 8–10% of the time, but basic Poisson often predicts only 5–6%. This is because Poisson assumes goals are independent between teams — in practice, a match between two cautious sides creates correlated defensive play that inflates scoreless outcomes.

Other limitations to understand

  • Constant scoring rate: Poisson assumes the same scoring rate throughout 90 minutes. In reality, red cards, fatigue, and match state change scoring dynamics dramatically.
  • No situational factors: Injuries, suspensions, cup finals, dead rubbers, and head-to-head dynamics are not captured by historical averages alone.
  • Sample sensitivity: Short lookback periods (fewer than 8 matches) create noise; long lookbacks (full season) may include stale data from changed form or personnel.
  • Low-scoring leagues struggle more: The model works best in high-scoring leagues (Bundesliga, Eredivisie) and is less reliable in defensive leagues (Serie A, Ligue 1) where scoring rates are lower and variance is higher.

The Dixon-Coles Correction

Statisticians Simon Dixon and Stuart Coles (1997) developed a widely adopted improvement to basic Poisson that specifically addresses draw underestimation.

Two key changes:

  1. Correlation parameter (ρ): A correction factor applied to 0-0, 0-1, 1-0, and 1-1 scorelines. These low-scoring outcomes are where team goal counts are most correlated. The adjustment increases their probability relative to basic Poisson.

  2. Time weighting: Recent matches are weighted more heavily than older ones. A common implementation: weight = e^(-k × days_elapsed), where k is a decay constant. Matches from 3 weeks ago receive roughly 50% weight compared to last week's match.

Practical impact on the Liverpool vs Brighton example:

Scoreline Basic Poisson Dixon-Coles Difference
0-0 7.6% 9.2% +1.6%
1-0 13.9% 15.1% +1.2%
0-1 5.6% 6.4% +0.8%
1-1 10.3% 10.9% +0.6%
2-1 9.5% 9.1% -0.4%
3-0 7.9% 7.5% -0.4%

The overall draw probability rises from ~18% (basic Poisson) to approximately ~21% under Dixon-Coles — closer to historical frequencies.

Poisson vs xG Models

Many bettors ask whether to use actual goals or xG (expected goals from shot quality) as inputs.

Using actual goals (traditional Poisson):

  • Simpler to compute — data is publicly available
  • Includes finishing luck as signal, which may revert over time
  • Better for teams with small sample sizes (cup form, new signings)

Using xG as Poisson inputs:

  • Removes finishing variance — more stable and predictive over 10+ matches
  • Better reflects underlying chance creation quality
  • Requires a data source beyond basic results (Understat, FBref, Opta)

Practical recommendation: Use xG-based inputs where available (Premier League, Bundesliga, La Liga, Serie A, Ligue 1). For lower leagues where xG data is sparse or unreliable, actual goals with a 10–15 match lookback are acceptable.

A hybrid approach — using xG for the current season and supplementing with actual goals from the previous season for newly promoted sides — is common among professionals.

Over/Under and BTTS: Worked Probability Calculations

Over/Under in detail

From the Liverpool vs Brighton matrix, to calculate Over 2.5, you sum all scorelines where Home + Away ≥ 3:

Scorelines contributing to Over 2.5 from the matrix above:

  • Liverpool 2, Brighton 1 (total 3): 9.5%
  • Liverpool 3, Brighton 0 (total 3): 7.9%
  • Liverpool 1, Brighton 2 (total 3): 3.8%
  • Liverpool 0, Brighton 3 (total 3): 0.5%
  • All scorelines with 4, 5, or more total goals: ~29.3%

Over 2.5 total ≈ 51% for this fixture.

By contrast, a match between two average sides (λ_home = 1.45, λ_away = 1.15) would show approximately 42% Over 2.5 — demonstrating how the model correctly rates Liverpool matches as higher-scoring.

BTTS in detail

BTTS Yes = all scorelines where BOTH Liverpool ≥ 1 AND Brighton ≥ 1. This excludes the entire top row (Liverpool 0 goals) and left column (Brighton 0 goals) from the matrix.

From the interior cells: approximately 42% BTTS Yes for Liverpool vs Brighton with these expected goals.

Compare: in a match between two average sides (λ_home = 1.45, λ_away = 1.15), BTTS Yes ≈ 46%. Counterintuitively, Liverpool vs Brighton shows slightly lower BTTS despite Liverpool's attacking strength — because Brighton's low expected goals (0.74) means Brighton often fail to score, reducing joint scoring probability.

Tools for Poisson Modelling

For a complete automated solution, use our free Poisson Match Predictor. Input each team's recent average goals scored and conceded, plus the league average, and get a full probability matrix across all markets in seconds — no spreadsheet or coding required.

If you prefer to build your own model:

  • Excel / Google Sheets: use =POISSON.DIST(k, lambda, FALSE) to calculate individual cell probabilities
  • Python: from scipy.stats import poisson; poisson.pmf(k, lambda) for individual values, or generate a full matrix with nested loops
  • R: dpois(k, lambda) for single values; outer(dpois(0:5, lambda_home), dpois(0:5, lambda_away)) for a matrix in one line

Frequently Asked Questions

What is the Poisson distribution in football betting?+
The Poisson distribution is a mathematical formula that calculates the probability of a specific number of goals occurring in a match, given a known average rate (expected goals). If a team is expected to score 1.8 goals, Poisson calculates the exact probability of 0, 1, 2, 3, or more goals. Multiplying both teams' probabilities gives you a complete correct score probability matrix.
How accurate is the Poisson model for football predictions?+
Backtesting consistently shows 45–52% accuracy on 1X2 predictions — well above the 33% random baseline but reflecting football's inherent unpredictability. Correct score and over/under markets are where Poisson adds the most value. The model underestimates 0-0 draws by roughly 20%; the Dixon-Coles correction largely fixes this.
How do I build a correct score probability matrix?+
Calculate each team's expected goals (λ) using attack strength, defence strength, and league averages. Then apply the Poisson formula P(k) = (e^-λ × λ^k) / k! for 0–5 goals per team. Multiply each team's goal probability to fill a grid: P(Home=2, Away=1) = P(H=2) × P(A=1). Sum rows, columns, and diagonals to derive 1X2, over/under, and BTTS probabilities.
What is the Dixon-Coles correction?+
Dixon-Coles is an improvement to basic Poisson developed in 1997 that corrects the systematic underestimation of low-scoring matches. It adds a correlation parameter (ρ) applied specifically to 0-0, 0-1, 1-0, and 1-1 scorelines, where goals are least independent. It also weights recent matches more heavily. The result: draw underestimation drops from ~20% to ~5%.
What markets work best with Poisson modelling?+
Correct score, 1X2 (match result), over/under goals, and both teams to score markets all respond well to Poisson. Asian handicap markets are also well-suited. Correct score is the highest-value market because bookmakers price dozens of outcomes simultaneously and small mispricing is common. Player-specific markets (anytime goalscorer, assists) require different models.
Where can I use a Poisson calculator without building a spreadsheet?+
Betmana's free Poisson Match Predictor at /tools/poisson-predictor/ takes each team's average goals scored and conceded, plus league averages, and generates a full probability matrix covering all major betting markets instantly.

Bet Responsibly

Gambling should be fun. If it stops being fun, get help: BeGambleAware, GamStop

Using Poisson Distribution for Football Betting: Correct Score & Match Prediction Guide | Betmana - Sports Data & Analytics