Basically since he first stepped foot on the ice, a common rallying cry of Devils fans is that Jack Hughes needs shooters. He’s clearly a dynamic playmaking talent and with the opportunities he creates that you’d think even an average NHL shooter should be able to Johnathan Cheechoo his way to a 30-goal season. But, since we have almost no such players, Jack is left to languish in the pit of “point mediocrity” until reinforcements mercifully arrive.
I should say at the onset here, that I’ve always been somewhat skeptical of this claim. This narrative has been in place since last year. In 2019-20, Hughes’s most common linemate was Kyle Palmieri — the best shooter on the team and one of the most efficient in the NHL for the past half-decade. In 300 minutes with him, Jack at 0 goals and 4 assists. That is a point rate of 0.78 points per hour. Mapped onto this season, that would tie him with Trent Frederic for 375th out of 401 NHL forwards (200+ minutes) in point rate.
In fact, during his two seasons in the NHL Jack has spent over 600 minutes with Palmieri which is over 100 more than his next most common on-ice partner (Severson, 500 minutes) and almost twice as common as his next most common linemate (Bratt, 305 minutes). He’s been indisputably played with the best wingers we have on the team, both of whom are empirically above-average shooters (Bratt, Palmieri).
But, I’m open-minded. I see Hughes play just like everyone else and I see him create chances left and right that seem never to end up in the back of the net where they belong. Maybe he’s just been unlucky and the guys who normally shoot well haven’t done so when playing with him through no fault of his own. I wanted to test this out so I’ve decided to look into adjusting point totals for a factor that players have no control over — the shooting performance of their teammates.
The Methodology, Informally
In order for this to make any sense, you’ll have to know what an “expected goal” (xG) is in hockey (if you already know, skip this paragraph and the next one). Most hockey events are binary — either they happened or they didn’t. There is no such thing as a half a goal or a quarter of a shot — it’s all 1s and 0s. Goals are very rare so we’d like to count something more common, like shots. But there’s problems their too, becuase not all shots are created equal. We’d like to give more credit to ones that are more likely to become goals. That’s what an xG does. Rather than counting a shot as just a 1 or a 0, it is counted as the probability that it becomes a goal, (a number between 0 and 1). So a shot with an xG of 0.5 had a 50% chance of becoming a goal. If you take that shot twice, we’d expect that you score one of them. Let’s say you score the 2nd one. At that point your xG total (0.5 + 0.5) would match your goal total (0 + 1) perfectly. Obviously it doesn’t always work out this nicely, but over the course of a season it tends to even out more often than not.
The probability of the shot becoming a goal is determined by several elements present in public NHL play-by-play data including location (by far the most important), rebounds/rushes, strength, score, venue, rest, and several other components depending on whose model you are using. It does not include anything absent from public data (ex: pre-shot movement like “royal road” passes).
The point-adjustment method I’m proposing will operate on a fairly simple, though debatable, premise: that players cannot impact the “shooting over expectation” of their teammates. In other words, if a player is producing dangerous chances for their linemates, it’s generally captured by xG formulas. For instance, if they make a pass to a dangerous area, the dangerous area’s xG contains the value of that pass. Therefore, any difference between the xG and goal totals of someone’s linemates is out of their control and due to either luck, or the skill of their teammates.
In order to do this, we will basically just assume that a player’s teammates all score exactly their xGs — in other words, exactly what we “expected”. This will either increase or decrease the goals that occurred when a player was on the ice — we call these “on-ice goals”. We will not make such an assumption for a player’s own xGs — they might actually just be a bad shooter and should not be rewarded for that.
After we determine the change in a player’s on-ice goal totals caused by moving from Gs to xGs, we alter the player’s point total based on the percent of on-ice goals on which they typically record an assist. If a player records an assist on 40% of on-ice goals, and the xG switch increased the on-ice goals by 10, we will reward the player with 4 additional assists (0.4*10=4). This result represents how many more/fewer assists a player should have recorded if their linemates had shot “as expected”.
Methodology in Mathier Terms (Skip to “Results” if uninterested)
A quick qualifier about the use of xGs here: Over the past few seasons xG models of multiple sites have slightly underestimated goal totals. It’s not been long enough or consistent enough to consider it a trend and there is value in keeping the same model year-to-year so there are no adjustments made to the models themselves publicly. This is fine, but for out purposes, problematic as it will systematically benefit players with higher usage. So, we make a minor tweak, and “era-adjust” the xG totals by making them proportional to the goal totals for the year. A player’s xGF is multiplied by League_Gs / League_xGs. That adjustment seems to have regulated the “points added” statistic (see graphs below, note the 2nd one is centered at zero).
After this initial tweak to the xG numbers, we are ready to make out point adjustments. Here are the steps we will take to calculating those adjusted point totals for a given player at a specific strength state. Remember that most sites only have “on-ice” numbers and “individual” numbers so we have to calculate “teammate” numbers on our own first.
1) Calculate how many goals teammates have scored when the player is on the ice:
(TM_GF = GF - iG)
2) Do the same for expected goals:
(TM_xGF = xGF - ixG)
3) Subtract #2 from #1 to figure out how many “on-ice goals added” (delta_GF) were contributed from teammates shooting over expectation:
(TM_dGF = TM_GF - TM_xGF)
4) Calculate the “individual assist percentage”:
(IAP = Assists / GF)
5) Calculate the “Assists over expectation” (Aox):
(Aox = IAP*TM_dGF)
6) Calculate the adjusted point total:
(PTS_adj = PTS - Aox)
Given the lack of pre-shot movement data, and the ability of some players to produce dangerous chances via passing, it’s reasonable to wonder if the assumption we made at the beginning is valid. Couldn’t players who routinely find cross-slot passes, for instance, be able to consistently allow teammates to shoot over the expectation built on public data? While reasonable to suggest, when it comes to putting that theory into practice, there’s simply very little evidence of players being able to do so consistently.
I used the above algorithm for both PP and even-strength situations using Natural Stat Trick’s numbers for a few seasons. I took the last two full NHL seasons (2018 and 2019) and graphed each player’s point inflation (PTS/PTS_adj) in the first year vs their point inflation in the second one.
That is what we call “noise”. In total, knowing their previous season’s point inflation explains less than 2% of the current season’s inflation. That number, by the way, is almost identical to the explanatory power of a player’s even-strength inflation towards their powerplay inflation — which is to say there is none. Therefore, either a player’s impact on the shooting of their teammates is so capricious that it doesn’t maintain across seasons and strength states, or it’s simply not a thing. The latter seems more likely.
In short, this methodology produces an adjustment to point totals that removes something that is entirely (or ~98%) out of a player’s hands — their teammates burying their chances.
First, let’s just get a little bit of a picture of the NHL before we focus in on the Devils so we have a sense of scope. The NHLer that has benefitted most from his teammates shooting is Patrick Kane whos teammates have inflated his point total by almost 11(!) points. As of this writing, he’s currently 3rd in the NHL scoring race behind only McDavid and Draisaitl, but if his teammates were shooting only as well as the average NHLer, he’d fall to 10th. The player most harmed by teammate shooting is Christian Djoos. His Detroit teammates have cost him about 6 and a half assists (over 5 of which were on the PP). With that point adjustment, he’d go from 69th in the NHL to 43rd in scoring among defenders.
I know what you’re thinking. I can already hear the skeptics coming out of the woodwork. “If Patrick Kane is getting more points than expected, maybe it’s because he’s just really good in a way xG models aren’t capturing.” I don’t dispute that this is possible, but as I show above, this is a highly random process. Here is a chart of some of the players I’d assume you might think of as the “elite playmakers” in the NHL, including Kane, and their “teammate points added” over the last 5 seasons.
Patrick Kane has been alternating positive-negative over the last 5 years. This means that either his elite playmaking has been good then bad then good then bad then good — or it doesn’t matter.
You might notice I left out a recent MVP in Nikita Kucherov. And if you look at the data, you’ll see that he is positive in each of the last 4 years. That might make you think that the data is missing something important and I’ve selectively edited out the players who have beat my system. That’s until you notice that Victor Hedman, Brayden Point, Steven Stamkos, Mikhail Sergachev, Ondrej Palat, and Alex Killorn have all been positive each of the last 5 years as well.
So, as it turns out, there are occasionally evident team effects on this metric. If anything, this offers additional evidence for the lack of individual agency because it implies that some non-negligible portion of the 2% r-squared is likely due not to the player’s shooting, but consistent teammate over-shooting.
Jack Hughes and The Devils
So now that we’re really comfortable with the fact that this metric is almost entirely out of a player’s control, what is the impact on our initial question? Has Jack Hughes been screwed out of a great season with poor shooting teammates? Where would he be if they were even psuedo-competent?
The answer is: about the same spot he’s in right now.
Jack Hughes should have had about one more point than he currently has if his teammates shot up to their xG standards. He was 2nd in scoring on the Devils both before and after the adjustment. He does gain a little separation from Bratt since Jesper has been more fortunate, but on an NHL-wide scale, his movement would be barely noticeable.
What’s interesting is that there are a few Devils who genuinely HAVE been snakebitten by teammates. The most egregiously robbed Devils is Damon Severson, whose teammates have cost him 5.6 points — the 3rd highest such number in the NHL.
So, it’s not as if the Devils aren’t costing anyone points with bad shooting. It’s just not so much costing Jack, specifically. To me, this is honestly not that surprising because, as I said in the introduction, he’s been playing with the best Devils shooters since he got here. I think it’s possible this method slightly underestimates how many points Hughes “should” have because he racks up secondary assists at a much slower rate than you’d expect for someone who handles the puck as much as he does. And we used assist rate to determine the percent of added goals on which each player would receive points. So if Hughes’s fluky A2 metric is low, it will underestimate his point adjustment.
But, if there is anyone thinking “Jack would have 45 points if only his teammates could shoot” — I’d reconsider your point adjustment process.
NHL-wide Tableau that was used to create the chart above can be found here
GitHub Gist for the adjustment process using NaturalStatTrick data can be found here.