Why a football match is a Poisson problem
Goals are rare and they arrive at no particular moment. Over ninety minutes a team gets perhaps a dozen real chances, each one converting a fraction of the time, and the chances are spread more or less evenly across the match rather than bunched at a fixed clock reading. That is precisely the setting the Poisson distribution was built for: events that happen at some average rate over a fixed interval, independently of when the last one happened.
That is why Poisson has been the default football model since Moroney wrote about it in the 1950s, and why it survives as the starting point for almost every commercial pricing model today. Not because it is the last word, but because it needs exactly one number per team and gets you surprisingly close.
The number is lambda — the goals you expect that side to score in this match. Everything on this page comes from two lambdas and nothing else.
The formula, and what lambda actually means
For a team with expected goals λ, the probability of scoring exactly k goals is:
P(k) = e^−λ × λ^k ÷ k!
So a side you expect to score 1.6 goals has a 20.2% chance of failing to score, a 32.3% chance of exactly one, a 25.8% chance of exactly two, and so on down a tail that never quite reaches zero.
It is worth being clear about what λ is not. It is not the number of goals the team will score — nobody scores 1.6 goals. It is not an average of past results either, though past results inform it. It is your estimate of this team's scoring rate in this particular match, against this particular opponent, with these players available. The whole model rests on it, which is both its elegance and its weakness.
From two numbers to a whole match card
Take the home side at 1.60 and the away side at 1.20. Treat the two scoring processes as independent and the probability of any exact scoreline is just the product of the two: P(2−1) = P(home scores 2) × P(away scores 1).
Do that for every scoreline and you get a grid. Every market you can think of is a different way of adding up its cells.
• Home win: every cell where the home number is larger — 46.7%, fair odds 2.14
• Draw: the diagonal — 24.7%, fair odds 4.05
• Away win: 28.6%, fair odds 3.49
• Over 2.5: every cell whose two numbers add to three or more — 53.1%, fair odds 1.88
• Both teams to score: every cell with at least one goal on each side — 55.8%, fair odds 1.79
• Most likely single result: 1−1, at 11.7%
The Poisson calculator does all of this from the two inputs. The important property is that these prices are consistent with each other by construction: they are six views of one grid, not six separate estimates. If you price 1X2 from one source and totals from another, nothing guarantees they agree — here they must. For quarter and half lines on totals, the goal line calculator handles the stake splits the same grid implies.
Where the two numbers come from
You can work backwards from the market. A bookmaker's Asian handicap tells you the goal difference it expects; the total tells you the sum. Two equations, two unknowns — a handicap of −0.5 with a total of 2.75 implies roughly 1.6 and 1.15. Doing this is not a prediction, it is a translation: you are reading the market's own view in a form you can then disagree with piece by piece.
Or you can build them yourself. The usual route is expected goals: take each side's xG created and xG conceded over a recent window, adjust for opponent strength, add a home-advantage multiplier of roughly 1.1 to 1.15 on the home side and the reciprocal on the away side. Shrink everything toward the league average when the sample is small — six matches is not a season.
Both routes are legitimate and they answer different questions. Reading the market tells you what is already priced in. Building your own tells you where you disagree. Only the second one can make you money.
Three things the model gets wrong
First, independence. Poisson assumes the two sides score without reference to each other, and football does not work that way. A team that goes two up often drops deeper; a team chasing the game opens up. The empirical consequence is well documented: low, level scorelines — 0−0 and 1−1 in particular — happen slightly more often than independent Poisson predicts, and lopsided scorelines slightly less. Dixon and Coles published a correction for exactly these cells in 1997, and it is still the standard patch. Fitting it honestly requires a database of results, which is why a calculator that only takes two inputs cannot apply it.
Second, a single λ per team assumes the scoring rate is constant across the match. It is not — goals per minute rise toward the end of each half, and a red card or an early goal rewrites the rate entirely. For pre-match pricing this matters less than you would think; for in-play it matters enormously.
Third, and biggest: the model is a mirror. It will take any two numbers you give it and return precise, confident, beautifully formatted odds. If your expected goals are careless, the output is careless too — it just looks authoritative. Precision is not accuracy, and a model that cannot say "I don't know" will never tell you when your input was rubbish.
Using it without fooling yourself
The discipline that makes this useful is simple: price the match before you look at the odds. Write your two numbers down, read the fair odds off the grid, and only then open the bookmaker. Do it the other way round and the market will anchor you — you will reverse-engineer whatever lambdas justify the price you already saw.
Then compare properly. The bookmaker's price includes margin, so it is not comparable with your fair odds until you strip it out with no-vig fair odds. Once both numbers are margin-free, the gap between them is your estimated edge, and the value bet finder turns that into expected value on a given stake.
And check yourself over time rather than over a weekend. If your lambdas are genuinely better than the market's, your bets will beat the closing line more often than not — that is what closing line value measures, and it tells you whether the model works long before your profit curve does. A model that consistently loses to the closing price is wrong no matter how good last month looked.