Expected Goals (xG) in NHL Betting

Expected goals is the stat that answers the question Corsi cannot: not just how many shots were taken, but how dangerous were they? A wrist shot from the blue line and a one-timer from the crease are both shot attempts, but they carry wildly different probabilities of becoming goals. The xG model assigns a probability to each shot based on its characteristics, then sums those probabilities to produce an expected goal total. For bettors, xG is the closest thing to a ground truth about how a game actually unfolded, stripped of the randomness that makes hockey both beautiful and maddening.
See also Corsi and Fenwick explained.
How xG Models Work
An expected goals model evaluates every unblocked shot attempt and assigns it a probability of scoring based on several factors. The most important factor is shot location — a shot from the low slot has a much higher probability of going in than one from the point. Beyond location, most models incorporate shot type (wrist shot, slap shot, deflection, backhand), whether the shot followed a rush or a sustained zone entry, the angle relative to the net, and whether the shooter had time and space or was under pressure.
Each shot receives a value between 0 and 1. A routine wrist shot from the blue line might carry an xG of 0.02, meaning it has a 2% chance of scoring. A cross-crease pass that leads to a one-timer from the low slot might carry an xG of 0.35 or higher. Sum all the individual shot values for a team, and you get their total expected goals for that game. If a team generates 3.2 xG and their opponent generates 1.8 xG, the first team was the better side regardless of the actual score.
Several public xG models are available, with MoneyPuck, Evolving Hockey, and Natural Stat Trick being the most widely used. Each model weights the input variables slightly differently, which means their outputs vary. A shot that one model values at 0.15 might be valued at 0.12 by another. These differences are usually small, and the overall picture — which team created better chances — is generally consistent across models. For betting purposes, checking two or three models and looking for agreement is a practical approach.
The power of xG lies in its ability to separate process from outcome. A team that generates 3.5 xG per game but only scores 2.5 actual goals is being let down by poor finishing, bad luck, or some combination of both. Over time, that team’s actual scoring will drift closer to its xG, because shooting percentage is one of the least sticky statistics in hockey. The same logic applies in reverse: a team scoring 3.5 goals on 2.5 xG is overperforming and due for a correction.
Shot Quality vs. Shot Volume
The debate between shot volume and shot quality is central to understanding xG. Corsi treats all shot attempts equally and rewards teams that generate the most. xG says that not all attempts are created equal and rewards teams that generate the best.
In reality, the best teams do both. Elite offensive teams generate high shot volumes from dangerous locations, which means their Corsi numbers and their xG numbers align. These teams are the least interesting from a betting perspective because the market prices them accurately — there is no disconnect between their process metrics and their results.
The interesting teams, from a bettor’s standpoint, are the ones where shot volume and shot quality diverge. A team with a mediocre CF% but a strong xG% is generating fewer attempts overall but making them count by attacking from high-danger areas. This team may be undervalued by bettors who rely solely on Corsi, because the raw possession numbers do not capture the quality of their chances.
Conversely, a team with elite Corsi numbers but a weak xG% is generating lots of attempts from low-danger locations. They control the puck and pump shots toward the net, but those shots come from the perimeter and carry low individual scoring probabilities. This team may look dominant on the possession sheet while actually creating less offensive threat than their numbers suggest. Betting on them to cover puck lines or hit overs might be a trap if the goal volume does not match the attempt volume.
The practical takeaway is that xG and Corsi should be used together, not as substitutes. Corsi tells you who is controlling the puck. xG tells you what they are doing with that control. A team that ranks well in both metrics is genuinely dominant. A team that ranks well in one but not the other is worth investigating further — and often worth betting against.
Identifying Overperformers and Underperformers
The most direct betting application of xG is identifying teams whose actual goal totals have diverged significantly from their expected goal totals. This divergence points to unsustainable performance — either good luck that will eventually run out or bad luck that will eventually turn around.
An overperforming team is one that scores more actual goals than its xG predicts. If a team has scored 85 goals through 30 games but its cumulative xG For is only 70, that 15-goal surplus is a red flag. It means the team is converting shots at a rate above the expected baseline, which usually cannot last. Shooting percentage regresses toward the mean over the course of a season, and when it does, the goals dry up. These teams are overvalued by the market because their record looks better than their process warrants.
An underperforming team is the mirror image. If a team has scored 60 goals but its xG For suggests they should have scored 75, they are being punished by variance. Their shot generation is strong, their chance creation is legitimate, and yet the puck is not going in. Historically, these teams improve as the season progresses and the randomness evens out. Their moneyline odds are longer than they should be, and backing them during the cold stretch can produce positive expected value.
The same logic applies on the defensive side. A team allowing fewer goals than its xG Against predicts is getting outstanding goaltending, favorable bounces, or both. When that goaltending regresses — and it almost always does — the goals against spike. A team allowing more goals than its xGA predicts is getting worse goaltending or worse luck than it deserves, and the underlying defensive structure is better than the scoreboard shows.
The sweet spot for regression-based betting is typically 25-40 games into the season. Earlier than that, the xG sample is too small to be reliable. Later than that, the market has had time to adjust and the inefficiency has been partially priced out. The window is narrow, which is why staying on top of the data weekly — rather than checking once a month — matters.
Applying xG to Your Betting Process
Integrating xG into your daily handicapping does not require a degree in statistics. It requires a routine: before betting any game, check each team’s rolling xG For and xG Against over their last 10-15 games, compare those numbers to their actual goals, and note any significant divergences.
For moneyline bets, xG helps you assess whether a team’s recent record reflects genuine quality or variance. A team that has won six of its last eight games but posted a negative xG differential during that stretch is surviving on hot goaltending or unsustainable finishing. Fading that team — betting against them at what may be an inflated line — is a classic xG-driven play.
For totals, xG provides a more nuanced picture of expected scoring than raw goals-per-game averages. A game between two teams with high xG For numbers is likely to produce more goals than a game between two low-xG teams, even if their recent actual scoring totals are similar. The xG model accounts for shot quality in a way that goal totals alone cannot, which gives you a sharper read on whether the over or under is the better side.
For puck line bets, xG differential — the gap between a team’s xG For and xG Against — predicts margin of victory better than actual goal differential does over small samples. A team with a +0.8 xG differential per game is creating and suppressing chances at a level consistent with winning by more than one goal regularly, even if their actual results have been closer. This makes them a stronger puck line favorite than the scoreboard might suggest.
The Model and the Margin
xG is not a crystal ball. It is a model, and every model has blind spots. It does not capture goaltender quality directly — a team facing an elite goaltender will see their xG stay the same even though their actual conversion rate drops. It does not account for coaching adjustments mid-game, line matching, or the psychological dimension of hockey. And it relies on shot tracking data that, while improved dramatically in recent years, is still subject to human recording error at the arena level.
What xG does is give you a structured, repeatable way to evaluate hockey games that goes beyond the box score. It tells you what should have happened based on the chances created, and it flags the gap between should and did. That gap is where the betting market mispricing lives. Not every xG divergence leads to a profitable bet, but over a full season of disciplined application, the bettors who track expected goals consistently will see the picture more clearly than those who rely on actual goals alone — and in betting, seeing clearly is the entire game.
Expected goals xG in NHL betting at hockey betting.