Sports
Poisson vs Gaussian: Modelling Low-Scoring Sports
Why goals are not points: the distribution you choose for a sport's scoring decides whether draws, upsets and calibration come out right.
Key takeaways
- Low-scoring sports need a count distribution; Poisson gives draws for free instead of forcing them.
- The difference of two Poisson counts is Skellam — that is where a draw probability actually comes from.
- High-scoring sports have margins that behave like a bell curve; the spread parameter is what makes them realistic.
- Too small a spread makes a sport deterministic and destroys calibration, whatever the mean is.
- The distribution choice is visible in the calibration column, not hidden in the engine.
Count sports want a count distribution
Soccer, hockey and baseball produce small whole-number scores where zero is common and a draw is a real outcome. The Poisson distribution — parameterised by an average scoring rate — captures that shape naturally. Draws fall out of the model instead of being forced.
Novus Odds samples those sports from Poisson score models and derives the win/draw/away probabilities from the same distribution, so the model's stated probabilities and the observed frequencies calibrate by construction.
The Poisson assumption is that scoring events arrive independently at a constant rate over the match. That is an idealisation — real teams chase and protect leads — but it is a remarkably good first approximation for sports where scoring is rare relative to the number of opportunities, and it has exactly one parameter per side, which makes it easy to reason about.
Where a draw probability comes from
If home goals are Poisson with rate 1.5 and away goals are Poisson with rate 1.2, the goal difference follows a Skellam distribution — the difference of two independent Poisson variables. The draw probability is simply the Skellam mass at zero, and it is not a free parameter you tune. It is implied by the two scoring rates.
For those rates the probabilities come out near 44% home, 26% draw and 30% away. Lower both rates and the draw share rises, because low-scoring matches are more likely to end level: at 0.9 and 0.8 the draw climbs past 30%. Raise both and the draw share falls. That relationship is a genuine structural fact about low-scoring sports, and a model that treats the draw as an independent knob will get it wrong in both directions.
This is also why a three-way market cannot be built by pricing home and away and letting the draw absorb the remainder. Do that and the draw probability drifts away from what the scoring rates imply, and calibration on the draw outcome fails while the two win outcomes look fine.
High-scoring sports want a Gaussian
Basketball and similar sports produce large scores whose margins behave like a bell curve. There a Normal distribution with a sport-appropriate spread is the right tool; the win probability is just the chance the score difference lands above zero. Using a tiny fixed spread — the bug we fixed — made basketball almost deterministic and broke calibration entirely.
The reason the Normal works is the central limit theorem doing its job: a basketball margin is the accumulation of a hundred-odd scoring possessions, and sums of many small independent contributions converge to a bell shape regardless of what the individual contributions look like. A soccer scoreline never gets near that regime, which is why the same trick fails there.
The spread is the parameter that matters most, and it is the one most often set carelessly. With a mean margin of 4 points and a standard deviation of 11, the favourite wins about 64% of the time — a plausible basketball number. Drop the standard deviation to 2 and the same 4-point mean gives the favourite 98%. The mean did not move; the sport became a formality.
Why the choice shows up in the odds
The distribution is not a cosmetic detail. It determines how often draws occur, how often underdogs win, and whether the four-probability calibration table lines up. Open a sport adapter, read the calibration column, and you are reading the consequences of the distribution choice directly.
The failure mode is diagnostic. A model with the right mean and too little variance produces observed win rates that are more extreme than its stated probabilities — favourites win more often than predicted, longshots less. A model with too much variance does the reverse, flattening everything toward 50%. Either way the calibration column separates from the identity line in a direction that tells you which parameter to reach for.
That is the practical payoff of building the generative model and the pricing model separately. When calibration drifts you can ask which of the two is responsible, instead of staring at a single black box that both produces outcomes and prices them.
Frequently asked
Why not use a Normal distribution for soccer goals?
Because goals are small non-negative integers where zero is the most common single score. A Normal distribution is continuous and unbounded, so it assigns probability to negative and fractional goals and gives no natural way to produce a draw.
How is the draw probability calculated?
From the two Poisson scoring rates. The goal difference of two independent Poisson variables follows a Skellam distribution, and the draw probability is that distribution's mass at zero. It is implied by the scoring rates rather than set independently.
What does the spread parameter do in a Gaussian sport?
It controls how often the underdog wins. Holding a 4-point mean margin fixed, a standard deviation of 11 gives the favourite about 64%; a standard deviation of 2 gives it about 98%. Too small a spread makes the sport deterministic and destroys calibration.
How do I tell which distribution a sport is using?
Open the sport adapter page. Each adapter states its model name and version alongside the four-probability table, and the calibration column shows the consequences: a mismatch between stated and observed rates points at the distribution or its parameters.
Try it yourself
Everything in this article is something you can run and tweak in the lab — with your own settings and a reproducible seed.
Open the lab →