Hey, I hope everyone is doing good. If you’re not doing good, I hope my little article can make your day better.
I don’t know where I am going with the article yet, but it should probably feature some thoughts I have as I am writing it. I pinned 2 tweets I saw a couple of days ago because I wanted to talk about Christian Dvorak. He is an interesting player to talk about. Here is why :
He was acquired by the Canadiens right after they lost Jesperi Kotkaniemi to the Carolina Hurricanes in a super dramatic summer for Habs fans.
No one really knew about him (unless you are one of the rare people who was forced to watch Coyotes games as part of your job, or you are one of the privileged people who got the analytics enlightenment and who had access to some of his advanced stats)
Because of injuries he has appeared in roughly 2/3 of the Habs games this season
Danault, the 1st line centre, unexpectedly left the team this summer… and surprisingly, the emergence of Jake Evans, Ryan Poehling, Nick Suzuki and the presence of Christian Dvorak were not enough to make up of that big loss.
Small detail : He was acquired for a protected 1st round pick (that will end up being the 1st round pick Carolina sent in compensation of the Kotkaniemi offer-sheet) and a Habs 2024 2nd round pick
I won’t go in depth (like I should), but in a couple of lines, here’s what I have for you. Dvorak was supposed to be a good 2nd line C when he arrived in MTL. After a really nice preseason game that gave the big hopes for the season, he has disappointed. The Maple Leafs are really good at making average Habs players look like superstars smh..


