The Poisson distribution is the workhorse of soccer betting models — and a useful tool for hockey and MLB run projections too. It captures the statistical fact that scoring events (goals, runs) happen at a roughly constant rate, independently of each other, in low-scoring sports. Plug an expected scoring rate into the Poisson formula and you get a probability distribution over every possible final score — from which win, draw, loss, and total-goal probabilities all fall out. This guide covers how the model works, when it's accurate (and when it isn't), and how to apply it.
If you're trying to model a soccer match's final score — or a hockey game's goal total, or an MLB game's run line — the Poisson distribution is the right tool. It captures the statistical structure of rare, independent, roughly-constant-rate scoring events better than any other simple model. The math is straightforward once you've seen it, and the model output translates directly into the probability inputs every betting decision needs.
Poisson describes the probability of observing exactly k events when events arrive at a constant rate λ per unit time:
P(X = k) = (e−λ × λk) / k!
Where λ is the expected number of events (e.g., expected goals scored by one team in a match), and k is the specific count you're asking about (the team's actual final score).
Concrete example: a soccer team has an expected 1.8 goals (λ = 1.8). The probability they score exactly 0 goals: P(X=0) = e−1.8 × 1.8⁰ / 0! = 0.165 × 1 / 1 = 16.5%. The probability of exactly 1 goal: P(X=1) = e−1.8 × 1.8 / 1 = 0.165 × 1.8 = 29.7%. The probability of exactly 2: P(X=2) = e−1.8 × 1.8² / 2 = 0.165 × 3.24 / 2 = 26.7%. And so on up the distribution.
For a complete match, you compute the same distribution for the away team (with its own λ) and then form the joint distribution by multiplying Phome(h) × Paway(a) across every (h, a) pair. The joint distribution gives you everything: win/draw/loss probabilities by summing the appropriate cells, over/under at any total by summing cells where h+a exceeds the line, and so on.
A home team with 1.8 expected goals vs an away team with 1.2 expected goals (typical mid-table-vs-mid-table soccer match where the home team is a slight favorite). Build the joint distribution:
| Home Score | vs 0 | vs 1 | vs 2 | vs 3 | vs 4+ |
|---|---|---|---|---|---|
| 0 | 5.0% | 6.0% | 3.6% | 1.4% | 0.4% |
| 1 | 9.0% | 10.8% | 6.5% | 2.6% | 0.8% |
| 2 | 8.1% | 9.7% | 5.8% | 2.3% | 0.7% |
| 3 | 4.8% | 5.8% | 3.5% | 1.4% | 0.4% |
| 4+ | 2.5% | 3.0% | 1.8% | 0.7% | 0.2% |
Summing the cells where the home score > away score: P(home win) ≈ 51.4%. Summing where away > home: P(away win) ≈ 25.4%. Summing the diagonal: P(draw) ≈ 23.1%. Most likely scoreline: 1–1 at 10.8%. Probability of more than 2.5 total goals: sum cells where h+a ≥ 3 ≈ 57.7%.
Compare to book pricing. If the book is offering home ML at +110 (implied 47.6%, lower than your 51.4%) and over 2.5 at −120 (implied 54.5%, lower than your 57.7%), both sides have measurable edge. If it's offering home ML at −180 (implied 64.3%, higher than your 51.4%), the home ML is over-priced and the value is on the underdog. The Poisson model gives you the comparison number.
The Poisson model rests on three assumptions:
Where Poisson works well: soccer (excellent), hockey (good), MLB run projections (reasonable). Where it doesn't: football (poor), basketball (poor), tennis (poor — scoring is discrete games/sets, not continuous events). For the sports where Poisson works, it captures most of the structural variance with one input parameter per team (λ).
Empirically, pure Poisson slightly under-predicts the joint probability of low-score outcomes in soccer — 0–0, 1–0, 0–1, and 1–1 happen more often than independent Poisson goal counts would suggest. The reason: there's a small but real correlation between home and away goals in tight matches (when neither team scores early, both teams play more cautiously; when one team scores early, the other pushes for an equalizer, etc.).
Dixon and Coles (1997) introduced a correction factor that adds a small mass to those low-score cells and subtracts a small mass from off-diagonal cells. The result: better fit to empirical soccer scores at low totals, especially for the draw market. Most commercial soccer betting models use Dixon-Coles rather than pure Poisson.
For retail betting use, pure Poisson is close enough — the Dixon-Coles correction shifts probabilities by 1–2 percentage points on low-score cells. If you're betting soccer draw markets or sub-2.5 totals at significant volume, applying the Dixon-Coles adjustment is worth it. For routine usage on 1X2 markets and 2.5/3.5 totals, basic Poisson is the cleaner and easier choice.
The Poisson model is only as accurate as the λ inputs you feed it. Bad expected-goals estimates produce bad probability distributions. Three approaches to estimating λ in soccer:
For hockey, the equivalent of xG is "expected goals" derived from shot quality models (Corsi-adjusted or similar). For MLB, the equivalent is projected runs derived from lineup/pitcher matchup models. Each sport has its own preferred λ-estimation methodology.
Once you have a Poisson-derived probability for every market (home win, draw, away win, total over/under at every line), the comparison to book prices is mechanical:
The Poisson Calculator on this site shows the full output for any pair of λ values — home win, draw, away win, over/under at any line, and the top 6 most likely scorelines. Feed in your xG estimates and you have everything you need to compare against the book.
Poisson is a probability distribution that describes the number of independent events occurring in a fixed time window when those events happen at a roughly constant average rate. Goals scored in a soccer match, runs in a baseball game, or rare events per hour all fit Poisson well. The formula: P(X = k) = (e^(-λ) × λ^k) / k!, where λ is the expected rate and k is the count you're asking about.
Soccer goals are rare, roughly independent, and happen at a fairly constant rate within a match. These three properties — rare, independent, constant rate — are exactly the conditions Poisson models well. Empirically, soccer goal counts across professional leagues fit a Poisson distribution within 1-2% accuracy, which is why nearly every commercial soccer betting model uses Poisson as its base.
Not well. NFL touchdowns are clustered (a single play scores 6-8 points) and possessions are correlated (driving down the field is sequential). Basketball scoring is correlated with pace (slow games vs fast games) and event frequency. The independence and constant-rate assumptions break in both sports. Normal-distribution models (margin = expected ± sigma) fit football and basketball margins better than Poisson does for scoring counts.
For pre-game soccer match probabilities (1X2 markets), Poisson with calibrated xG inputs is within 1-2% of empirical outcomes across thousands of matches. For score-specific probabilities (predicting 2-1 vs 1-1), it's slightly less accurate because the model assumes independence between home and away goals — but for major probability cells (1-1, 1-0, 2-1, the most common scorelines), the predictions are within a percentage point of reality.
Dixon-Coles is a refinement to basic Poisson that adjusts the joint probabilities of low-score outcomes (0-0, 1-0, 0-1, 1-1) to better fit empirical data. Pure Poisson slightly under-predicts these low-score cells, especially 1-1 draws and 0-0 ties; the Dixon-Coles correction adds a small probability mass to those cells. Most serious soccer models use Dixon-Coles rather than pure Poisson. For most retail betting use, the basic Poisson model is close enough.
Sometimes. Player props that count discrete events (Mahomes touchdown passes, NBA player rebounds, hockey shots on goal) are roughly Poisson-distributed if the events are independent and the rate is stable. Player props with thresholds (yards, points) are usually better modeled with normal distributions. The Poisson Calculator works for any sport where you have a credible expected-rate estimate.