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.
- 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.