The question
"I've got an expected goals number for each side. How do I turn that into a price for 2-1, for over 2.5, for the draw, all at once?"
How to price correct score from expected goals is the step that turns a goals model into a full betting tool. It takes two numbers and gives you every football market Betfair lists, and it does it in a way where all your prices agree with each other.
The idea in one sentence
Turn each team's expected goals into a Poisson distribution, multiply them into a grid of every possible scoreline, then add up the squares that belong to each market.
The picture
Take home expected goals 1.6 and away 1.1. Lesson 4.1 gives each side its own list of chances:
| Goals | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| Home (λ = 1.6) | 20.2% | 32.3% | 25.8% | 13.8% | 5.5% |
| Away (λ = 1.1) | 33.3% | 36.6% | 20.1% | 7.4% | 2.0% |
Now lay one list down the side and the other across the top. Each square is a scoreline, and its chance is the home chance times the away chance:
| Home ↓ / Away → | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 0 | 6.72% | 7.39% | 4.07% | 1.49% |
| 1 | 10.75% | 11.83% | 6.51% | 2.39% |
| 2 | 8.60% | 9.46% | 5.20% | 1.91% |
| 3 | 4.59% | 5.05% | 2.78% | 1.02% |
The grid carries on to 10-10, but the squares get tiny fast. Every Betfair football market is now a question of which squares you add up:
- Match Odds: below the diagonal is home, the diagonal is the draw, above it is away.
- Correct Score: one square each.
- Over/Under 2.5: squares where home + away is 3 or more.
- Both teams to score: everything except the top row and the left column.
The grid builder below lets you set the two numbers and watch the whole grid, and every market price, move at once.
| H\A | 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|---|
| 0 | 6.72 | 7.39 | 4.07 | 1.49 | 0.41 | 0.09 |
| 1 | 10.75 | 11.83 | 6.51 | 2.39 | 0.66 | 0.14 |
| 2 | 8.60 | 9.46 | 5.20 | 1.91 | 0.52 | 0.12 |
| 3 | 4.59 | 5.05 | 2.78 | 1.02 | 0.28 | 0.06 |
| 4 | 1.84 | 2.02 | 1.11 | 0.41 | 0.11 | 0.02 |
| 5 | 0.59 | 0.65 | 0.36 | 0.13 | 0.04 | 0.01 |
| Match Odds | Chance | Fair |
|---|---|---|
| Home | 48.96% | 2.043 |
| Draw | 24.89% | 4.018 |
| Away | 26.15% | 3.824 |
| Both score | Chance | Fair |
|---|---|---|
| Yes | 53.24% | 1.878 |
| No | 46.76% | 2.139 |
| Over | Chance | Fair |
|---|---|---|
| Over 0.5 | 93.28% | 1.072 |
| Over 1.5 | 75.13% | 1.331 |
| Over 2.5 | 50.64% | 1.975 |
| Over 3.5 | 28.59% | 3.498 |
| Over 4.5 | 13.71% | 7.294 |
| Under | Chance | Fair |
|---|---|---|
| Under 0.5 | 6.72% | 14.879 |
| Under 1.5 | 24.87% | 4.022 |
| Under 2.5 | 49.36% | 2.026 |
| Under 3.5 | 71.41% | 1.400 |
| Under 4.5 | 86.29% | 1.159 |
| Most likely scores | Chance | Fair |
|---|---|---|
| 1-1 | 11.83% | 8.454 |
| 1-0 | 10.75% | 9.300 |
| 2-1 | 9.46% | 10.568 |
| 2-0 | 8.60% | 11.625 |
| 0-1 | 7.39% | 13.527 |
Worked Betfair example
Home expected goals 1.6, away 1.1. (Illustrative inputs from your ratings model.)
- Each side on its own. Home scores exactly 1 with chance 1.6 × e^(−1.6) = 32.30%. Away scores exactly 1 with chance 1.1 × e^(−1.1) = 36.62%.
- One square. 1-1 = 0.3230 × 0.3662 = 11.83%, a fair price of 8.45.
- Another square. 2-1 = 25.84% × 36.62% = 9.46%, fair 10.57. And 0-0 = e^(−2.7) = 6.72%, fair 14.88.
- Match Odds. Add the squares: home win 48.96% (fair 2.04), draw 24.89% (4.02), away 26.15% (3.82). These add to 100%.
- Over/Under. Over 2.5 = 50.64% (1.97), over 1.5 = 75.13% (1.33), over 3.5 = 28.59% (3.50). The total expected goals is 1.6 + 1.1 = 2.7, which gives the same over 2.5 as a single Poisson with λ = 2.7.
- Both teams to score. 1 − P(home 0) − P(away 0) + P(0-0) = 53.24%.
- Check a price. Betfair has 9.2 on 1-1 in Correct Score. EV on £10 after 2% commission: win 0.1183 × £82 × 0.98 = £9.50, lose 0.8817 × £10 = £8.82. EV = +£0.69. Break-even is about 8.61.
Verdict: by this grid 1-1 is value at 9.2. But plain Poisson is known to misjudge exactly this square (the next lesson explains why), so before betting, check whether the gap survives a better model. A gap in a single square is where a model is weakest.
Why one grid matters
Traders who price markets one at a time end up with prices that contradict each other: a draw at 3.6 but 0-0 and 1-1 too long, say. A grid can't do that. If your Correct Score, Match Odds and Over/Under views don't agree, you're not working from one model.
The formula
One square of the grid
- i and j are home and away goals.
- λ (lambda) is home expected goals, μ (mu) away expected goals.
In plain English: the chance of a scoreline is the chance of the home score times the chance of the away score. This treats the two teams' goals as independent, which is the assumption Dixon-Coles relaxes.
Match Odds from the grid
In plain English: add the squares below the diagonal, on it, and above it. The goal difference on its own follows a Skellam distribution.
Over/Under from the grid
In plain English: add every square whose total goals beat the line.
Both teams to score
In plain English: both sides must avoid a blank. With independent teams, multiply their chances of scoring at least once: 79.81% × 66.71% = 53.24%.
Try it
Set home 1.6 and away 1.1 and check 1-1 reads 11.83% and home win 48.96%. Then lift the home side to 2.2 and watch the grid's weight slide towards the bigger home scores, the draw drift out and over 2.5 climb.
Common mistakes
- Pricing markets one by one. Separate guesses for Match Odds, Over/Under and Correct Score won't agree. Build them all from one grid.
- Stopping the grid too early. Cutting off at 5-5 loses a sliver of probability. Go to 10-10 so the grid adds up to 100%.
- Multiplying markets instead of adding squares. "Home and over 2.5" is a sum of squares, not home × over (Lesson 3.4).
- Trusting the low-score squares. Plain Poisson under-rates 0-0 and 1-1 and over-rates 1-0 and 0-1. That's the next lesson's fix.
- Blaming the grid for bad inputs. The grid is just arithmetic. If the two expected goals figures are wrong, every square is wrong.
Two numbers pricing a whole match feels powerful, and that confidence is part of why good models still lose money: the inputs carry all the risk.