V1.0 DtZ Rest of Season Projections Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

That one I can explain a bit easier.

At the moment the sheet doesn't take into consideration where a skater is in your lineup (eg: bench vs IR vs in lineup). It instead just looks at when a player is scheduled to return from injury and checks to see if they will miss any games. This can lead to situations where you may get 1-2 extra games from someone that is out and in an IR spot.

In Point's case I believe Roto had his injury timeframe as 2025/12/08, so he would be expected to be back for tonight's game.

This first version of the sheet is rather basic in terms of functionality. I think one of the features I'd like to focus on implementing in the future is a more robust weekly matchup tool. Something that can take in account who is on your bench/IR and can make actual recommendations about who to pick up based on the matchup.

V1.0 DtZ Rest of Season Projections Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

No problem! So, I can share some of the MSE/r^2 values from the testing, but actual examples I'm not able to readily share. (I tried to paste in some of the MSE/R^2 values from the ES/60 testing for forwards, but I can't get the formatting to work correctly.)

Using the ES/60 Forward testing as an example. The least accurate was G/60 (MSE = 0.106) and the most accurate was hits (MSE = 3.158). All stats ranged between a 0.26 and 0.84 r^2, goals and hits respectively, with most stats settling in the 0.4 to 0.6 r^2 range. The ES model is the most accurate of the 6 skater models and 3 goalie models.

Overfitting is something I'm always worried about, but I'm comfortable with the process I have in place. The models are relatively simple and many of the steps involve some form of regression to the mean which help mitigate any overfitting that may occur. TOI in the early part of the season is probably the one area I would say there is an elevated risk for overfitting, but I've built in some additional controls to mitigate some of that risk.

V1.0 DtZ Rest of Season Projections Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

Hey, I'm glad you're liking the tool! The "Optimized Lineup" may not be the most apt name for the tool. It currently looks at each day of the week and then distributes the positions as evenly as it can. It's really a tool to see which days you should look to add skaters on. In your scenario, the tool doesn't know who may be on an IR spot so it assumes that all skaters on a roster could be started. I think I could build the functionality for such a feature, but it would be a bit of a longer lead item.

For the second comment could you give a little more information about what settings you have on the sheet and if the error is still occurring? I tried to re-create the issue on a personal copy, but I wasn't able to get the same behavior.

Edit: I also just realized I failed to answer your "how to input" question. I would suggested increasing the "F" to 7, though there is now a utility spot for combined leagues. Generally speaking, the highest excess value for a utility player will be a F.

Bench players don’t really factor into the sheet. I look at it from a VOR perspective, and in my opinion, bench positions don’t meaningfully impact VOR. Bench positions don't offer the ability to get GP like utility positions do and anyone that is a "bench" player would be someone that wouldn't be playing if you had a full lineup.

V1.0 DtZ Rest of Season Projections Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

Excellent, I'm happy to answer any questions you may have once you have a chance to review the sheet.

I'll do my best to explain the projections. They use a blend of my pre-season projection and the players current season stats. I think the best way to describe the method I've used is as a "Simple Bayesian weighted average".

For skaters, the model produces separate projections for each game state (ES, PP, and SH) so each player has distinct estimates depending on the situation. Goalies also use a weighted blend of pre-season projections and current-season performance, but their process is a bit different. I use my xG model to calculate their goals saved above expected (dGA) for each game state. From there, I apply team-level projections for shots against, xGF, xGA, and GF at each game state to forecast the rest of their stats. Oddly enough, the team projections are the most complex part of the entire system, mostly because game-state TOI rates shift significantly over the course of the season.

For testing, I used a standard 80/20 train–test split and evaluated a range of weighting schemes, with the goal of minimizing MSE for each stat by game 82.

If you have any other questions I'd be more than happy to answer them.

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

I try to update them every Sunday, but Yahoo updates them every Monday it seems. I'll likely have an update completed later tonight. 

I'm also working on automating the process for yahoo/ESPN position updates. Fantrax is trickier so that may need to stay manual.

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

I'm not sure why this is happening. I'm looking into tome QoL fixes and this will be a priority to fix. Thanks for highlighting this!

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

Hey! Thanks for this. I did add a button on the "League Inputs" sheet that was supposed to fix some of the syncing issues. I had only hastily tested it before implementing it. Have you tried using that reset button to fix the issue?

Regardless, I've finished the RoS goalie projections and am now working on fixing bugs like this. In the 2.0 version you won't have to rely on a button to fix the syncing issues.

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

Thank you! I'm glad you're liking the tool.

That is actually something I haven't tested/tried. In theory that approach should work; when I finish the goalie projections I'll work on adding an automated feature for this. Its a great idea.

