Model

What is expected goals (xG)? The metric, its power and its limits

Published · Updated 2026-08-29

Expected goals answers one question: how good was this chance? Every shot gets a probability of becoming a goal, estimated from thousands of historically similar shots — distance, angle, body part, the pass that created it, defensive pressure. Add up a team’s shot probabilities and you have its xG for the match: the goals an average finisher would have scored from those chances.

What xG fixes

Goals are rare. The average match in our dataset produces 2.75 of them, so a single deflection can decide a game and tell you nothing about which side played well. That scarcity is why prediction models need seasons of data before their ratings mean much.

xG attacks the problem from the other end. Instead of waiting for goals to accumulate, it scores every chance — and a match produces twenty-odd shots against fewer than three goals. More signal per match means a faster answer to “is this team actually good?”

That makes it sharpest exactly where raw results mislead:

  1. Finishing luck. A striker converting 30% of chances will regress; xG says what the chances were worth regardless of who took them.
  2. Small samples. Ten matches of results is noise. Ten matches of chance quality is a usable signal.
  3. Scorelines that lie. The smash-and-grab 1-0 shows up honestly as 0.4 xG against 2.8.

The trap: a total hides its distribution

Here is the failure mode that survives even among people who use xG daily, and it is worth working through with numbers.

Two teams both finish a match with 0.8 xG. Team A took one penalty, rated 0.8. Team B took eight speculative shots, each rated 0.1. Identical totals, and the “we won the xG battle” framing treats them as identical performances.

They are not close:

  • Team A scores with probability 80%.
  • Team B scores if at least one of eight independent 0.1 chances lands: 1 − 0.9⁸ = 57%.

Twenty-three percentage points of difference in the probability of scoring at all, from the same xG figure. Summing chance quality throws away the shape of the distribution, and the shape is what decides matches. Any argument that rests on comparing two xG totals is making this error unless it looks underneath them.

Where else it misleads

xG is a model, not a measurement, and it inherits a model’s blind spots. It only sees shots, so a team protecting a lead by not shooting looks passive rather than in control — game state bends the numbers in a direction the metric cannot see. It struggles with what it observes poorly, like a goalkeeper’s positioning or a defender closing down off-camera.

And providers disagree. The same shot can be 0.3 in one system and 0.45 in another, so xG values are comparable only within one model — which makes cross-site xG comparisons close to meaningless. About the only figure the public models converge on is the penalty, at roughly 0.75–0.80.

Why our model does not use it yet

Our predictions come from a Dixon-Coles goal model fitted on actual results, with no xG input. That is a deliberate choice rather than an oversight.

Goals are the ground truth we settle every prediction against; our data source provides them reliably for every league we cover; and a simpler model with a public track record is worth more than a fancier one we cannot audit. Adding a feature that improves a backtest but cannot be verified live would move us in exactly the wrong direction for a site whose pitch is that the numbers are checkable.

xG is on the roadmap as a model feature — entering through a backtest, published as a new model version, and only if it demonstrably improves the probabilities. What that process looks like is described in how our model works, and the wider question of what “improves” even means is in calibration in football predictions.

The honest summary

xG is the best public answer to “how well did a team really play” — genuinely better than results over small samples, and the foundation of most serious football analytics. It is not a magic number, not comparable across providers, and not a substitute for a calibrated probability. Use it as one input into a model whose outputs get graded in public, which is exactly how we intend to use it.