Logo

Poisson Distribution in Sports Betting: Model Goals, Runs & Totals

Juanse BritoJuanse Brito·11 min read·
poissonmodelingstrategymathematics
Share:
Quick Formula

P(X = k) = (lambda^k × e^(-lambda)) / k! where lambda is the expected average (e.g., goals per match) and k is the exact number of events you want the probability for. This lets you calculate the likelihood of any specific scoreline in low-scoring sports.

What Is the Poisson Distribution?

The Poisson distribution is a probability model that predicts how many times an event will occur in a fixed interval, given a known average rate. In sports betting, it is the standard method for estimating the probability of specific scorelines, total goals, and over/under outcomes in low-scoring sports like soccer, hockey, and baseball.

Named after French mathematician Simeon Denis Poisson, who published it in 1837, the distribution works best when events are relatively rare, independent of each other, and occur at a roughly constant rate. Goals in a soccer match fit these criteria well: they happen infrequently (averaging around 2.5 per match), each goal is largely independent of previous goals, and the rate stays relatively stable across 90 minutes.

If you already understand expected value in betting, the Poisson distribution lets you generate your own probability estimates, rather than relying solely on the odds a sportsbook offers.

The Poisson Formula

The probability of observing exactly k events when the average rate is lambda:

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

Where:

  • lambda = the expected average number of events (e.g., 2.5 goals per match)
  • k = the exact number of events you want the probability for (e.g., 0, 1, 2, 3)
  • e = Euler's number (approximately 2.71828)
  • k! = k factorial (e.g., 3! = 3 × 2 × 1 = 6)

The formula outputs a probability between 0 and 1 for each possible value of k. By calculating P(X = 0), P(X = 1), P(X = 2), and so on, you build a full probability distribution for every possible outcome.

Soccer Example: Modeling Goals

Soccer is the most common application of Poisson in betting. Here's a step-by-step example.

Step 1: Estimate Lambda for Each Team

Suppose you're modeling a Premier League match between Team A (home) and Team B (away). Using the last two seasons of data:

  • Team A averages 1.7 goals scored at home
  • Team B averages 0.9 goals scored away
  • League average home goals: 1.5, away goals: 1.2

A common approach is to calculate attack strength and defense weakness ratings:

Team A Attack Strength = Team A Home Goals / League Avg Home Goals = 1.7 / 1.5 = 1.133
Team B Defense Weakness = Goals Conceded Away by B / League Avg Home Goals = 1.6 / 1.5 = 1.067

Team A Expected Goals (lambda) = Attack Strength × Defense Weakness × League Avg = 1.133 × 1.067 × 1.5 = 1.81

You repeat the same process for Team B's expected goals. For this example, let's say Team B's lambda comes out to 1.05.

Step 2: Calculate Goal Probabilities

With lambda = 1.81 for Team A, the probability of them scoring exactly k goals:

P(0 goals) = (1.81^0 × e^(-1.81)) / 0! = 0.1637 = 16.4%
P(1 goal)  = (1.81^1 × e^(-1.81)) / 1! = 0.2963 = 29.6%
P(2 goals) = (1.81^2 × e^(-1.81)) / 2! = 0.2682 = 26.8%
P(3 goals) = (1.81^3 × e^(-1.81)) / 3! = 0.1618 = 16.2%
P(4 goals) = (1.81^4 × e^(-1.81)) / 4! = 0.0733 = 7.3%
P(5+ goals) = 1 - sum of above                    = 3.7%

Step 3: Build a Scoreline Matrix

By calculating these probabilities independently for both teams, you can multiply them together to get the probability of any specific scoreline:

