xG Models in Football Betting: What Expected Goals Actually Tells You

Updated September 2026
Licensed
usAvailable in US
Fast payouts
18+ Only
Football analyst studying an xG shot map for a Premier League fixture on a laptop

Expected goals — xG — went from an analyst’s curiosity to a household phrase in less than a decade. The number now flashes up on Match of the Day, gets quoted by managers in press conferences, and underpins most of the public-facing football analytics. What still doesn’t get talked about as much is how to actually use xG in betting, where the data is most predictive, and where the public conversation has run ahead of what the metric can reliably tell you. The UK remote football market generated £1.3 billion of GGY in the year to March 2025, and xG-aware betting is one of the few approaches that can produce sustainable edge across that volume.

The honest framing is that xG is a useful input, not a complete model. Treating it as either is a common mistake — under-weighting it leads to relying on results that don’t reflect underlying performance, over-weighting it leads to ignoring contextual factors that the metric can’t capture.

How xG Is Calculated

The xG calculation assigns a probability to every shot based on its characteristics. Opta’s model considers up to twenty contextual factors per shot — including shot location, body part, type of assist, defensive pressure, goalkeeper position. The output is a probability between zero and one, representing the chance that an average finisher in average circumstances would convert the shot.

Pitch graphic showing different shot locations colour-coded by xG value

The model is trained on hundreds of thousands of historical shots. Opta’s training base includes around a million shots, which is enough to produce well-calibrated per-shot probabilities across the major contextual configurations. A shot from six yards out, on the goalkeeper’s side, with the goalkeeper out of position, generates a high xG (often around 0.6 to 0.8). A shot from twenty-five yards out, central, with the goalkeeper set, generates a low xG (often around 0.04 to 0.06).

The aggregation up to match-level xG is just summing the per-shot probabilities. A team that takes ten shots in a match might generate 1.4 xG if the shots are mostly low-quality, or 2.8 xG if the shots are mostly high-quality. The team-level xG is a single number that summarises the overall chance creation across the match.

The match-level xG is what most betting applications use. The per-shot xG is more useful for individual player analysis (which players are getting into high-xG positions) and for understanding the underlying chance quality rather than just the volume.

xG-Based Forecasting and Market Comparison

The applied research on xG-based forecasting has been clear and consistent across the past several years. A simple model using rolling xG-for and xG-against, applied disciplined to the Bundesliga where the data is rich and the markets are reasonably sharp, can produce ROI in the ten-to-fifteen-percent range at best-available prices.

Comparison chart of xG-based forecast versus bookmaker implied probability

The mechanism is straightforward. The model produces an expected match-total goal count and an expected match-result distribution. The bettor compares those forecasts to the bookmaker’s implied probabilities. When the forecast diverges meaningfully from the market, the bettor takes the side the forecast favours.

The Premier League is more challenging for xG-based betting than the Bundesliga because the EPL market is sharper. Professional money has pushed the prices toward what the underlying chance-creation data supports, and the gap between a simple xG forecast and the market price is correspondingly smaller. The edge still exists but it’s thinner, and the implementation discipline required is higher.

The Championship is somewhere between the two. The data is good enough to support meaningful xG-based forecasting, the market is less sharp than EPL, and the resulting edge is larger than EPL but harder to scale because the per-fixture liquidity is lower.

The application is most reliable on the goal-totals markets and the BTTS markets, where the conversion from xG forecast to market comparison is cleanest. Match-result markets benefit from xG inputs but require more contextual judgment because xG doesn’t capture every dimension of why one team beats another.

When xG Misleads

The metric has well-known blind spots that the casual user often misses. Understanding these is essential before applying xG to betting.

Premier League striker missing a high-xG chance in front of an open goal

First, xG doesn’t capture finishing quality. Two teams with identical xG can have very different goal totals because some players genuinely finish above the average xG conversion rate over long samples. Goalscorers like Erling Haaland and Kai Havertz have demonstrated career-level over-performance of their xG, suggesting their finishing skill is genuinely above average. xG-naive models that ignore these per-player finishing tendencies will systematically underrate teams with elite finishers.

