Our Methodology
Transparency is a core principle of NHLForecasts. This page explains exactly how our prediction model works — from the data it ingests to the probabilities it outputs — so you can evaluate the forecasts on their merits rather than taking them on faith.
Model Overview
Every game prediction is produced by blending two complementary machine-learning models:
- Logistic Regression — A linear model with L2 regularisation that captures the direct relationship between team features and win probability. Its simplicity makes it resistant to overfitting on small samples.
- Gradient-Boosted Classifier (GBC) — A tree-based ensemble that captures non-linear interactions between features, such as the combined effects of team form and rest advantage.
The final win probability starts with a 50/50 average of both models. Production win probabilities use the raw model blend, without post-processing calibration.
Model Inputs & Features
The model uses 13 features derived from recent team and goalie performance. All features use walk-forward construction — only data available before each game is used — to prevent data leakage.
| Feature Category | Examples | Purpose |
|---|---|---|
| Rolling Win Rate | Home-minus-away win percentage (30 games) | Recent team form |
| Goal Differential | Goals scored minus allowed per game (30-game window) | Margin of victory / defeat |
| Goalie Performance | Recent save percentage of projected starter | Starting goaltender quality |
| Roster Quality | Lagged on-ice xG ratings | Recent roster contribution |
| Rest & Schedule | Days since last game (both teams) | Fatigue and back-to-back effects |
Win Probability Production
For each upcoming game the pipeline:
- Builds features from the latest available data
- Runs both models to get raw probabilities
- Averages the two outputs (50% logistic + 50% GBC)
- Production win probabilities use the raw model blend, without post-processing calibration.
- Outputs a home-win probability (away = 1 − home)
We evaluate the model with chronological training and test windows. Forward evaluation measures how predictions generalise to unseen games.
Goal Totals Prediction
Game totals (over/under) are predicted separately from the winner:
- Separate gradient-boosted regressors predict expected home and away goals.
- A Monte Carlo simulation draws thousands of score outcomes using learned residual dispersion (negative-binomial + normal mix) to produce over/under probabilities for common lines like 5.5 and 6.5 total goals.
Expected Goals (xG) Model
Our shot-level xG model is a gradient-boosted classifier trained on individual shot events. It estimates the probability that each shot becomes a goal using features including:
- Shot distance and angle to the net
- Shot type (wrist, slap, backhand, deflection, etc.)
- Strength state (even strength, power play, shorthanded)
- Score differential at the time of the shot
- Period and game clock
The xG model is trained with strict temporal integrity — only shots from prior seasons are used for training — to prevent future data from leaking into historical metrics. See the xG Analysis page for team and player leaderboards.
Data Sources & Update Cadence
All data comes from the official NHL API. During the regular season and playoffs the pipeline runs daily to:
- Ingest completed game results and shot events
- Update rolling features for every team
- Re-run predictions for upcoming games
- Refresh performance metrics and calibration
- Regenerate the website with updated data
Transparency Commitment
We believe predictions without accountability are just noise. That's why we publish live performance metrics — including accuracy, Brier scores, calibration charts, and team-level breakdowns — updated with every site build. If the model is wrong, the data will show it.
For a broader introduction to the analytics concepts used here, see our NHL Analytics Guide.
Frequently Asked Questions
How are NHL game predictions made?
Each game prediction blends two machine-learning models — logistic regression and gradient-boosted classification — trained on thousands of historical NHL games. The models use rolling team stats, goalie performance, roster ratings, and rest days to produce a win probability for each team.
What data does the model use?
The model ingests game results, goalie stats, and shot-level data from the official NHL API. Features include 30-game rolling win percentages, goal differentials per game, recent goalie adjustments, roster ratings, and rest-day advantages. Data is updated daily during the NHL season.
Does the production model use calibration?
Production win probabilities use the raw model blend, without post-processing calibration.
How accurate are the predictions?
Accuracy depends on the model version and evaluation period. See the performance page for dated results and the accuracy guide for how to distinguish historical fits from forward tests.
Explore
- NHL Analytics Guide — Corsi, xG, and key terms explained
- Model Performance — Live accuracy and calibration
- Today's Predictions — Daily NHL game probabilities
- xG Analysis — Team and player expected goals