B: 0 goals (42.7%)B: 1 goal (44.9%)B: 2 goals (23.6%)B: 3 goals (8.3%)
A: 0 (16.4%)0-0: 7.0%0-1: 7.4%0-2: 3.9%0-3: 1.4%
A: 1 (29.6%)1-0: 12.6%1-1: 13.3%1-2: 7.0%1-3: 2.5%
A: 2 (26.8%)2-0: 11.4%2-1: 12.0%2-2: 6.3%2-3: 2.2%
A: 3 (16.2%)3-0: 6.9%3-1: 7.3%3-2: 3.8%3-3: 1.3%

From this matrix, you can price correct score, over/under, and match result markets.

Probability Table: Total Goals (lambda = 2.5)

For a match where both teams combined are expected to produce 2.5 total goals:

Total GoalsProbabilityCumulative (Under)Over
08.2%8.2%91.8%
120.5%28.7%71.3%
225.7%54.4%45.6%
321.4%75.8%24.2%
413.4%89.2%10.8%
56.7%95.9%4.1%
6+4.1%100%0%

From this table, the probability of Under 2.5 goals is 54.4% and Over 2.5 goals is 45.6%. You can compare these to the implied probabilities from a sportsbook's odds. If the book offers Over 2.5 at 2.30 (implied 43.5%), and your model says the true probability is 45.6%, that's a positive expected value bet.

Use our Poisson calculator to generate these probability tables instantly for any lambda value.

Baseball Example: Modeling Runs

The Poisson distribution also applies to baseball, where runs per team typically average between 3.5 and 5.5 per game. The process is identical to the soccer example, but with higher lambda values.

Worked Example

Suppose the New York Yankees are expected to score 4.8 runs and the Boston Red Sox are expected to score 4.2 runs, giving a combined total of 9.0 runs.

Individual team probabilities with lambda = 4.8 for the Yankees:

P(0 runs) = (4.8^0 × e^(-4.8)) / 0! = 0.0082 = 0.8%
P(1 run)  = (4.8^1 × e^(-4.8)) / 1! = 0.0395 = 4.0%
P(2 runs) = (4.8^2 × e^(-4.8)) / 2! = 0.0948 = 9.5%
P(3 runs) = (4.8^3 × e^(-4.8)) / 3! = 0.1517 = 15.2%
P(4 runs) = (4.8^4 × e^(-4.8)) / 4! = 0.1820 = 18.2%
P(5 runs) = (4.8^5 × e^(-4.8)) / 5! = 0.1747 = 17.5%
P(6 runs) = (4.8^6 × e^(-4.8)) / 6! = 0.1398 = 14.0%
P(7+ runs) = 1 - sum of above                   = 20.8%

The distribution is more spread out compared to soccer because the higher lambda pushes probability mass toward larger numbers. Notice how the peak is around 4-5 runs, which matches the expected average.

To calculate Over/Under 8.5 for the total game, you'd sum the probabilities from both teams' Poisson distributions. For combined totals, you can also apply Poisson directly with lambda = 9.0.

Using Poisson for Over/Under Markets

Over/under (totals) markets are where a Poisson model pays off most directly. Estimate lambda for the total, calculate cumulative probabilities for each value of k, convert the bookmaker's odds to implied probability, and bet when your model disagrees by a meaningful margin.

Say your Poisson model gives Over 2.5 goals a 48% probability, and a sportsbook offers it at 2.20 (implied 45.5%). That's a +2.5% edge. Run it through our expected value calculator to confirm the EV before placing the bet.

One practical benefit: you can model any line, not just the most common ones. Over 3.5? Over 1.5? Same formula, different cumulative sum.

Using Poisson for Correct Score Markets

Correct score markets have wider margins than moneyline or totals. That's good news for Poisson modelers, because wider margins mean more room for the book to misprice a scoreline.

To price a correct score market:

  1. Calculate lambda for each team independently
  2. Find P(Team A scores x) and P(Team B scores y) for each combination
  3. Multiply them together: P(x, y) = P(Team A = x) × P(Team B = y)
  4. Compare your probability to the sportsbook's implied probability

If your model says 1-1 has a 13.3% chance (fair odds of 7.52), and a sportsbook is offering 8.00, that's a value bet. The expected value is positive, and over hundreds of bets on correct scores, this edge compounds.

