Content

Expected goals in NHL analytics is the modelled probability that a given shot becomes a goal, based on the shot’s location, type, situation, and the events immediately preceding it. Sum those probabilities across an entire game, and you have a team’s expected goals total — a number that strips away the noise of goaltender heroics, post-shots, and unlucky bounces to leave you with a relatively clean read of how often a team should have scored given the chances they actually generated. In a 2024/25 NHL season that produced just 2.71 power plays per game, the lowest rate since 1977/78, xG has become one of the most useful signals available to anyone trying to price totals and game segments at NHL pace.
I have been using xG models for nine years across NHL totals and goaltender prop markets, and the metric has earned its place as the single most reliable input I run alongside line history and goalie confirmation. Actual goals are noisy on a per-game basis — a 2-1 final could have been a 4-3 if a couple of breakaways had gone the other way, or it could have been a 1-0 if the post had cooperated — but the underlying expected goals figure tells you which of those alternative scorelines was closer to the truth. This piece walks through what xG actually is, how it compares to actual results, where I apply it to totals markets, and the traps that make naive xG betting more dangerous than it looks.
What expected goals actually is
The clearest mental model for xG is to think of every shot as a small lottery ticket. A wrist shot from the high slot might be worth 0.08 of a goal. A redirect from inside the dot might be worth 0.22. A point shot through traffic might be worth 0.04. Sum every shot’s value across sixty minutes, and you have the game’s expected goals total for each team. The modelling itself uses logistic regression or boosted trees trained on every shot in the publicly available NHL play-by-play dataset, with features like shot distance, angle, shot type, whether the shot was preceded by a pass across the slot, whether the game was at even strength or on a power play, and a dozen or so smaller variables.
Different public xG models use different feature sets, and the differences matter at the margin. Natural Stat Trick, Evolving Hockey, and MoneyPuck are the three public xG sources most NHL bettors will encounter, and each produces slightly different per-game xG values for the same game. The differences are usually within a tenth of a goal, but they exist, and the practical effect is that you should not switch between sources mid-season — pick one, learn its quirks, and stick with it. Switching from a model that systematically underweights net-front presence to one that overweights it will create false signals across the bridge.

xG versus actual goals — where the gap is the signal
The interesting NHL games are the ones where actual goals and expected goals tell different stories. A team that loses 4-1 while generating 3.4 expected goals to their opponent’s 2.1 is not the same team as one that loses 4-1 while generating 1.6 expected goals to their opponent’s 3.8. The first team played a better game than the scoreline suggests, ran into a hot goaltender, and is likely to bounce back in their next outing; the second team got handled, and the result reflects the underlying performance. The market often prices the next game based on the scoreline rather than the xG, and that gap is one of the more durable betting angles I work with.
The most reliable application of the actual-versus-expected gap is on the next day’s totals market. A team that outshot a hot goaltender for two consecutive games — racking up 6.5 expected goals against without scoring more than twice in either game — is a team whose next totals price tends to underprice their offensive output. The market memory on NHL totals is short. By the third game of that sequence, the line has usually corrected, but the first two games of the bounce-back stretch is where the value lives. I do not bet every such spot, but I look for them, and the underlying read is always the same — actual goals are noisy on small samples, and xG is the clearer signal of what is coming next.

Applying xG to NHL totals
The most direct application of xG to a totals market is comparing the implied total of the line to the sum of the two teams’ season xG-for and xG-against averages. If the total is 6.0 and the two teams’ xG profiles suggest a combined expected of 6.4 in a neutral-venue game with two average goaltenders, the lean is over. The work is mostly in the adjustments — what does the home team’s xG profile look like specifically at home, what does the goalie matchup do to expected save percentage, and how does pace differ between the two clubs. Layering those adjustments produces a single xG-based projection for the game total, which then gets compared to the market line.

The special-teams component is where xG totals work intersects with the broader power-play analytics question. NHL power play conversion in 2024/25 hit 21.6 percent, the highest league-wide rate since 1985/86, even as power plays per game dropped to that 2.71 historic low. Fewer power plays at higher conversion rates is a different totals environment than the same total power-play goals distributed across more opportunities, and any xG-based totals projection has to handle special teams as a separate component. I cover the specific mechanics of how special teams move totals in my piece on how NHL power play betting drives totals and props, but the xG framework is where the projections start.
The xG traps that cost real money
The first xG trap I fell into early in my modelling work was treating per-game xG values as if they were precise measurements rather than noisy estimates. A team’s single-game xG figure has standard error of plus or minus 0.4 goals or so, which means treating a 3.1 xG performance as meaningfully different from a 2.9 xG performance is statistical noise wearing the costume of insight. The metric needs sample. Twenty-game rolling xG averages are roughly the minimum I trust for team-level projections, and even those are noisy on a per-day basis. Drawing strong conclusions from a five-game xG sample is the analytics equivalent of believing in a coin’s bias after three heads in a row.
The second trap is goaltender quality. xG models assume an average goaltender. They do not. If the team’s actual goaltender is a top-ten starter, their goals-against will systematically underperform xG-against — that is exactly what an elite goalie is paid to do. Layering the goaltender’s save percentage versus expected over their xG-against gives you a more honest projection, but it requires extra modelling work and a sample size for the goalie that small-volume backups simply do not have. The third trap, related but distinct, is empty-net goals. Late empty-netters inflate actual goal totals without contributing to xG-for at the team level, which means xG-based totals projections will systematically run slightly low on games that finish with a one-goal lead and a pulled goalie.

The xG read I run before every totals ticket
The single check that has paid me back most reliably across nine years of NHL totals work is comparing the two teams’ 20-game rolling xG profiles to the line the market is offering. If the projection is within two-tenths of a goal of the market line, I usually pass — the model edge is inside the noise. If the projection is more than four-tenths off the line, I look harder, because that is the size of mispricing that suggests either the market is missing something or my model is. The middle ground — three-tenths of a goal of disagreement with the line — is where the consistent value tends to live, and where xG earns its place as the dominant input on NHL totals.

How is expected goals (xG) actually calculated in modern NHL analytics?
A regression model trained on shot data assigns each shot a goal probability based on location, type, and situation. Summing those probabilities across a game produces xG. Different public models use varying features, so values differ by a tenth of a goal across sources.
Can a UK bettor trust free public xG models for NHL totals?
Yes, with caveats. Natural Stat Trick, Evolving Hockey and MoneyPuck publish reliable figures for free. The caveats are that small-sample xG is noisy and goaltender quality must be layered on as a separate adjustment.