Math & ModelsUpdated 21 Jul 20266 min read
Expected Goals (xG), Explained Without the Hype
Score every shot by how often chances like it are converted, then add them up. That total describes what a team created, which is a much bigger sample than what it scored.
What one xG number actually means#
A shot is fed into a model along with its characteristics: how far out, from what angle, with the foot or the head, from open play or a set piece, following a through ball or a cross, with how many defenders between the ball and the goal. The model has seen a very large number of historical shots and answers one question — what fraction of chances like this one were scored?
That fraction is the shot's xG. Sum every shot a team took and you have the team's xG for the match.
The most common misreading is treating 0.3 xG as "a third of a goal". It is not. It is a shot that goes in 30% of the time and misses 70% of the time. Nothing was partially scored. A team with 1.8 xG did not almost score twice; it created a set of chances that, played out over and over, would average about 1.8 goals — while frequently returning 0, 1, 3 or more on any given afternoon.
Why the scoreline is the worse description#
A football match produces very few goals, and each one is a coin-flip resolution of a chance that might have gone either way. Two or three of those decide a result. That is an absurdly small sample from which to judge ninety minutes of play.
xG is a larger sample of the same match. A side takes far more shots than it scores goals, and every one of them contributes information about how the game actually went.
Take an illustrative fixture: a team wins 1-0 on 0.4 xG against 2.1 xG. The result column says three points. The xG says the side was comprehensively outplayed, took its one half-chance, and got away with it. Both statements are true. But if you want to guess what happens the next time those sides play, the second one carries far more of the useful information — because the 0.4-to-2.1 gap took ninety minutes to build, and the 1-0 took one shot.
That is the entire case for xG, and it is a strong one. Everything that follows is the part most xG writing skips.
What xG does not know#
| The limit | Why it bites |
|---|---|
| Providers disagree | xG is a model output, not a measurement. The same match has different xG depending on who modelled it, because each provider uses different inputs and different training data. |
| Finishing is discarded by design | The model asks what a typical player would do with the chance. It never asks who took it — so a genuinely elite finisher and a poor one get the identical number. |
| Game state is ignored | A side 2-0 up drops deep and stops chasing chances. Its low second-half xG is a choice, not a failure, and the raw total does not distinguish the two. |
| Small samples stay small | xG is a bigger sample than goals, not a big one. Ten matches of xG is still ten matches, and it can be wrong about a team for a long time. |
| It sees only shots | Defensive shape, territorial control, and the chances a side was prevented from creating leave no trace. A match where nothing was allowed to happen looks like a match where nothing happened. |
The provider point is the one people trip over most. When two sites publish different xG for the same fixture, neither is lying — they are running different models, and there is no reference xG the way there is a reference scoreline. An xG figure quoted with no source attached is worth less than it looks, and stitching numbers from several providers into one analysis quietly mixes incompatible units.
The finishing point cuts both ways. Discarding the shooter's identity is exactly what makes xG a clean measure of chance quality — that is the feature. It also means "this striker outperformed his xG" is not automatically evidence of skill, because that is precisely the variance the metric leaves on the table.
Descriptive xG and predictive xG are different jobs#
Nearly every argument about xG online is really two people using it for different purposes.
Descriptive xG asks: what happened in that match? Here it is on firm ground. It is a fair, reproducible account of the chances created, and it beats the scoreline at that job comfortably. One match is enough.
Predictive xG asks: what will happen next? Here it needs volume. A team's xG record over many matches starts to describe a stable underlying rate — how good it is at creating and conceding chances — and that is the quantity worth forecasting with. Over one or two matches, the noise in a team's xG is larger than any real signal, and reading a fixture off it is just superstition with better arithmetic.
"They've underperformed their xG, so they're due" is the most common bad use of the metric. Sometimes it is genuine variance that will unwind. Sometimes the team is simply poor at finishing, or its chances are systematically worse than the model realises. And in every case, the market can read the same xG table you can — the number being publicly available is exactly what stops it being an edge.
From xG to a market probability#
Here is where xG connects to a price, and it is a two-step journey that people routinely compress into one.
Step one: xG informs a rate. Attack and defence strength estimated from xG histories — how many good chances a side tends to create, how many it tends to concede — are combined with home advantage and the specific opponent to produce an expected-goals number for this fixture. That is the λ a goals model needs. It is an estimate built from many matches of evidence, not a copy of last week's xG.
Step two: the rate becomes probabilities. Feed the two λ values into the Poisson distribution and you get the full grid of scorelines, and from it every market — match result, Over/Under 2.5, BTTS — as sums of cells.
Try the second step directly in the Poisson calculator below: enter a fixture-level xG estimate for each side and watch the markets fall out of it.
Scoreline probability
home ↓ · away →| 0 | 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|---|
| 0 | 7.1 | 6.6 | 4.2 | 1.6 | 0.5 | 0.1 |
| 1 | 9.5 | 12.5 | 6.8 | 2.6 | 0.7 | 0.2 |
| 2 | 8.2 | 9.4 | 5.4 | 2.1 | 0.6 | 0.1 |
| 3 | 4.4 | 5.0 | 2.9 | 1.1 | 0.3 | 0.1 |
| 4 | 1.7 | 2.0 | 1.2 | 0.4 | 0.1 | 0.0 |
| 5 | 0.6 | 0.6 | 0.4 | 0.1 | 0.0 | 0.0 |
Percentages, shaded by likelihood. The grid runs to 8-8 behind the scenes; scorelines above 5 are too rare to be worth the ink.
Most likely scorelines
These are fair probabilities — no bookmaker margin. A real price for the same outcome will always be shorter than the fair odds shown, and the gap is the book's fee.
Start at 1.6 and 1.15 — a fairly ordinary home fixture. Over 2.5 sits near 52%. Now raise the home number to 1.9, a change you could easily justify from a handful of xG readings, and Over 2.5 jumps to about 59% while the home win goes from roughly 47% to 54%. That sensitivity is the point: a modest wobble in your rate estimate moves the price far more than it feels like it should. It is a good argument for demanding a lot of matches before you trust a rate, and a good reason to be sceptical of anyone quoting a probability to two decimal places.
xG is a description of chance quality. It is not a betting signal, and neither is a probability derived from it. The only test that means anything is whether the resulting numbers hold up when graded — which is why we score ours on calibration, Brier score and closing-line value rather than on profit, and publish the answer either way. Ours currently shows no demonstrated edge over closing prices, and the bookmakers have the same xG data we do.
How to use it without fooling yourself#
- Always ask whose xG it is. Compare like with like or don't compare.
- Use it to reinterpret results, not to predict single matches. A run of results that contradicts the underlying numbers is worth a second look; one match of it is worth nothing.
- Separate the two jobs. Descriptive claims need one match. Predictive claims need dozens.
- Remember it is one input. The models behind Tofiko use xG-informed rates as part of a goals-based view, then blend that view with a ratings model that ignores goals entirely — precisely because no single lens sees the whole match.
Related
- The Poisson Distribution: Turning Expected Goals Into Scorelines
- How Our Models Work: Poisson, Dixon-Coles and Elo
- Over/Under 2.5 Goals Explained: The Market That Ignores the Winner
- Calibration: The Only Promise a Prediction Can Keep
- Poisson Calculator — Scoreline, 1X2, Over/Under & BTTS Probabilities
- Expected Value Calculator — Is Your Bet +EV?
Frequently asked questions
What does xG mean in football?
Expected goals. Every shot is given a probability of being scored, based on characteristics like distance, angle, body part, the type of pass that created it and the defensive pressure. Add up those probabilities across a match and you get a team's xG for that match.
Is 0.3 xG a third of a goal?
No. It means a shot of that type is scored about 30% of the time and missed about 70% of the time. The chance is either converted or it isn't — the 0.3 is the long-run frequency for chances like it, not a fraction of a goal that was somehow half-scored.
Why do different websites show different xG for the same match?
Because xG is a model output, not a measurement. Each provider trains its own model on its own event data with its own set of inputs, so the same shot gets a different number. Comparing xG figures across providers is not comparing like with like.
Does xG account for who took the shot?
Standard xG deliberately ignores the identity of the shooter — it asks what a typical player would do with that chance. That is what makes it a clean measure of chance quality, and it is also why it cannot tell you anything about finishing skill.
Can you bet on xG?
xG is an input to a rate estimate, not a betting signal by itself. A side that has underperformed its xG is not automatically a value bet — bookmakers see the same numbers. xG becomes useful once it feeds an expected-goals estimate that is then converted into probabilities and compared with a margin-free price.