Welcome to another edition of the Hockey Handbook series! In this article I want to introduce you to Expected Goals.
Introduction to Expected Goals
Expected goals (xG) are a model-based metric used to isolate the evaluation of play-driving and chance-creation/suppression ability from things a player cannot control such as bounces, quality of goaltender, etc. The models make use of the public data tracked by the NHL. The NHL tracks every shot attempt and collects over 100 pieces of information per attempt (shooter, location on ice, type of shot, etc.). Analytics nerds leverage this historical data to train the data-driven xG models.
The models are applied to new shot attempt data to calculate the โprobability of goalโ for those shot attempts. For example, a shot from the slot – a high danger scoring area – might have an xG value of 0.25, because that type of opportunity results in a goal 25% of the time. Similarly, a shot from the point may carry a value of 0.02, indicating they only result in goals 2% of the time.(Note: I made up the numbers for this example, not every slot/point shot is worth 0.25/0.02 xG.)
For visual learners, hereโs a figure we can use to conceptualize how an xG model works.

The numbers superimposed on the rink represent the chance an unblocked shot attempt from that location will result in a goal โ e.g., a shot from the point has a 2% chance of resulting in a goal. These values are the โxGโ themselves, so a player who has a shot attempt from the point technically โscoresโ 0.02 xG. This is not typical jargon; it is much more common to say, โMatthews had 1.5 xGโ rather than, โMatthews scored 1.5 xG.โ The word โscoreโ is reserved for real goals, even among nerds. So, if Matthews played a game and took shots from all the Xโs on the image, he would finish the game with: 0.04+0.07+0.3+0.16 = 0.57 xG, regardless of how many of his shot attempts actually resulted in him scoring.
Remember, do not put any stock into the numbers on the figure. I chose values that seemed reasonable in my head, but this is simply a fabricated example to illustrate the concept. Real xG models are a lot more complicated and accurate.
Speaking of real models, let’s look at one. The below figure shows the model features (i.e., input variables) of my xG model.

The length of the blue lines, or โgainโ, represent the magnitude of the impact that each feature has on the model. There are a lot more factors than just shot location in a real xG model. We can see that โshotDistanceโ (how far away from the net the shooter is), โteammateReboundSogโ (if the shot was taken within 3 seconds of another shot by a teammate of the current shooter – distinguished from โselfReboundSogโ where the previous shot was also taken by the current shooter), various โshotTypesโ (tips, wrist shots and snap shots), and the Y coordinate of the shot (the Y range is the width of the rink) are the most impactful features. Intuitively, those features having a large impact makes sense.
Expected goals annoys many hockey fans for many reasons, some more valid than others. I want to discuss one thing that some fans get hung up on โ the fractional/decimal nature of xG. Going back to our simplified xG model, we calculated Matthews had 0.57 xG over the course of the game. This sounds a bit silly the first time you hear it. How can a player have 0.57 goals? We obviously cannot expect that Matthews scores 0.57 goals.
Imagine in the first period of Matthewsโ next game he takes shot attempts from the inner slot, the top of the circle, and just above the inner hash marks โ so over the course of his last 4 periods of hockey he has 0.57 + 0.04 + 0.09 + 0.3 = 1 expected goal! We can interpret this as โbased on the scoring chances Matthews accumulated over the past 4 periods he should have scored a goalโ.
โShouldโ means that him scoring 1 goal is the most likely scenario assuming he has league average shooting talent and is shooting against league average goaltenders. So am I saying in that first game he should have scored 0.57 goals? Not really. We are comparing a discrete event (scoring a goal) to a continuous value (xG) so there will always be discrepancies. And remember โ not every goalie is league average, not every player has the same shot, and the game is played with a bouncy piece of rubber on ice.
So what’s the point? We can say โMatthews should have scored 1 goalโ as many times as we want, it wonโt change the fact that he didnโt. Why should we care what his xG were when those expectations werenโt realized? Great question. Iโll answer it belowโฆ
Are Expected Goals Useful?
We have already established that xG doesn’t show up on the scoreboard. Fortunately, that was never the point. Expected goals models were developed for evaluating processes and predicting goal-scoring, not for deciding the outcome of hockey games. Thus, an xG model is useful if it can predict a player’s future goal-scoring better than their past actual goal-scoring does.
For this analysis we will use individual xG (ixG). These are the xG generated from a playerโs personal unblocked shot attempts (the puck coming off their stick). In the example with Matthews and the conceptual xG model the 0.66 xG that Matthews generated are his ixG for that game. This is contrasted with on-ice xG, which is the total xG that was generated by the Leafs while Matthews was on the ice that game. On-ice xG and ixG are the two types of xG most frequently cited in analysis.
The figure below shows Goals/60 in the 2025-26 season vs. (left) ixG/60 in the 2024-25 season and (b) Goals/60 in the 2024-25 season. The dataset for this analysis includes all skaters who played over 100 minutes at even strength in both the 2024-25 and 2025-26 seasons (each dot on the figures represents a single skater, 652 skaters total).