Second, xG doesn’t capture defensive quality beyond shot prevention. A team with a great goalkeeper allows fewer goals than their xG-against would predict, because the keeper saves shots that an average keeper would concede. The xG metric doesn’t adjust for keeper quality, so xG-against is biased against teams with strong keepers and biased toward teams with weak ones.

Third, xG doesn’t capture set-piece dynamics well. The set-piece component of xG models is less refined than the open-play component, because the variation in set-piece routines and personnel is harder to model. Teams with strong set-piece routines often outperform their xG; teams with weak set-piece routines often underperform.

Fourth, xG doesn’t capture context effects like match state. A team chasing a goal in the final twenty minutes generates more shots, often of lower quality, than they would in a level match. The match-state-adjusted versions of xG handle this better than the basic versions, but they’re not always available in the public data sources.

Time-Sensitive xG and Rolling Windows

The rolling window for xG analysis is one of the choices that meaningfully affects the predictions. Too short a window (three or four matches) is dominated by random variance. Too long a window (twenty or more matches) includes outdated data that no longer reflects the team’s current form.

Analytics screen showing a rolling 10-match xG window for a Premier League side

The window I work with most consistently is six to eight matches, weighted toward the most recent fixtures. This gives enough sample size to dampen single-match variance while staying current enough to reflect tactical or personnel changes. For early-season betting, the previous season’s data needs to be blended in until enough current-season fixtures have been played to support a standalone read.

The blending of previous-season and current-season data is genuinely tricky. A team that overhauled their squad in the summer has very different underlying numbers than the previous-season data implies. A team that kept continuity has similar numbers. The decision about how heavily to weight each isn’t formulaic — it depends on the specific personnel and tactical changes that happened in the summer window.

The other window decision is on form versus level. Teams move through periods of higher and lower performance within a season. The xG trajectory over the past eight matches might show genuine improvement, genuine decline, or just noise. Distinguishing real trend from noise requires looking at the underlying shot data — has the team’s shot quality improved, or just their finishing? Has their opponent’s shot quality declined, or just their conversion?

Combining xG with Other Signals

xG works best as part of a broader analytical framework rather than as a standalone signal. The bettors who profit using xG are typically combining it with PPDA-derived pressing analysis, with team-news inputs about injuries and rotation, and with contextual reads about specific match-up dynamics.

Dashboard combining xG, PPDA and team news signals into a single match read

A team with strong xG underlying numbers but with their first-choice striker injured has a different probability of scoring than the xG number alone suggests. A team with weak xG underlying numbers but with a tactical mismatch favouring them against a specific opponent style has a different probability of winning than the xG implies.

The combinations that I’ve found most consistently profitable in EPL betting: xG-based goal-total predictions combined with PPDA-based intensity reads (high pressing + high xG = strong over 2.5 bets), xG-based result predictions combined with team-news adjustments (full-strength team with strong xG fundamentals = strong value at favourable prices), and per-player xG involvement combined with assist-leg pairings on the same fixture (a creative player with high underlying expected-assist numbers paired with the right goalscorer prop can be a layered value play).

The simplest disciplined approach for the working bettor: maintain a rolling six-to-eight match xG-for and xG-against for each EPL team, compute an expected match goal-total from the relevant teams’ numbers, and compare that to the bookmaker’s implied total at the 2.5 line. When the expected total is meaningfully above the market’s implied number, the over is value. When it’s meaningfully below, the under is value. Stick to that simple read and avoid over-engineering with too many additional inputs.

For the related question of how the markets where corners are priced respond to the same kinds of pressing-intensity and tactical-setup inputs — and where the corner-market edges live — see the piece on corners market strategy.

How long does it take an xG-based betting strategy to show real ROI?

The realistic timeframe for distinguishing genuine edge from random variance is one full season minimum, and ideally two. Per-bet variance on xG-driven plays is high enough that a hundred bets isn"t always sufficient to establish statistical confidence in the edge. Two seasons of disciplined betting at consistent stake sizes gives a sample that can support a confident read on whether the approach is profitable.

Should casual bettors use xG?

They can, but only as one input among several. Building a betting strategy entirely around xG without combining it with team news, tactical context, and market-pricing comparison usually leads to overfitting to one signal. The most reliable applications use xG as the foundation and layer other inputs on top, rather than treating xG as the complete answer.