Soccer Odds 2026HomeGroupsBracketTitle oddsOdds to probabilityPoisson modelGoal marketsPrediction pools

Method · step two of two

How a Poisson model turns two numbers into a full scoreline table

The market gives you a win, draw and win split and a line on total goals. It does not give you 2:1. Getting from one to the other takes a goal model, and the one used here is a Poisson grid with the Dixon-Coles correction.

Download on the App Store

Every scoreline in the app comes from this grid.

The idea in one paragraph

Assume each side scores at its own steady rate over ninety minutes. If that is true, the number of goals a side scores follows a Poisson distribution, and the probability of any exact scoreline is just the chance the home side scores x times multiplied by the chance the away side scores y times. Do that for every pair from 0:0 up to 8:8 and you have a table that answers every question at once: who wins, whether there are three goals, whether both teams score. The whole job is finding the two rates.

Step 1: total goals come from the over 2.5 market

If both sides score independently, the total number of goals is also Poisson, with a rate equal to the sum of the two. The market has already told you how likely three or more goals are, so you look for the total rate that reproduces that number, by bisection.

find mu such that P(total goals >= 3 | Poisson(mu)) = market over 2.5

Step 2: the win probability splits that total in two

Now you know how many goals the match is expected to hold, but not who scores them. The home win probability settles that. Bisect on the difference between the two rates until the grid returns the home win probability the market quoted.

rate_home = (mu + s) / 2 rate_away = (mu - s) / 2 find s such that P(home wins | grid) = market home win

Two market numbers in, two scoring rates out. Nothing else is needed.

Step 3: build the grid

With both rates in hand, fill a table of every scoreline from 0:0 to 8:8. Eight goals per side is a generous ceiling for a football match, and the table is normalised afterwards so the entries add to exactly one.

Step 4: correct the low scores

A plain Poisson model has one well known flaw: it puts too little probability on 0:0 and 1:1 and too much on 1:0 and 0:1. Goals are not quite independent. A side that concedes early plays differently, and a match still level late plays differently again.

Dixon and Coles proposed a fix in 1997 that nudges only the four lowest scorelines, controlled by a single parameter. This project uses a value of minus 0.08.

0:0 multiplied by 1 + 0.08 x rate_home x rate_away 0:1 multiplied by 1 - 0.08 x rate_home 1:0 multiplied by 1 - 0.08 x rate_away 1:1 multiplied by 1.08 everything else unchanged

So 1:1 always gains eight percent, and the other three move by an amount that depends on how many goals the match was expected to hold. Everything from 2:0 upwards is left alone.

Step 5: read every market off the one grid

Once the grid exists, no market needs its own model. A home win is the sum of the cells below the diagonal. Over 2.5 is the sum of every cell where x plus y is at least three. Both teams to score is every cell where x and y are both at least one. Because they all come from the same table, they can never contradict each other, which is the main practical reason to build a grid at all.

A worked example from the 2026 tournament

Take Norway v Senegal, Tue 23 June 2026. The market consensus, after the margin was removed, was 41.3 percent for Norway, 27.8 percent for the draw and 30.9 percent for Senegal, with 49.8 percent for three or more goals.

Those two inputs give a total goal rate of about 2.66, split into 1.44 for Norway and 1.22 for Senegal. The Dixon-Coles factors for this match work out at about 1.141 on 0:0, 0.885 on 0:1 and 0.902 on 1:0. Feeding that grid back out produces:

Norway v Senegal, 23 June 2026. Every figure read off the same scoreline grid.
MarketProbability
Likeliest scoreline 1:113.3%
Second 1:09.1%
Third 2:18.9%
Over 1.5 goals75.5%
Over 2.5 goals49.8%
Over 3.5 goals27.8%
Both teams to score54.8%

Notice how modest the leading scoreline is. In a match the market called close to even, the single likeliest result was worth only 13.3 percent. That is not the model hedging. It is what a scoreline distribution looks like when roughly two and a half goals are spread across two teams.

Where this model is wrong

  • It assumes a constant rate. A real match is not stationary. Red cards, injuries and a side sitting on a lead all change the rate mid-match, and the model has no way to see any of it.
  • It assumes independence, then patches it. The Dixon-Coles factor repairs the best documented failure, the low scoring draws, and leaves the rest.
  • It inherits whatever the market got wrong. The grid is only as good as the two numbers it was fitted to. If the market misprices a match, the model reproduces the mispricing faithfully.
  • It is not a forecast of one result. The likeliest scoreline in a typical match sits near fourteen percent, which means it is wrong about six times out of seven.

Related

Download on the App Store