To determine whether goals or ixG better predicted future (i.e. 2025-26) goals we can use the R2 statistic! R2 measures the correlation between variables. An R2 value of 1 implies perfect correlation and an R2 value of 0 implies no correlation. Using R2 we can conclude that 24-25 ixG correlates better with 25-26 goal-scoring than 24-25 goal-scoring does. Thus, xG are a better predictor of future goals than past goals are!
So how do we apply this? If you are given two players and asked to select who will score more goals in the future and you only know their past xG rates and past goal rates, it would be best to choose the player with the higher xG rates even if their goalscoring was lower. In practice we can predict future goals much more effectively by including factors in addition to xG, but xG is more useful than goals if those are the only two stats we have available.
Individual Expected Goals and Shooting Talent
Generally we can divide players into three categories โ players who typically underscore their ixG, players that typically overscore their ixG, and players that score at a rate similar to expected. If a player that typically falls into one category finds themself in a completely different one over a stretch of games we know one of two things has occurred; (1) their shooting talent fundamentally changed, or (2) more likely, their luck has randomly taken a swing either up or down.
We need to accumulate a few seasons worth of data before we can confidently place a player into a category. Take Jack Hughes for example โ his first two seasons in the NHL were both shortened by Covid-19. During these seasons he put up great ixG numbers but was not getting the results on the score sheet. Rather than label him a bust, many nerds preached that we should wait and see, as expected numbers were very good. The nerds were right. Hockey is a game of bounces โ small sample sizes and puck luck play a much larger role in results than most would like to admit.
When we have accumulated enough data to ascertain what category a player slots into the real fun begins. We can compare their recent goals and ixG numbers and draw some conclusions about their current level of luck and what direction their luck is heading. And, if weโre feeling especially nerdy, we can even build a shooting talent adjusted xG model with this data! This is something I have done โ I will discuss it in a future article.
To illustrate how we can do analysis with ixG letโs look at some of the top goal scorers in hockey. The below image lists the top 10 goalscorers of the 2025-26 NHL season, with their goal totals, ixG total, and two โfinishingโ columns โ Finishing and Past Finishing. The Finishing column contains the percentage by which the player outscored their ixG in the 2025-26 season. It is calculated by dividing goals by ixG and it represents the finishing results of the player. I am calling this finishing results rather than finishing talent because one season of data is not a large enough sample size to determine a player’s true finishing talent. The Past Finishing column is calculated in the same way as the Finishing column, except that the player’s previous 3 seasons worth of data is used instead. This is included as it is a much better approximation of true finishing talent.

