Projections & Methodology

How Football Win-Probability and Match-Forecast Models Work

The maths behind the number on your screen.

Every broadcast overlay, every stats site and every analytics app has one now: a live win-probability bar that ticks and lurches in real time, telling you — with two decimal places of false confidence — that one team is 73% likely to win this match. Most people treat it as a vibe-checker. It's actually the output of several interacting statistical models, each doing a specific job. Here is how they fit together.

Step one: rating each team before a ball is kicked

Pre-match win probability starts with a team-strength rating. Two families dominate football modelling. The first is Elo, borrowed from chess. Each team has a numerical rating; after every match the winner takes points from the loser, with the amount exchanged proportional to how surprising the result was. Beat a team much weaker than you and you gain almost nothing; beat a stronger side and the swing is large. The formula for the expected score of team A against team B is:

E_A = 1 / (1 + 10^((R_B - R_A) / 400))

where R_A and R_B are the Elo ratings. E_A sits between 0 and 1 and can be read directly as a win probability — though basic Elo ignores draws, which is a meaningful gap in football. Most implementations add a draw probability by placing a "draw window" of around 50–100 Elo points around a tie, splitting the remaining probability between the two wins.

The second family, exemplified by FiveThirtyEight's Soccer Power Index (SPI), moves away from match results and works off goals scored and conceded, often adjusted for the quality of each shot via xG. This is more informative: a team that wins 1–0 from 0.3 xG has done something lucky rather than something good. Rating systems built on xG converge to a team's true level faster than systems built on scorelines alone.

Home advantage — empirically worth roughly a third of a goal per match on average, though it varies widely by league and era — is added as an offset to the visiting team's strength before the model runs.

The Poisson goals model

Once you have team-strength ratings, you can translate them into goal-scoring rates. The standard tool is the Poisson distribution, which models the number of rare, independent events in a fixed interval. A football match is not quite like that — goals are not fully independent, because a red card changes everything and teams switch strategies when a goal goes in — but as a first-order model it is both mathematically tractable and surprisingly accurate.

If a team is expected to score λ goals in a match, the Poisson probability of them scoring exactly k goals is:

Poisson formula
P(k) = e−λ × λk / k!

Here e is Euler's number (≈ 2.71828), k! is k-factorial, and λ (lambda) is the expected number of goals — derived from your team-strength model. Because the two teams' scores are modelled as independent Poisson variables (a simplification, but one that works tolerably well), you can build a full scoreline probability matrix by multiplying the two distributions together.

A fully worked example

Say the model assigns Team A an expected goals rate of λA = 1.6 and Team B a rate of λB = 1.1 for this particular match. Those are the inputs — chosen to illustrate the method, not taken from any real fixture. Now we compute the probability of a 1–1 draw.

First, P(Team A scores exactly 1 goal):

P(k=1 | λ=1.6)
  = e^(-1.6) × 1.6^1 / 1!
  = 0.2019 × 1.6 / 1
  ≈ 0.3230

Next, P(Team B scores exactly 1 goal):

P(k=1 | λ=1.1)
  = e^(-1.1) × 1.1^1 / 1!
  = 0.3329 × 1.1 / 1
  ≈ 0.3662

Because the two scores are independent, the joint probability of a 1–1 draw is simply the product:

P(1-1) = 0.3230 × 0.3662 ≈ 0.1183  — about 12%

To get the win probability for Team A we do the same for every scoreline where A's goals exceed B's — (1-0), (2-0), (2-1), (3-0), (3-1), (3-2) and so on — and sum them. In practice you truncate somewhere around 8 or 10 goals per side, where the probabilities are negligible. With those λ values the sums come out at roughly:

Illustrative pre-match probabilities from λ_A = 1.6, λ_B = 1.1 using independent Poisson distributions.
Outcome Probability
Team A win~51%
Draw~25%
Team B win~24%

