Desk story / Guides
How to Read Expected Goals (xG) for Smarter Soccer Bets
xG is a metric that divorcesthe narrative of a game from the underlying quality. A team can lose 2-0 and still have outplayed their opponent. xG tells you who actually outplayed who.
- Filed
- Byline
- Bri Sutton
- Length
- 579 words, about 3 minutes
- Copy ID
- SM365-CC288412

okay, so like, expected goals. been on chain since 2017 and this is genuinely the most useful metric for betting that isn't on a blockchain. xG is basically this: for every shot in a soccer game, you assign a probability that the shot results in a goal. add up all those probabilities and you get expected goals.
the point is that goals are random. a good team can get unlucky and lose. a bad team can get lucky and win. xG strips away the randomness and shows you the underlying quality.
here's how it works in practice. team A takes 15 shots. each shot has a probability of being a goal based on location, angle, defensive pressure, et cetera. a shot from the penalty spot has like a 0.75 xG (75 percent chance of being a goal). a shot from 30 yards away has like 0.05 xG. you sum up all the shots and you get total xG. maybe team A has 2.3 xG for the match.
team B takes 5 shots. the shots are closer, cleaner, less defended. team B has 1.8 xG. team A wins 2-1. the narrative is team A played better. the xG narrative is team A created more chances but team B was more efficient.
the betting angle
when you see a match where team A has higher xG but lost, that's information. that team will, over time, start winning those matches because the underlying quality was there. the market might have paid out on team B's win, but the smart bettor is already moving to fade team B in the next match or bet on a rematch if it happens.
xG regression is real. a team that is outscoring their xG (winning more games than the underlying chances suggest) will eventually regress. their luck will run out. you can bet against them.
conversely, a team that is underperforming their xG will eventually improve. you can bet on them. this is called "closing line value" and it's the core of sharp sports betting.
how to find xG data
stats like understat, statsbomb, and fbref all publish xG. you go to the match, you see the xG for both teams. you compare to the actual score. you look for mismatches. a team that is consistently outperforming their xG is either lucky or their underlying quality is not captured by the metric. either way, the market is probably wrong.
the smarter move is to look at rolling xG averages. what was team A's xG over the last 5 games? what was team B's? are they trending up or down? a team with rising xG is getting better. a team with falling xG is falling apart, even if their recent results have been good (because they're being carried by luck).
the limit
xG is not perfect. it doesn't account for things like player mentality, team chemistry changes, or coaching adjustments. it's purely about shot quality and shot volume. but for soccer betting, it's the best macro signal of team quality that exists.
when you're looking at a match, use xG as a filter. if the opening line doesn't match the xG narrative, the market might be wrong. if the xG narrative has shifted (one team's xG has improved significantly), the line might not have caught up yet. that's where the edge is.
bitcoin is provably fair. xG is provably observable. both are things you can check yourself instead of trusting the middleman. that's why i like both.