He has started bad, then got injured, then came back even worse, then got injured again, then came back and slowly got better. He had a few good games, under Martin St-Louis, but I feel that the sample size of good games, is too small to say that “he’s not having a bad season and everyone saying he is bad are wrong” because he is actually having a bad season. Is Dvorak untradable? I’m on a team “99.9999999999999999999999% of the times, no one is untradeable” and Dvorak doesn’t fit my personal requirements to be an exception to the rule, so I think he is not. Should the team shop him? I don’t think there is a good answer here. Personally, I feel that the Canadiens can easily find someone better (and more expensive of course) as a 1-2C than Dvorak on the free agents market this summer and if they can land one of the good centres UFA available this summer, I would shop Dvorak for the same price he costed last summer. But also, I am fine with keeping him. I kind of don’t care really. Since I like drama, I will end the Dvorak part saying that I believe that he is a better hockey player than Jesperi Kotkaniemi. Come at me hatersssssss!!
NETWORK NATIONAL HOCKEY LEAGUE EQUIVALENCY == NNHLe
I had no idea of title for this part of the article. Basically, I just want to write about NHLe. Since I am just a random twitter user who got into hockey analytics and I want to be useful, I have decided that it was maybe time to stop learning obscure coding concepts and start working on some projects. I made a list of a bunch of ideas of projects and articles I want to work on. With the NHL Draft coming soon, I wanted to build a NHLe model. The idea came from Hockey Twitter legend Patrick Bacon who wrote a series of articles that have inspired me to start. As I read the article, i realized that he got most of the inspiration from CJ Turtoro who wrote something amazing about it.
When I started, the idea in my mind was to replicate exactly what Patrick Bacon did and I will adjust a few steps as I become more and more comfortable with the concepts and I start to become smart enough to make decisions based on a smart reflexion. The end goal is to :
Make an NNHLe model
Use it in a Prospect Projection model (exactly like Patrick Bacon did, I also think that other people are processing the same way)
My attempt right now is an attempt. I will redo the whole process at the end of the season with updated data to have the best data available for the NHL Draft. Before we go deeper in what I did and what I have learned so far, let’s put some definitions and meaning on a few words that might come up later.
NHLe : NHL point equivalency. It is an estimation of how 1 point in the QMJHL = ? point in the NHL. Prospects are playing in various leagues with all types of properties. One way to compare them more efficiently is to put their point production at the same level (on the same unit of measure that will be NHL points) and we can compare that. It has different purposes like being an indicator NOT THE WHOLE STORY of prospect point production compared to other players in different leagues. It is better if it is not the only tool you use to evaluate prospects, but if it is the only thing that you have, it might be enough (+ being aware that you don’t have much informations) to have an intellectual edge over the person you were before you had the tool.
NNHLe : Network NHLe. Using a Network of leagues to generate an NHLe value. This is what I did :)
The process was long, and but I learned a lot. I started by scrapping almost the entire EliteProspects database using Patrick Bacon’s EP Scraper because I’m too broke to pay for the API. This is when I learned that coding can be long. A millions of rows later, I was good enough to play with the millions of rows of player-seasons. It took me a little bit of time and some help from my analytics mentor @hunterofstats (who basically introduced me in the world of hockey analytics and who taught me a lot of what I know today) to figure out the math and the code behind what will give the result you see below.
-----------------------|----------
| League | NHLe |
-----------------------|----------
0 khl 0.762831
1 shl 0.619733
2 nl 0.510816
3 czechia 0.478099
4 icehl 0.452454
5 bcihl 0.449362
6 liiga 0.448344
7 ahl 0.419326
8 del 0.405055
9 vhl 0.328584
10 hockeyallsvenskan 0.294455
11 slovakia 0.266858
12 ligue magnus 0.230756
13 eihl 0.230257
14 czechia2 0.222391
15 del2 0.219772
16 lnah 0.215304
17 ncaa 0.194273
18 norway 0.18504
19 sl 0.179983
20 echl 0.177592
21 mestis 0.167299
22 ohl 0.161388
23 mhl 0.152951
24 whl 0.148749
25 qmjhl 0.136603
26 ushl 0.133778
27 j20 nationell 0.118228
28 usports 0.117303
29 u20 sm-sarja 0.103284
30 slovakia2 0.100231
31 sphl 0.0960131
32 ncaa iii 0.0840459
33 msl 0.0820517
34 nahl 0.0810683
35 suomi-sarja 0.0794755
36 bchl 0.076347
37 hockeyettan 0.0745159
38 ajhl 0.0729365
39 nmhl 0.0715221
40 u20-elit 0.067611
41 fphl 0.0663928
42 czechia u20 0.0663047
43 u18 sm-sarja 0.0661347
44 division 2 0.0660249
45 sjhl 0.0646089
46 ncdc 0.063234
47 cchl 0.0601295
48 slovakia u20 0.0574737
49 swissdiv1 0.054027
50 mjhl 0.0540151
51 slovenia 0.0512252
52 u20 mestis 0.0510271
53 mjahl 0.050359
54 j20 region 0.0467753
55 beast 18u 0.0465433
56 j18 nationell 0.0465103
57 j18 region 0.0458969
58 usphl premier 0.0449492
59 czechia u17 0.0440416
60 t1ehl 18u 0.0422439
61 hphl 18u 0.0409017
62 norway2 0.0400418
63 ehl 0.0400069
64 qjhl 0.0397209
65 ojhl 0.0382345
66 acha 0.0362005
67 qchl 0.0359688
68 u20-top 0.0357068
69 u16 sm-sarja 0.0346166
70 nojhl 0.0343322
71 u17-elit 0.033672
72 csdhl 18u 0.032887
73 sijhl 0.0324396
74 russia u17 0.0304647
75 qm18aaa 0.0292716
76 u16 sm 0.0292294
77 j20 div.1 0.0289258
78 division 3 0.0284646
79 russia u18 0.0279476
80 t1ehl 16u 0.027648
81 norway u20 0.0276153
82 ecel 18u 0.0275322
83 u18 mestis 0.0274065
84 usphl 18u 0.0269995
85 smaaahl 0.0264565
86 ayhl 18u 0.0263674
87 naphl 18u 0.0262676
88 hphl 16u 0.0259204
89 aehl u18 0.0256646
90 mnhp 18u 0.0252653
91 ii-divisioona 0.0245984
92 csdhl 16u 0.0241521
93 u20 suomi-sarja 0.0223786
94 acha ii 0.0223682
95 iii-divisioona 0.0220784
96 nlmmhl 0.0219775
97 beast 16u 0.0218834
98 denmark u20 0.0212202
99 u16 region 0.0209831
100 j20 div.2 0.0207478
101 na3hl 0.0198727
102 csshl u18 0.0189359
103 nbpeimu18hl 0.018451
104 france u20 0.018212
105 j18 div.1 0.0178131
106 bcehl u18 0.0176693
107 usphl elite 0.0175765
108 cisaa 0.0170682
109 ejepl 18u 0.016858
110 usphl 16u 0.0160594
111 mu18hl 0.0155411
112 denmark u17 0.0150502
113 mnhp 16u 0.0149386
114 cahs 0.0145107
115 naphl 16u 0.0143946
116 gthl u16 0.0137745
117 ecel 16u 0.0136621
118 u18 suomi-sarja 0.0135502
119 ayhl 16u 0.0134768
120 u16 div.1 0.0129269
121 heo u18 0.0124807
122 norway u18 0.0123581
123 nsu18mhl 0.0113413
124 csshl u16 0.00942121
125 gthl u18 0.00920056
126 scta u18 0.00916326
127 france u17 0.00905268
128 j18 div.2 0.00788028
129 etahl u18 0.00760724
130 u16 div.2 0.00721881
131 etahl u16 0.00710294
132 csshl u17 0.00694152
133 saahl u18 0.00691625
134 ehlp 0.00688203
135 rseq m18 d1 0.00658185
136 qm18aa 0.00644034
137 scta u16 0.0062838
138 nahl u18 0.00619735
139 qm17e 0.00596245
140 njphl 16u 0.00570599
141 pei u18 0.00476499
142 waaa u17 0.00472264
143 bcehl u17 0.0044148
144 ejepl 16u 0.00424513
Don’t mind the number on the left, it’s just the indexes and I forgot to remove it. You can find the league and the (N)NHLe value associated with it. Those are not definite and I will work on improving those numbers (by doing the simulations CJ Turtoro suggests in his article). I have attempted simulations, but it turns out that after 4 days, my computer only ran 330 simulations, so I have decided to stop. Analytics is about trying things and constantly finding ways of improving what you have previously done, so I will work on that and update you when I will have more.
Before I continue, I will just take a moment to say a little thank you to everyone in the hockey analytics community for answering my questions when I have some and reaching out to me and teaching me things. Also thank you to the friends I made along the way. I am thinking about Patrick Bacon, JFreshHockey, Mik (@hunterofstats), Nolan, Sid, Kylo, Saad, Thibaud Chatel, and many others… if it wasn’t for you, I would’ve lost the motivation a long time ago. So thank you to everyone for supporting the step-by-step progress I make along the way, and I’m blessed to be able to share the journey with you.
Since I was asked, here is an example.
They are really close in terms of NHLe according to my values, so other things than point productions should make the cut to decide who is better.
Your questions
I will reply to some of the questions I was asked on Twitter.
1.
Congrats to Les Brûleurs des Loups for winning the Championship in la Ligue Magnus!
2.

Trading Auston Matthews for Cole Caufield will help the Maple Leafs to have more cap space and finally be able to build a good lineup.
3.
That’s a really good question for a future article. If someone wants to write about it, go ahead, otherwise, I will 100% take a stab at this really interesting topic.
4.

Same for you. “That’s a really good question for a future article. If someone wants to write about it, go ahead, otherwise, I will 100% take a stab at this really interesting topic.”
Thank you for reading and have a good night!
Max
Aye just realized my comment made it