Those numbers are not magic — they flow entirely from the two λ inputs. Change λA from 1.6 to 1.2 and Team A's win probability drops to roughly 40%. The model's whole job is to get those λ values right; the Poisson arithmetic is just the machinery that turns them into probabilities.

Dixon-Coles: fixing the Poisson model's known weaknesses

The independent-Poisson model slightly misprices low-scoring games. In real data, 0–0 and 1–1 draws occur more often than the independent model predicts, while 1–0 and 0–1 results occur slightly less often. In 1997, Mark Dixon and Stuart Coles published a correction term — a small multiplicative factor ρ applied to the four low-scoring cells of the scoreline matrix — that brings those probabilities back into line with empirical frequencies. The ρ parameter is typically estimated at around −0.13, reducing the probability of a 1–0 or 0–1 and nudging 0–0 and 1–1 slightly upward. Beyond that patch, Dixon-Coles introduced time-weighting: older results get an exponential discount so that a match from three seasons ago barely influences the current rating. Both refinements remain standard in published football models.

In-game win probability: updating live

Pre-match probabilities are the starting point. Once the match begins, two things change: the scoreline and the remaining time. Both matter enormously.

The core idea is to condition the win probability on the current state (score, minute) and what is still to play. If the match is goalless at half-time, you re-run the Poisson model for 45 remaining minutes, scaling both λ values proportionally down. If one team has just gone 2–0 up with ten minutes left, the remaining time is short and the deficit is large — the trailing team would need two goals in ten minutes, each of which the model can price separately.

More sophisticated in-game models add a remaining xG term: rather than assuming both teams will continue generating chances at their pre-match rate, they track the live xG accumulation and use that to update estimates of each side's true attacking rate. A team that has created five clear chances without scoring is more likely to score soon than one which has generated nothing — provided you believe in some persistence of chance-creation rate within a match, which is debatable but reasonable.

Finally, the model must handle red cards. A numerical disadvantage shifts both teams' λ values — the ten-man side's attack drops, their defence concedes more — by amounts estimated from historical ten-vs-eleven matches. This is one of the places where different providers diverge most visibly in their live probability curves.

The live win-probability curve

The output of all of the above, plotted minute by minute, is the win-probability curve — the single most useful visualisation for understanding the narrative arc of a match. Goals appear as vertical jumps; red cards as smaller but persistent shifts; a 0–0 in which one team camps in the other's half shows as a slow drift in one direction even before the scoreline changes.

What the curve makes visible is the thing the scoreline hides: a match that ended 2–1 might show Team A's probability peaking at 85% when they went 2–0 up, before collapsing to a nervous 60% after the consolation, with the last ten minutes spent above 90% as Team B ran out of time. The same result, very different stories.

What these models cannot do

Knowing what a model assumes is at least as important as knowing what it computes. Independent Poisson assumes goals arrive at a constant rate — it cannot account for a team sitting deep and slowing play once they lead. The ratings that feed λ are backward-looking and slow to update around a new manager, a formation change, or an injury crisis. And all of the above treats each match as a draw from the same distribution, ignoring the obvious reality that teams prepare specifically for specific opponents.

These are known gaps, not accusations of fraud. Models are simplifications. The Poisson model is useful because it is simple enough to reason about and well-calibrated enough to be informative, not because it perfectly reflects football's chaos. The number on your screen is a probability from a model, not a verdict from the universe. Reading it that way — as a quantification of uncertainty rather than a prediction — is what makes it a genuinely useful analytical tool rather than a confidence-shaped decoration.

Sources & further reading

  • Free textbook: Chapter 20: Predictive Modeling — the theory behind this, at DataField.dev.
  • StatsBomb — methodology notes on team ratings and in-game models.
  • FBref — match xG and team-level data for building and validating goal models.
  • FiveThirtyEight SPI methodology — the Soccer Power Index model, including home-advantage and projection methodology.
  • Understat — xG tables and match-level data for the major European leagues.
  • StatsBomb open data — free event-level data for model development and validation.