How we use Poisson distribution to predict the most likely scorelines in any football match — with worked examples and real probability tables.
When you see a probability like "Over 2.5 Goals: 62%" on ProSoccer, it didn't come from gut feeling or historical win/loss counts alone. It came from the Poisson distribution — a mathematical model that describes how often a random event (like a goal) occurs in a fixed time window.
The Poisson distribution answers one question: if an event happens on average λ times, what is the probability it happens exactly k times?
Where e ≈ 2.718, λ is the expected number of events (expected goals), and k is the number of events we're predicting (actual goals scored).
Before applying Poisson, we need the expected number of goals each team will score. We start with league averages:
| Metric | Value |
|---|---|
| Premier League avg goals per match (home) | 1.51 |
| Premier League avg goals per match (away) | 1.23 |
Then we calculate each team's attack and defence strength:
Expected goals for Man City at home vs Arsenal away:
With λhome = 1.53 and λaway = 1.10, we calculate P(k) for each team scoring 0, 1, 2, 3… goals:
| Goals | P(City) | P(Arsenal) |
|---|---|---|
| 0 | 21.6% | 33.3% |
| 1 | 33.1% | 36.6% |
| 2 | 25.3% | 20.1% |
| 3 | 12.9% | 7.4% |
| 4+ | 7.1% | 2.6% |
Each scoreline probability = P(City scores X) × P(Arsenal scores Y). For example:
By summing scoreline probabilities we get market odds:
Goals in football are rare, independent events — a goal at minute 10 doesn't make a goal at minute 60 more or less likely. This independence is the core assumption of the Poisson model, and football satisfies it reasonably well. Studies using decades of match data from the Premier League, La Liga, Bundesliga and Serie A show Poisson models produce well-calibrated probabilities, especially for Over/Under and correct score markets.
Pure Poisson ignores in-match context: red cards, injuries, weather, tactical shifts. At ProSoccer, our model layers xG data and live Pressure Index on top of the Poisson base — adjusting λ in real time as the match progresses. This is why our live predictions update every 15 seconds rather than being static pre-match numbers.
See Poisson probabilities live for today's matches →
Today's AI Predictions