The question
"The Over/Under and First Half Goals prices all hang together somehow. How do you get from 'this team usually scores about 1.5' to an actual price?"
How to model football goals is the first real modelling question in football betting. The answer, used by bookmakers, exchange traders and academics alike, is a 180-year-old formula called the Poisson distribution. It turns one number into a full set of probabilities.
The idea in one sentence
If goals arrive at random at a steady average rate, the Poisson distribution turns that rate, the expected goals, into the chance of exactly 0, 1, 2, 3 or more.
The picture
Goals in football are rare. There are thousands of moments in a match where one could happen, and each one has only a tiny chance. When you have lots of chances, each unlikely, and they happen more or less independently, the total count follows a Poisson distribution.
The whole shape is fixed by one number, λ (lambda), the expected goals. Here's a team with λ = 1.5:
| Goals | Chance | Chance of this many or fewer |
|---|---|---|
| 0 | 22.3% | 22.3% |
| 1 | 33.5% | 55.8% |
| 2 | 25.1% | 80.9% |
| 3 | 12.6% | 93.4% |
| 4 | 4.7% | 98.1% |
| 5 | 1.4% | 99.6% |
| 6+ | 0.4% | 100% |
Look at the shape. The most likely single result is 1 goal, but 0 and 2 are close behind. Even a team "expected" to get 1.5 fails to score more than one match in five.
Raise λ and the whole hill slides right and spreads out. Lower it and the bars pile up on 0 and 1. The explorer below lets you drag λ and watch the bars, and the Over/Under prices, change together.
| Line | Over | Fair | Under | Fair |
|---|---|---|---|---|
| 0.5 | 77.69% | 1.287 | 22.31% | 4.482 |
| 1.5 | 44.22% | 2.262 | 55.78% | 1.793 |
| 2.5 | 19.12% | 5.231 | 80.88% | 1.236 |
| 3.5 | 6.56% | 15.234 | 93.44% | 1.070 |
| 4.5 | 1.86% | 53.833 | 98.14% | 1.019 |
Where λ comes from
The model is only as good as λ. Simple versions use a team's average goals, split into home and away. Better versions combine attack and defence ratings, or use expected goals from shot data, and weight recent matches more. That's the work of Module 5.
Worked Betfair example
You want to price the First Half Goals Over 0.5 market. Your model expects 2.7 goals in the match, and in your data about 45% of goals come in the first half. (Illustrative inputs; the second half usually has more goals than the first.)
- Expected first-half goals. λ = 0.45 × 2.7 = 1.215.
- Chance of no first-half goal. P(0) = e^(−1.215) = 29.67%.
- Chance of at least one. 1 − 0.2967 = 70.33%.
- Fair price. 1 ÷ 0.7033 = 1.422.
- Break-even price after 2% commission. You need about 1.43 to break even at 70.33%.
- Betfair shows 1.47 to back. Expected value on £20: win 0.7033 × £20 × 0.47 × 0.98 = £6.48, lose 0.2967 × £20 = £5.93. EV = +£0.54, about +2.7p per £1.
- Price the neighbours from the same λ. First Half Over 1.5 = 1 − P(0) − P(1) = 34.28%, fair 2.92. Second Half: λ = 0.55 × 2.7 = 1.485, so Second Half Over 0.5 = 77.35%, fair 1.29.
Verdict: one expected-goals figure prices a whole family of markets in a consistent way. If Betfair's prices across those markets don't hang together the way Poisson says, one of them may be out, or your λ is.
The formula
The Poisson probability
- X is the number of goals.
- k is the count you're asking about: 0, 1, 2 and so on.
- λ (lambda) is the expected number of goals.
- e is the constant 2.718...
- k! ("k factorial") is k × (k − 1) × ... × 1, with 0! = 1.
In plain English: plug in the expected goals and the count you want, and out comes its chance. For λ = 1.5 and k = 2: 1.5² × e^(−1.5) ÷ 2 = 25.1%.
No goals at all
In plain English: the chance of a blank is just e to the minus λ. It's the key number for every "Over 0.5" market and for 0-0 in Correct Score.
Over a line
- m is the whole number below the line (2 for over 2.5).
In plain English: the chance of going over is one minus the chance of landing on or under.
Mean and variance
In plain English: a Poisson count spreads out exactly as much as its average. If real goal counts spread out more than that, a negative binomial fits better.
Adding up teams
In plain English: if each team's goals are Poisson, the match total is Poisson too, with the two λs added. That's why one total λ prices Over/Under directly.
Try it
Set λ to 1.5 and check P(0) = 22.3% and P(2) = 25.1%. Then set λ = 2.7 for a whole match: Over 2.5 should read about 50.6%, a fair price near 1.97.
Common mistakes
- Treating λ as a fact. Poisson turns λ into prices perfectly; it can't tell you λ is wrong. A small error in λ moves every price you make.
- Using one λ for both halves. Second halves usually have more goals than first halves. Split the match total using your own data.
- Assuming the scoring rate stays fixed after a goal. Game state changes how teams play. Pre-match Poisson is a starting point for in-play, not the whole answer (Lesson 3.2).
- Ignoring the low scores. Plain Poisson slightly misjudges 0-0 and 1-1. Lesson 4.3 shows the fix.
- Trusting a big gap to the market. If your Poisson price is miles from Betfair's, the market usually knows something your λ doesn't.
A neat formula can make a weak input look precise, which is one of the main reasons good models still lose money.