Skip to content
Ethan Fung

← All projects

MoneyPuck shot model

NHL shot-probability exploration with grouped evaluation and a class-weighted logistic model.

Built the EDA, feature engineering, grouped evaluation and model notebook.

~120,000 shots, game-grouped splits

  • Explored NHL shot probability with a class-weighted logistic model.
  • Built EDA, feature engineering and game-grouped splits to tune an F1 threshold.

Read the case study (opens in a new tab)1 min read

Year
2026
Result / current state
Used game-grouped splits to screen features and tune an F1 threshold without leakage across games.
Technologies
  • Python
  • pandas
  • scikit-learn
  • Matplotlib

What it does

The notebook estimates NHL goal probability from shot context such as manpower, score differential, game time and empty-net state.

My contribution

I cleaned and engineered features over roughly 120,000 2024 MoneyPuck shots, screened candidates and fit the final model.

Technical highlight

Single-feature ROC-AUC screening used game-grouped splits. A class-weighted logistic regression then used a tuned F1 threshold, with PR-AUC and ROC-AUC reported alongside accuracy.

Results and status

The model underperformed the always-no-goal baseline on accuracy, so this case study makes no headline performance claim. It is an honest interview take-home analysis.