When forming a draft list: the more limited your prospect evaluations the more "factoring in availability to maximize EV" becomes code for "regularizing towards consensus".
08.10.2025 13:32 β π 0 π 0 π¬ 0 π 0@yimmymcbill.bsky.social
trying to learn stats unfortunately through hockey. https://drydan.github.io/
When forming a draft list: the more limited your prospect evaluations the more "factoring in availability to maximize EV" becomes code for "regularizing towards consensus".
08.10.2025 13:32 β π 0 π 0 π¬ 0 π 0Lastly testing sigma_s evolving over time suggests typical development begins to stabilize after draft year + 1. While I haven't tackled any common criticisms, I have also made no progress understanding what's going on under the hood.
14.07.2025 03:36 β π 1 π 0 π¬ 0 π 0Graph of league and age interaction coefficients for 5 leagues. The KHL, SHL and Liiga all curve upward, indicating it is harder to gather points as a rookie than a vet. The NHL curves downwards. Cracking an NHL lineup early is a sign of star potential. Selection bias is at play.
An attempt including interactions between league & age in the linear predictor. Notice the contrast between euro & NA leagues. Could be an interesting topic regarding how selection bias across leagues affect estimates. Maybe most of this is alleviated by including deployment info.
14.07.2025 03:36 β π 0 π 0 π¬ 1 π 0Age curves for Forwards and Defenders. Both peak at the same time and are similar shape
I model age curves for F & D using second order random walks. The distinction between a RW1 & RW2 is cute and helpful for smoothing out some fault lines caused by 20 somethings stuck in juniors. Peak is around 26-27 years old.
14.07.2025 03:36 β π 0 π 0 π¬ 1 π 0NHLe Chart for forwards. 1 j20-nationell 0.09526179 2 mhl 0.12417129 3 qmjhl 0.13640708 4 whl 0.13974019 5 ushl 0.14410394 6 ohl 0.15147740 7 mestis 0.16510406 8 ncaa 0.25056760 9 vhl 0.32936401 10 hockeyallsvenskan 0.33359435 11 liiga 0.41302103 12 ahl 0.48122759 13 shl 0.54885462 14 khl 0.62368643 15 nhl 1.00000000
NHLe Chart for Defenders. 1 j20-nationell 0.1102957 2 mhl 0.1396564 3 qmjhl 0.1526083 4 whl 0.1550287 5 ushl 0.1634305 6 ohl 0.1686050 7 mestis 0.1862100 8 ncaa 0.2794966 9 vhl 0.3598899 10 hockeyallsvenskan 0.3682760 11 liiga 0.4525084 12 ahl 0.5303004 13 shl 0.5938460 14 khl 0.6801485 15 nhl 1.0000000
Positionless NHLe 1 j20-nationell 0.1025037 2 mhl 0.1316866 3 qmjhl 0.1442807 4 whl 0.1471861 5 ushl 0.1534635 6 ohl 0.1598120 7 mestis 0.1753401 8 ncaa 0.2646373 9 vhl 0.3442891 10 hockeyallsvenskan 0.3505071 11 liiga 0.4323146 12 ahl 0.5051687 13 shl 0.5709077 14 khl 0.6513061 15 nhl 1.0000000
Here I produce NHLe? by taking the quotient of the exponentiated league coefficients. Some out of sample eval suggests near constant estimates over seasons (likely due to inappropriate choices on my part).
14.07.2025 03:36 β π 0 π 0 π¬ 1 π 0Formula written in Latex: $$ \text{tp}_{ijt} \sim \mathbf{Poisson}(\text{gp}_{ijt} \times \exp(\text{player}_{is} + \text{league}_{jt} + \text{position}_{jk}))\\ \text{player}_{i,s} = \text{player}_{i,s-1} + \text{age}_{s,k} - \text{age}_{s-1,k} + \epsilon_{i,s}\\ \text{age}_{s,k} \sim \mathbf{N}(2\space\text{age}_{s-1,k} - \text{age}_{s-2,k},\space\sigma_1^2)\\ \text{league}_{jt} \sim \mathbf{N}(\text{league}_{j,t-1},\space\sigma_2^2)\\ \text{player}_{i,0} \sim \mathbf{N}(0,\space\sigma_3^2)\\ \epsilon_{i,s} \sim \mathbf{N}(0,\space\sigma_{s}^2) $$
Sealing off this work for now. Popular NHLe models split up estimating league strength and predicting player outcomes. I attempt to do this under one roof in a way that I think is principled⦠but out of my depth. Am I contributing anything new in the space? Nah.
14.07.2025 03:36 β π 2 π 1 π¬ 1 π 0x_i,u makes more sense! I'll have to correct that. I'm too lazy to show everything this early, but I'll update w/ league coefficients on 2nd draft
31.05.2025 22:44 β π 0 π 0 π¬ 0 π 0Ridge plot ordering the top 27 eligible players for the 2025 NHL Draft by the posteriors for a player ability. In list form below. Rank.|LastName|x|NHL Scouting Rank :-----|:------|:------:|:--: 1.|Misa|2.18|2 2.|Hagens|2.06|3 3.|Schaefer|2.04|1 4.|Martone|2.01|6 5.|Frondell|1.94|1 Int. 6.|Aitcheson|1.91|9 7.|O'Brien|1.86|4 8.|Desnoyers|1.85|7 9.|Eklund|1.84|2 Int. 10.|Carbonneau|1.81|16 11.|Kindel|1.8|21 12.|Reschny|1.78|25 13.|Reid|1.76|23 14.|Bear|1.76|10 15.|Veilleux|1.74|91 16.|Zonnon|1.71|31 17.|Mrtka|1.71|5 18.|Smith|1.68|13 19.|Martin|1.66|11 20.|Schmidt|1.65|43 21.|Woo|1.64|156 22.|Hensler|1.62|12 23.|Tremblay|1.61| 24.|McQueen|1.6|8 25.|Spence|1.6|17 26.|Brisson|1.57| 27.|Lakovic|1.57|14
NHL Draft model v2. Wrote a rough draft about what I think was going wrong the first go. Not there yet.
drydan.github.io/posts-hockey...
Oh I'm just using it as a cover to avoid some statistical jargon I forgot. It's a coefficient for a players effect on point production given the league, their draft age and position. The coefficients are assumed to update each a season as a random walk, which smooths their estimates year to year.
18.05.2025 18:15 β π 1 π 0 π¬ 0 π 0Results seem not great via smell test, wouldn't take it over other point based methods. Uncertainty around talent feels off w/ flat prior. League estimates very sensitive to cutoff choices. Likes the Q a bit too much. Surely some self inflicted issues but also some road ahead beyond plug & chuggin.
18.05.2025 17:28 β π 0 π 0 π¬ 1 π 0Ridge plot ranking the estimated latent talent of NHL prospects. Proceeding list is ordered by model. Number in brackets refers to the NHLs final scouting report ranks. 1. Misa (2), 2. Hagens (3), 3. Martone (6), 4. Schaefer (1), 5. Aitcheson (9), 6. Desnoyers (7), 7. Frondell (1 International), 8. Carbonneau (16), 9. O'Brien (4), 10. Kindel (21), 11. Eklund (2 International), 12. Veilleux (91), 13. Reschny (25), 14. Reid (23), 15. Hensler (12), 16. Zonnon (31), 17. Bear (10).
Histogram of posterior mean talents from seasons 2013-2024 on the left. Centered near 0 w/ standard deviation 0.84. Appears bell shaped with a thicker left tail. Histogram of fitted point totals on the right. Big spike near 0, after drop it decays smoothly w/ max at 152.7
First go at a Poisson SSM for men's hockey. League str, F/D age curves & individuals modelled as RW1s. 14 leagues dating back to 2013 w/ no skater cutoffs. Schaefer an interesting case this year. Would bump to 3rd in draft given a full season and 1st if last season was punched up reasonably.
18.05.2025 17:28 β π 1 π 0 π¬ 1 π 0Chart ranking NCAA D1 Women's Ice Hockey skaters that have not declared for the 2025 PWHL draft by points per game adjusted for strength of schedule. 1. Kirsten Simms: 2.05, 2. Abbey Murphy: 2.05, 3. Laila Edwards: 2.02, 4. Joy Dunne: 1.98, 5. Caroline Harvey: 1.79, 6. Issy Wunder: 1.67, 7. Jocelyn Amos: 1.66, 8. Lacey Eden: 1.65, 9. Mackenzie Alexander: 1.53, 10. Elyssa Biederman: 1.47, 11. Tessa Janecke: 1.27, 12. Sarah Paul: 1.24, 13. Emerson O'Leary: 1.2, 14. Chloe Primerano: 1.17, 15. Carina DiAntonio: 1.15, 16. Josefin Bouveng: 1.12, 17. Emma Pais: 1.09, 18. Emma Peschel: 1.09, 19. Cassie Hall: 1.08, 20. Kelly Gorbatenko: 1.08
Top 20 IN-eligible NCAA D1 Skaters by point per game adjusted for opponent's defence. Lot of exceptional players returning.
17.05.2025 15:05 β π 0 π 0 π¬ 0 π 0Chart ranking NCAA D1 Women's Ice Hockey defenders that have declared for the 2025 PWHL draft by points per game adjusted for strength of schedule. 1. Haley Winn: 1.25, 2. Nicole Gosling: 1.01, 3. Kendall Cooper: 0.77, 4. Hanna Baskin: 0.72, 5. Maddy Samoskevich: 0.64, 6. Cameron Sikich: 0.62, 7. Nina Jobst-Smith: 0.61, 8. Riley Brengman: 0.61, 9. Ava Rinker: 0.55, 10. Maddy Clough: 0.52
Top 10 eligible NCAA D1 Defenders by point per game adjusted for opponent's defence. Teammates Winn and Gosling top the charts.
17.05.2025 15:05 β π 0 π 0 π¬ 1 π 0Chart ranking NCAA D1 Women's Ice Hockey forwards that have declared for the 2025 PWHL draft by points per game adjusted for strength of schedule. 1. Casey O'Brien: 2.51, 2. Ella Huber: 1.51, 3. Makenna Webster: 1.49, 4. KristΓ½na Kaltounkova: 1.46, 5. Jenna Buglioni: 1.41, 6. Olivia Wallin: 1.28, 7. Clara Van Wieren: 1.28, 8. Abby Hustler: 1.19, 9. Anne Cherkowski: 1.16, 10. Natalie Mlynkova: 1.15
Top 10 eligible NCAA D1 Forwards by point per game adjusted for opponent's defence [very much a WIP result]. O'Brien had a monster year.
17.05.2025 15:05 β π 0 π 0 π¬ 1 π 0A team level offense and defense scatterplot for NCAA D1 Women's Ice Hockey 2024-2025 season. Ranking the conferences by: NEWHA < CHA <= Hockey East < ECAC < WCHA. Wisconsin clearly dominant this year.
PWHL released the 2025 draft eligibility list. Here's some coeffs from a pois reg for a NCAA D1 team level model. Strength of schedule a focus for points based analysis, but most top scorers play tougher games. Wisconsin the kind of super team I wish would declare all at once
16.05.2025 14:33 β π 1 π 1 π¬ 1 π 0My goal is to build a RAPM model using weights instead of binary indicators for players. At this point a sensitivity analysis w/ synthetic shift data would have to convince me to invest more time into cleaning. I'll be shelving this for now, let me know if you make an attempt as I'm very error prone
09.12.2024 14:03 β π 1 π 0 π¬ 1 π 0Charting the timeline for the number of skaters on the ice using two sources: summing the shift chart versus calculating it using the play by play penalty and goal event logs. The event data is very reliable and exposes just how far my current method is from the truth.
The lagging player info can create some potentially unrecoverable issues. Sometimes a player will accumulate more TOI in a segment than possible. At the moment I simply let the excess flow into the prior segment. I also end up with roughly 10min of ice time unaccounted for.
09.12.2024 14:03 β π 2 π 0 π¬ 1 π 0Graphs depicting the TOI of three players recorded throughout the game. The data stream often provides two different numbers for each player at a specific game time. Conflicts seem to occur simultaneously for all players.
The source provides a game clock but it doesn't seem to update in sync w/ the player info. I ended up with 76 unique game times. 32 of them had multiple TOIs for each player. I filtered conflicting snapshots by comparing them to goalie TOIs calculated from goalie change events in the pbp.
09.12.2024 14:03 β π 0 π 0 π¬ 1 π 0Shift chart for the NY Sirens game on Dec 8th. Dots represent when a player appears on the ice during a recorded event. Bar thickness represents the percentage of time on the player was potentially on the ice for the length of the segment.
Siren's shift data from yesterdays PWHL game derived by recording live game summary updates for each players time on ice every 20 seconds.
09.12.2024 14:03 β π 5 π 2 π¬ 1 π 0Haven't checked manually yet, hopefully the lag exhibits some predictable patterns.
04.12.2024 20:56 β π 0 π 0 π¬ 0 π 0The chart is just early diagnostics at this point, dots are when the player appears in an event, thickness is players toi / elapsed time in that segment. Not too promising so far on my end at least. I'm curious if others have made similar attempts
04.12.2024 00:08 β π 0 π 0 π¬ 0 π 0Source is from: lscluster.hockeytech.com/feed/index.p...
I'm hitting it every 30 seconds during the game. I think this might be the only way to get some info otherwise destroyed once aggregated.
Makeshift shift chart for PWHL NY's Dec 1st Game vs. Minnesota. Dots represent when the individual appeared on the ice. While the data is not readily available I was hoping to recover partial information by recording game summary updates for TOI live.
@mikemurphyhky.bsky.social do you know what's up with PWHL TOI data? I scraped last game's live summary updates to try and create a substitute shift chart but it did not turn out well for me. The final reported TOIs don't appear to add up either. Any work out there on this?
03.12.2024 19:07 β π 2 π 0 π¬ 1 π 0Plot of NHL player tracking data. Coordinates of players and puck updating every 1/10 of a second.
Yeah the nerds are gunna feast on this. Awesome find!
09.10.2024 20:51 β π 1 π 0 π¬ 0 π 0Maybe Reaves for me. Whoever leveraged the PR machine to make themselves completely infallible to enough people. Probably a good locker room guy too
08.10.2024 12:23 β π 0 π 0 π¬ 0 π 0The big questions this year are what if we conceded our 4th lines minutes and can we fix this washed up dman... like woo go team. They didn't even have the killer instinct to fire the coach
01.11.2023 15:45 β π 0 π 0 π¬ 1 π 0HOW?
25.09.2023 18:20 β π 0 π 0 π¬ 0 π 0Me from the outside looking in, as I struggle to clean the RTSS data: I bet they're all just fitting noise in there
21.09.2023 21:06 β π 1 π 0 π¬ 0 π 0That man survived an expansion draft gaffe that I'd put on par with some of 2017 moves...
14.09.2023 17:50 β π 0 π 0 π¬ 0 π 0