"Expected Goals" - xG - has become the single most important stat in football analytics. It's also the stat sharp bettors use to find matches the bookies have priced wrong. If you understand xG and your bookmaker doesn't fully price it in, you're playing with an edge.
xG quantifies the quality of a goal-scoring chance, not just whether a shot happened. Every shot is rated 0-1 based on:
A penalty is roughly 0.78 xG. A header from 18 yards under pressure is around 0.05. A one-on-one with the keeper is roughly 0.40.
Sum xG values across a match → "expected goals" for each team. Compare to actual goals → tells you whether goals were earned or lucky.
Team scoring 2 goals per match while xG averages 0.9? They're getting lucky. The market over-rates them. Their next 5-10 matches likely revert.
Sharp angle: fade overperformers after a 5+ match hot streak.
Team losing matches while creating xG of 1.8 vs opponents' 0.7? They're playing well, getting unlucky finishes. Market under-rates them. Future matches should regress to true performance.
Sharp angle: back underperformers who post strong xG numbers but low results.
Combined xG average gives you fair total. Liverpool generating 2.4 xG per home match + away team 1.1 xG per away match = combined 3.5 xG. Over 2.5 line is value at most prices.
Across a single match, xG is noisy. Across 10 matches, it converges. Across 20+ matches, xG is the most accurate predictor of future scoring rate that's publicly available.
The pattern most amateur bettors miss: recent goals are noise; recent xG is signal. A team scoring 8 goals in 5 matches with 4.5 xG is on a hot run. The market loves them. Sharp money fades them. The next 10 matches will look closer to xG (1.8 goals/match) than recent goals (1.6 goals/match).
Free public sources:
For each team, calculate the season's xG-for and xG-against per match. The ratio (xGF / xGA) tells you team strength better than win/loss record:
| xGF/xGA ratio | Team strength | Betting implication |
|---|---|---|
| 2.0+ | Title contender | Avoid backing - already priced |
| 1.5-2.0 | Top 4 quality | Selective backs only |
| 1.1-1.5 | Mid-table strong | Hidden gems if priced as average |
| 0.9-1.1 | True mid-table | Fair price |
| 0.7-0.9 | Mid-table weak | Faders if market over-rates them |
| Under 0.7 | Relegation candidate | Avoid backing |
Erling Haaland scoring 1.5 goals on 1.1 xG per match isn't variance - it's elite finishing. Some players consistently outperform xG by 15-25%. Don't blindly bet "regression to xG" if a clinical finisher is leading the line.
Same applies to teams with elite goalkeepers (xG-against vs goals-against gap). xG is a baseline, not the final word.
Especially. Defensive struggles where neither team creates much become decisive on xG. Total goals U2.5 is often value when both sides post sub-1.0 xG.
Lower correlation than league matches because of higher motivation variance. Use xG as one input, not sole input, for cup ties.
Building a basic xG model from public data takes a weekend in Python. But Understat's model is essentially free and good enough for most bettors. Don't reinvent.
Most do - Pinnacle, Bet365 sharp lines all incorporate xG. But retail SA bookies are slower to adjust, and that's where the edges live for SA bettors.