Caufield, Johnston, Kucherov, Stamkos and Boldy all finished much more efficiently in 2025-26 than they did in the previous 3 seasons. In 2026-27 we can expect their finishing to significantly regress. Their goalscoring should not dry up completely, but a 40 goal season from Caufield is a much more reasonable expectation for him than hitting 50+ again. MacKinnon slightly overperformed his past finishing, so a minor regression for him would not be surprising. McDavid and Kaprizov scored in line with their finishing talent, and Robertson actually underscored his finishing โ with the same amount of ixG next season he could hit 50 goals.
Celebrini is the most interesting case here. He outperformed his past finishing, but his historical data was only a one season sample โ 2025-26 was his sophomore NHL season. Thus, itโs hard to know if his improvement was a random chance or him developing as a player. He is an incredibly talented and very young player, so it’s reasonable to assume some of his improvement was development. A reasonable expectation for him in 2026-27 is finishing results somewhere in between his rookie and sophomore seasons – probably around 15-20% above expected.
Relative Expected Goals
Weโre going to take a bit of a swerve and look at how xG can shine some light on a playerโs overall impact, rather than just their shooting talent/scoring luck. On-ice xG has an analogous interpretation to on-ice Corsi and some even argue the availability of xG models renders Corsi obsolete.
What do I mean by this? Well, you may remember that we typically use on-ice Corsi to measure play-driving and opportunity creation/suppression ability. Corsi is preferred to purely results based measurements like goal-scoring because of the frequency of Corsi events compared to goal events โ there are a lot more shot attempts in a hockey game than there are goals. The same is true of xG โ there are a lot more โxGโ events than there are actual goals scored. Because xG measures the quality and quantity of shot attempts (rather than just quantity as Corsi does) many analytics nerds prefer using xG rather than Corsi โ some view xG as โupgradedโ Corsi.
Anyways, back to the good stuff โ I am going to use on-ice xG to introduce the concept of relative on-ice stats. Relative on-ice stats measure how a player performs in a given stat vs. their teammates, thus they are an approximation of a player’s impact. A playerโs relative xG is defined as the difference between their teamโs xG when they are on the ice and their teamโs xG when they are off the ice (in games they are dressed for). The stat can be presented in any โon-ice formโ โ xG for (xGF), xG against (xGA), xG for percentage (xGF%), etc.
This may sound overly theoretical and mathy, so letโs consider a practical example โ Lane Hutson and the Montreal Canadiens in the 2025-26 season. Last year Hutson had a 5v5 xG for percentage (xGF%) of 55.5% and the Canadiens had an xGF% of 49.7%. Instinctively you might think that subtracting 49.7 from 55.5 (5.8%) should give you Hutsonโs relative xGF%. That sounds right, but it’s incorrect โ the 49.7% xGF% for the Canadiens includes time when Hutson is on the ice, and we need to use the Canadiensโ xGF% only when Hutson was off the ice. That number is a much lower 45.8%, resulting in Hutson having a staggering relative xGF% of 9.7%. The below image shows the top ten players in relative xGF% for the 2025-26 season.

If you are a regular fan of the NHL you know this list is populated with some pretty great players (Fox, Seider, Hutson, McDavid, etc.). The stats match our intuition about these players โ these are high impact players, and relative xGF% backs this up.
On the other hand, there are some high end players missing from the top of this list, most notably Nathan MacKinnon. Do we really think players like Ekholm, Bouchard, Bratt and Thomas are more impactful play drivers then MacKinnon? Probably not. This raises some questions โ is relative xG telling us something our eyes are missing? Or is relative xG perhaps not capturing the full picture?
The answers to these questions are yes and yes. Relative xG is telling us that the players on this list are probably more impactful than we may have given them credit for, but it does not give us the full picture. It effectively isolates a player’s on-ice xG from the team average on-ice xG, but in cases where individual players play a lot with the same group of players it cannot effectively isolate their impact from that group. Also, players canโt control how good their team is without them on the-ice. Players like MacKinnon who play on very good teams are always going to have lower relative xG numbers, because their teamโs play doesnโt fall off as much without them on the ice. MacKinnon had an on-ice xGF% of 59.4% in 2025-26, which would be third highest on this list. The catch is that the Avalanche had a 56.3% on-ice xGF% without him, meaning he would need at least a 65.4% on-ice xGF% to crack the top 10. The highest on-ice xGF% this year was Spenceโs 62.8%; 65%+ is a ridiculous bar.
So, while it is good to use stats like relative xGF% to inform our opinions, we should always contextualize these numbers with as much (unbiased) additional information as possible. RAPM (Regularized Adjusted Plus Minus) is a more complicated metric that attempts to fully isolate an individual player’s impact and is discussed here.
Wrap Up
In this article we covered expected goals, a core concept in hockey analysis. Expected goals are shot attempts weighted by goal probability. The weights come from data-driven expected goals models, which are trained on NHL tracking data. There are many lenses through which we can view expected goals, including:
- Individual xG: the xG generated from a playerโs personal unblocked shot attempts.
- On-ice xG: the xG generated while a player is on the ice. xG For (generated by the players team) and Against (generated by the opposing team) are both counted.
- Relative xG: the difference between the players on-ice xG and that of his team when he is off the ice.
This article was not an exhaustive treatment of expected goals and its uses. Make sure to follow DataDrivenHockey on Instagram so you donโt miss future analysis and discussion, and click HERE to browse through other Hockey Handbook entries.


Leave a Reply