How xG is calculated
Every shot gets a probability of becoming a goal, based on where it was taken from, how (foot or head), what kind of pass set it up and whether it was a penalty. A close-range shot in front of goal might be worth 0.4 xG, a strike from outside the box 0.03, a penalty around three quarters of a goal.
Add up all of a team’s shots and you get its xG for the match. A side that took 15 shots worth 1.8 xG and did not score had the chances: the finishing let it down, or the other keeper had a great day.
xG versus actual goals
Goals are rare — two or three a match on average — and one deflection can change a result. xG is less noisy because it counts every chance, not just the ones that went in. Over a short run, expected goals tell you more about how good a team is than the league table does.
Actual goals still carry information, though: great strikers score a little above their xG, good keepers concede a little below it. So the model does not pick one — it blends both.
How the model uses xG
Home advantage, line-ups and absences, and fixture congestion come on top. More on how the model works.
- Attack and defence strength. A Dixon–Coles model estimates how much each team usually creates and concedes, from a blend of goals and xG over the last four years, with recent matches weighted more. In Europe’s top five leagues the blend leans on actual goals (70/30); elsewhere it leans on xG (30/70) — that is what tested better. Where there is no xG, the model uses goals.
- Ratings. On top of that sit two ratings that update after every match: one on goal difference adjusted with xG, one on results (an Elo rating).
- Calibration. A separate model, trained only on matches the main one had not seen, turns all of this into final home, draw and away probabilities — so that 60% on the site comes true about 60 times out of 100.
- Scores and totals. The two teams’ expected goals produce a grid of scoreline probabilities, tuned to match the final result probabilities so every number on a match page adds up. The shape of that grid for totals and both teams to score comes from a version of the model built almost entirely on xG.
“Expected goals” on a match page
The Probabilities block on a football match page does not show the xG of a game already played — it is a forecast: how many goals the model expects from each side in this match. “1.6–0.9” is not a predicted score; these are averages. A team expected to score 1.6 will sometimes score none and sometimes three, and about one and a half on average.
Where xG falls short
- It does not know who took the shot: the league’s top scorer and a centre-back from the same spot get the same value.
- It misses chances without a shot: a dangerous cross that nobody got a touch on is worth zero.
- It depends on the score: a team protecting a lead often sits deep and concedes long-range shots, so the opponent’s xG grows faster than its real chances.
- Different providers calculate xG differently, and some leagues have none at all.
- One match is noise too: xG starts to mean something over ten games or more.
How we check it
The model was run over 48,148 club football matches of history, each time using only matches played before the estimate. How often its percentages came true is on the accuracy page.
FAQ
Does 2.0 xG mean the team should have scored two goals?
No. It is an average: with chances like those a team scores about two on average, but it could score none or four.
Why does the model not use xG alone?
Actual goals carry information too — about the quality of strikers and keepers. The share of goals and xG in the blend was chosen by testing on history and depends on the group of leagues.
Where can I see expected goals on the site?
On a football match page, in the Probabilities block: how many goals the model expects from each team. The power rankings are also built on the season’s xG and goals.