Combining Poisson with Other Data

A raw Poisson model based on season averages is a starting point, not a finished product. Sharper bettors adjust their lambda estimates with additional context.

If a team's top striker is injured, their lambda should drop below the season average. Home/away splits matter too: always use venue-specific data, because some teams score twice as many goals at home. A 10-game rolling average often outperforms a full-season average since it captures recent form. Head-to-head records, weather, pitch conditions, and match context (cup finals, relegation battles, dead rubbers) all affect scoring rates and should nudge your lambda estimate up or down.

The idea is to use Poisson as the baseline and then make informed adjustments before comparing to the market.

When Poisson Doesn't Work

The Poisson distribution has clear limitations. It assumes events are independent and occur at a constant rate, and that the variance equals the mean. These assumptions break down in several situations:

High-Scoring Sports

Basketball and American football produce too many scoring events for Poisson to model accurately. An NBA game averages 220+ total points, and the distribution of scores in these sports is much closer to a normal (Gaussian) distribution. The Poisson assumptions of rare, independent events simply don't hold when a team scores 50+ times per game.

Dependent Events

In real soccer matches, goals are not perfectly independent. A team that goes 1-0 up may sit back and defend, reducing the rate of subsequent goals. A team that goes behind may push forward aggressively, increasing their scoring rate but also becoming more vulnerable. This "state dependence" means the actual distribution of goals has slightly fatter tails than a Poisson model predicts. Some bettors address this by using a negative binomial distribution or by modeling each half separately.

Extra Time and Overtime

Poisson models are calibrated for regulation time (90 minutes in soccer, 9 innings in baseball). If a market includes overtime or extra time, you need to adjust lambda accordingly.

Cup Matches and Knockout Games

The dynamics of knockout matches differ from league games. Teams may play more conservatively, especially in the first leg of a two-legged tie. Season-long averages may overestimate scoring in these situations.

Building Your Own Poisson Model

To build a basic Poisson model, you need historical scoring data for at least the current season (two seasons is better), a spreadsheet or scripting language to handle the math, and the discipline to update your inputs as the season progresses.

Or skip the manual work entirely. Our Poisson calculator generates full probability distributions, scoreline matrices, and over/under probabilities from any lambda value you input.

Quick Workflow

  1. Estimate lambda for each team using attack/defense ratings
  2. Generate probability distributions with the Poisson calculator
  3. Build a scoreline matrix by multiplying the independent probabilities
  4. Compare your probabilities to sportsbook odds
  5. Calculate expected value on any discrepancies
  6. Place bets where your model shows consistent positive EV

Putting It All Together

The Poisson distribution turns raw scoring averages into probabilities you can compare directly against sportsbook odds. It works best in low-scoring sports, it's simple enough to run in a spreadsheet, and it gives you an objective basis for betting decisions instead of gut feel.

No model is perfect. Poisson won't capture every nuance of a real match, and it falls apart in high-scoring sports. But for generating your own odds on totals, correct scores, and match results, it's hard to beat. Keep your data fresh, focus on markets with wide margins, and always run the numbers through an expected value calculator before placing a bet.

Try it with our Poisson distribution calculator.

Juanse Brito
Juanse BritoCEO & Co-Founder at Bet Hero

Juan Sebastian Brito is the CEO and Co-Founder of Bet Hero, a sports betting analytics platform used by thousands of bettors to find +EV opportunities and arbitrage. With a background in software engineering and computer science from FIB (Universitat Politècnica de Catalunya), he built Bet Hero to bring data-driven, mathematically-proven betting strategies to the mainstream. His work focuses on probability theory, real-time odds analysis, and building tools that give bettors a quantifiable edge.

View all articles →

Put this into practice

Bet Hero scans 400+ sportsbooks in real-time to find +EV bets and arbitrage opportunities so you don't have to.