Trading on xG: Turning Expected Goals into Match Probabilities
Expected goals xG betting model explained: turn team xG and xGA into a Poisson goal model, derive match and totals probabilities, and beat results-based prices.
A team can win 2-0 and have been the worse side. The scoreline says three points; the expected goals say they conceded five clear chances and snatched two against the run of play. The market that prices the next match off that scoreline is pricing off luck — and an expected goals xG betting model is how you price off the actual performance instead. With the 2026 World Cup kicking off June 11 in Mexico City and 104 matches feeding a frenzy of repricing, the trader who reads xG instead of results gets the early number right while everyone else is still reacting to the final whistle.
Expected goals assigns every shot a probability of scoring based on where and how it was taken — distance, angle, body part, whether it was a counter or a set piece. Sum those probabilities across a match and you get how many goals a team should have scored given its chances. Over a season, xG predicts future goals better than past goals do. This article turns that signal into tradeable prices: team xG and xGA into a Poisson goal model, then into match, totals, and both-teams-to-score probabilities — and the small-sample traps that make a World Cup the most dangerous place to use it.
Why xG beats results over small samples
The core insight is that finishing is noisy and chance creation is stable. A striker converting 25% of his big chances one month and 8% the next isn't getting worse — he's regressing toward his true rate. Goals are the visible output; xG is the repeatable input. Models built on input predict the future; models built on output chase variance.
This matters most precisely when you have few matches to look at — which is the entire World Cup group stage. After three games, a team's goal tally is almost pure noise. Three matches is a sample so small that a single deflected free-kick or a hot keeper swings the whole record. Its xG and xGA over those same three games are far more informative because every shot contributes, not just the handful that found the net.
Concretely: a side that has taken seven points from three games but posted 3.1 xG and 4.4 xGA has been outscoring its process. The market, anchored to the points, overrates them. Your xG read says regression is coming, and that gap is the trade.
From team xG and xGA to expected goals in a match
You can't use a team's raw xG directly — it's relative to the opponents it faced. The clean approach normalises against the tournament average, the same offence/defence logic an SPI-style rating uses. Let the average team score L goals per match (call it 1.35 at a World Cup, where defences are organised and games tighten).
For team A facing team B, A's expected goals is roughly:
xG_A = (A's attack strength) × (B's defence weakness) × L
where attack strength is A's xG-for per match divided by the average, and defence weakness is B's xGA-conceded per match divided by the average. A team that creates 1.5× the average xG against a defence that concedes 1.2× the average, in a 1.35-goal environment, projects to 1.5 × 1.2 × 1.35 ≈ 2.43 expected goals. You run the mirror calculation for team B's expected goals against A's defence.
Now you have two numbers — say France projected at 1.9 expected goals and Croatia at 0.9. Those two numbers are everything you need to build the full probability distribution.
The Poisson step: goal expectations to match probabilities
Goals in football arrive roughly at random over 90 minutes, which makes the Poisson distribution the standard tool for converting an expected-goals number into the probability of each exact scoreline. For a team expected to score λ goals, the probability of scoring exactly k is:
P(k) = (λ^k × e^(−λ)) / k!
Take France at λ = 1.9. The chance France scores exactly zero is e^(−1.9) ≈ 15%; exactly one is 1.9 × e^(−1.9) ≈ 28%; exactly two is about 27%; three is about 17%. Do the same for Croatia at λ = 0.9, where a blank is e^(−0.9) ≈ 41%.
Assuming the two teams' scoring is independent, you multiply to get every scoreline's probability — France 1-0 is P(France=1) × P(Croatia=0), and so on. Sum the cells where France scores more than Croatia for the win probability, the diagonal for the draw, and the rest for the away win. For these numbers France comes out around 63% to win, 23% to draw, 14% to lose — a full three-way price built from two xG inputs.
xG-Poisson model — France v Croatia three-way
The market here is pricing France a touch light at 58¢ versus the model's 63% — a 5-point edge to back. Where your model bar towers over the market bar, you buy; where it's short, you fade. The same grid of scoreline probabilities also hands you totals and both-teams-to-score for free: sum every cell where the goals add to three or more for the over 2.5 price, or every cell where both teams score at least one for BTTS. One model, a whole match's markets — the mechanics of which are pulled apart in the over/under totals and BTTS guide.
A worked example: is the over +EV?
Run the totals. With France at 1.9 and Croatia at 0.9, total expected goals is 2.8, and summing the Poisson grid gives roughly a 55% chance of three or more goals — an over 2.5 that should price around 55¢. Suppose the market is selling the over at 48¢ because two cagey defences and a low-scoring reputation have scared the price down. Plug your fair value against the price and let the calculator render the verdict.
Is this contract +EV?
EV is only as good as your probability. Garbage-in, garbage-out — devig the market and pressure-test your model.
The math: EV per contract = 0.55 × (1 − 0.48) − 0.45 × 0.48 = 0.286 − 0.216 = +$0.07 per contract, roughly a +15% return on risk. That's a clean edge, born entirely from the market trusting a reputation while your model trusts the chance creation.
Now stress it. Drop your fair value to 48% — exactly the price — and EV goes to zero. Drop it to 45% and you're lighting money on fire. The lesson is the same one xG keeps teaching: the price is fair until your independent number says otherwise, and your number is only as good as the inputs you fed it.
The World Cup small-sample caveats
Here's where xG bites back. Everything above assumes you have a reliable xG profile for each team — and at a World Cup you often don't.
International xG samples are thin and stale. A national team plays a dozen-odd competitive matches a year, many against mismatched opposition in qualifying. Building a strength estimate off that is far shakier than off a club season. Don't price a team purely on its three group-stage xG figures — three matches of xG is still three matches.
Opponent quality skews everything. A team that ran up 3.0 xG against a minnow in qualifying isn't a 3.0-xG team. You must adjust for who the chances came against, or your attack-strength multiplier is fiction. The normalisation step earlier assumes opponent-adjusted inputs — feed it raw numbers and you get garbage out.
Tournament football tightens. Knockout matches are more conservative than the league games most public xG models are trained on. Expected-goals environments fall; teams sit deeper with a lead. A model calibrated on open league play will systematically overprice goals in the latter rounds unless you lower the baseline L.
“Results tell you what happened. Expected goals tell you what is likely to happen next — and only the second one has a price worth trading.”
The team that scored will dominate tomorrow's headlines. The team that created the chances will dominate next week's results — and if you priced the match off xG while the market priced it off the scoreline, you were already on the right side of the line.
Frequently asked
What is an expected goals (xG) betting model?
How do you turn xG into match probabilities?
Why does xG beat results over small samples?
What is the Poisson formula for goal probabilities?
Why is xG risky to use at a World Cup specifically?
How should I combine xG with other models?
Sources (5)
- Polymarket — 2026 FIFA World Cup Winneraccessed 2026-06-06
- Kalshi — Sports event contractsaccessed 2026-06-06
- FBref — xG and xGA data (Opta/StatsBomb)accessed 2026-06-06
- Understat — Expected goals dataaccessed 2026-06-06
- FIFA — 2026 World Cupaccessed 2026-06-06