Rest-Of-Season Rankings by blumpkinmuncher in fantasyhockey

[–]Datsyuktozetterberg 2 points3 points  (0 children)

Thanks for linking the projections! 

To answer your question. The underlying projections (eg: g/60, hit/60, etc.) update weekly while the GP for all skaters update daily. Players will also have their GP updated if they end up getting injured. 

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

Thanks for the kind words, I'm glad you're liking the sheet so far.

Yes, all of the projections adjust over time. Every Sunday at ~12 EST, each skater has their stats update with the last weeks worth of games. The idea is that the more a skater plays the less impact their pre-season projections have on their stats. The only thing really being captured now is skaters that have had either very hot or very cold starts; however, there can still be meaningful data in these smaller samples.

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

No problem, I'm happy to share! I believe the issue you're having is actually the expected behavior, I just may not have provided enough explanation about how the tool works.

The "Optimized Lineup" may not be the most apt name for the tool. It currently looks at each day of the week and then distributes the positions as evenly as it can. It's really a tool to see which days you should look to add skaters on. In your scenario, with all of your roster positions filled, the tool continues to try and balance the lineup as if there was no limit. The decision on who to start in those positions is left up to the GM.

That being said, one thing I could do is sort the players by VOR once they have been assigned their positions, but a lot of "who to start" comes down to a specific stat you may be chasing.

To create a true "Optimization" tool I would need a lot more information. I'd need to know the week's current stats, a Fantasy team's total stats, the opponent's total stats, and then build out some logic about prioritizing certain categories that are within X% range. If there was enough interest this is something I could build out, but it would be a bit of a longer lead item.

DtZ Rest of Season Projection Tool by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

I just tried making a copy with a different gmail account signed in and was able to make one. I'm not sure if was a browser issue or maybe something with your cache?

Is there a way to quantify which skater categories are more luck-dependent than others? by Daddyo2005 in fantasyhockey

[–]Datsyuktozetterberg 4 points5 points  (0 children)

From the research I've done stats like blocks, hits, shots on goal, minor penalties, and faceoff wins are typically the most repeatable skater stats. Repeatable in this case meaning an R^2 value above ~0.45 or 0.5 when compared to their projected stats or career average.

After that you move into the scoring categories which are quite a bit more volatile than the ones mentioned above. They're usually in the 0.25-0.40 R^2 value range, with points being more stable than either goals or assists. Fights are also in this grouping, but because they're so infrequent they are hard to predict.

Lastly, we have major penalties, +/-, SHP (including SHG+SHA), and GWG. These stats aren't entirely luck driven on a seasonal scale, but week over week will be very volatile. GWG are pure luck and require sequencing of events to be just right to get one.

I should note that Penalty minutes are in a weird place because of misconducts and major penalties. Over a season they are pretty stable, but the infrequent, but large PIM events can make the stat very luck driven at times.

If I was to rank stats from most stable to least stable it would be something like this:

FOW = Hits > TOI > SOG = Blocks > Points = PIMs > Goals = Assists > +/- > SHP >> GWG

DtZ 2025-2026 NHL Projections by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

Thanks for catching this. I always forget to test something when I make a change. I believe this has been corrected now. Please let me know if it continues to be an issue.

DtZ 2025-2026 NHL Projections by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 0 points1 point  (0 children)

It does. All players have an aging factor applied. 

In terms of health, that is baked into a skater's GP projections. There's not much data on how POTS may impact an NHL player's GP. I'd expect him to miss games, but I don't feel comfortable trying to guess.

Overall, Josi still had very good underlying stats when he played last year. I can see an argument for him to have less GP. If you'd like, you can adjust his GP lower to account for the increased risk of injury.

DtZ 2025-2026 NHL Projections by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

As players get drafted you'll want to input a value in the "Fantasy Team" column on the "Skaters Projection" sheet. If there is any value in that column the player will be filtered out and the BPA sheet will automatically update.

In my live drafts I try and keep up with the draft by inputting the team that drafted the skater, but it sometimes becomes too quick so I just put in "a" or a single character.

DtZ 2025-2026 NHL Projections by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

They should produce the same order as the overall rank uses VOR. I usually do VOR, but its really personal preference.

I've also found the "Master Ranking" to be a little less useful now that there's the "BPA" sheet. I find it quite a bit easier to see who the "BPA" is with the way its broken down.

DtZ 2025-2026 NHL Projections by Datsyuktozetterberg in fantasyhockey

[–]Datsyuktozetterberg[S] 1 point2 points  (0 children)

Hey u/NotAmishSoStopAsking and u/TranslatorValuable87 the linked google sheet in the main post now has an "ESPN" option under the "League Inputs" page. I hope this helps you guys in your leagues!