What Is Expected Goals (xG) in Hockey?
Expected goals in hockey assigns each unblocked shot attempt a probability of becoming a goal, based on features such as distance, angle, shot type, whether it followed another event quickly, and the strength state. Public models from MoneyPuck and Evolving-Hockey use gradient boosting on NHL play-by-play data. Summed over shots, xG estimates chance quality.
The basic idea
A wrist shot from the slot and a dump-in from the blue line both count as shot attempts, but they are not the same chance. Expected goals puts a number on that difference. A model is trained on many past attempts, each labelled goal or no goal, and learns how features of the attempt change the scoring rate. A shot with an xG of 0.10 is one that historically went in about one time in ten.
Summing xG gives team and player totals. Expected goals for and against, especially at five-on-five, is the standard public way to judge which team created the better chances, independent of how many actually went in.
Which features hockey models use
Evolving-Hockey's model write-up, by Josh and Luke Younggren, lists the inputs plainly. Continuous features include shot distance and angle, game time, shot coordinates, the coordinates of the prior event, the distance from it, and the seconds since it. Categorical features include home or away, strength state, score state, shot type (wrist, slap, snap, backhand, tip-in, deflected, wrap-around), and the type of the prior event for either team, such as a shot, miss, block, giveaway, takeaway, hit, or faceoff.
MoneyPuck's methodology page lists a similar set: shot location and angle, shot type, the last event before the shot with its location and timing, time on ice for players on both teams, skater counts, whether the shooter is on his off wing, and whether the net is empty.
The prior-event features do a lot of work. A shot two seconds after a saved shot near the crease is very likely a rebound, and rebounds score far more often than first attempts. Public models infer rebounds and rush chances from timing and location because the play-by-play does not label them directly.
The main public models
Several sites publish hockey xG, each with its own model.
MoneyPuck
Run by Peter Tanner, MoneyPuck says its model was built with gradient boosting and rebuilt for the 2026-2027 season, trained on a random sample of more than 289,000 shots from the 2023-2024 to 2025-2026 seasons. Its page says the xG model does not factor in a player's shooting skill; shooting talent is handled in separate adjustments. It also publishes a flurry adjustment that discounts later shots in a rapid sequence, since a team can only score once from a single scramble.
Evolving-Hockey
The Younggrens' original write-up, first published on RPubs in 2018, used XGBoost and four separate models for even strength, power play, shorthanded, and empty-net situations. It included unblocked attempts only and excluded penalty shots and shootouts. The site's about page lists its current Global Expected Goals Model as version 2.0, dated 2 October 2019.
Natural Stat Trick and HockeyViz
A 2021 NHL.com piece by Alison Lukan surveyed the creators of Evolving-Hockey, MoneyPuck, Natural Stat Trick, and HockeyViz. Almost all of them put shot location first. HockeyViz, run by Micah Blake McCurdy, adds contextual proxies such as rush plays and congestion between the shooter and the net.
How hockey xG differs from soccer xG
Unblocked attempts. Many hockey models train on unblocked attempts, shots on goal plus misses, rather than all attempts. Evolving-Hockey's write-up does so explicitly.
Sequence matters more. Rebounds and quick passes across the slot are central in hockey, so time and distance since the previous event carry weight that soccer models give to assist type.
Strength state and empty nets. Power plays, shorthanded play, three-on-three overtime, and empty nets change scoring rates sharply. Some models fit separate models by state; MoneyPuck uses empty net as an input.
Thinner context. Soccer providers such as Opta add defender and goalkeeper positions from event and freeze-frame data. The creators in the 2021 NHL.com survey said pre-shot passes, screens, and goalie position were not available to the public, so public hockey models infer them.
Recording quality. Shot locations have historically come from arena scorers, and analysts long checked for rink-to-rink differences in how locations were recorded. The NHL's tracking method has since changed, which is why MoneyPuck says it rebuilt its model for 2026-27 to adapt to how shots are now tracked.
What hockey xG is used for
Team quality. Five-on-five xG share is a common indicator of underlying play, less noisy than goal share over short stretches.
Goaltending. Comparing goals allowed with xG faced gives goals saved above expected, the usual public goalie measure. It is noisy, so it needs many shots before it means much.
Shooting talent. Players who beat xG repeatedly over many seasons may be genuine finishers, but because xG excludes the shooter by design, single-season gaps regress heavily.
Forecasting. Team xG rates are a common input to game and totals models, alongside goaltending, special teams, and schedule.
Limits to keep in mind
Models differ, so xG from two sites for the same game will not match; pick one source and stay with it. Public models miss passing and screening information. Single-game xG is noisy, and season totals still carry uncertainty for goalies and shooters. Treat gaps between goals and xG as questions to investigate, not conclusions.
This page explains a metric and is not betting advice.
Frequently asked questions
- What does xG mean in hockey?
- xG, or expected goals, is the probability that a shot attempt becomes a goal, estimated from how often similar past attempts scored. It considers features such as distance, angle, shot type, and whether the attempt came quickly after another event. Summing xG over a game or season shows how many goals a team's or player's chances would typically produce.
- Why do MoneyPuck and Evolving-Hockey show different xG?
- They train different models on different samples with different features. MoneyPuck says its current model was rebuilt for 2026-2027 and trained on shots from 2023-2024 to 2025-2026, while Evolving-Hockey's write-up describes separate models by strength state using unblocked attempts. Both are reasonable; neither is the official number. Compare players and teams within one source only.
- Does hockey xG account for the shooter or the goalie?
- Public models generally exclude the shooter's identity by design, so xG describes an average shooter's chance. MoneyPuck says its model does not factor in shooting skill and handles talent separately. Goalie position before the shot is not in public data. Goalie quality is measured afterwards by comparing goals allowed with xG faced, known as goals saved above expected.
- Is hockey xG more reliable than soccer xG?
- Neither is simply more reliable. Hockey games produce many more shot attempts than soccer matches, so totals accumulate faster. But public hockey data has less pre-shot context, with no public passing, screen, or goalie position data, so each shot value carries more model uncertainty. Both metrics need many games before differences between goals and xG mean much.