Loading...
Loading...
PuckCast predicts game-level win probabilities for every NHL matchup. Here is exactly how it works, what it considers, and where it falls short.
TL;DR
An ensemble of two algorithms (70% Logistic Regression, 30% Histogram-based Gradient Boosting) processes 154 features across 16 NHL seasons to produce a win probability for each game. The model is validated using walk-forward testing, meaning it only ever "sees" past data when predicting future games. Check the performance page for the full track record.
For every scheduled NHL game, PuckCast outputs a win probability for each team. Not a score prediction, not a point spread. A calibrated probability between 0% and 100% that reflects how likely each side is to win in regulation, overtime, or a shootout. These probabilities power the daily picks on the predictions page.
Instead of relying on a single algorithm, PuckCast blends two models with complementary strengths. The final prediction is a weighted average of their outputs.
The backbone of the model. Linear, stable, and well-calibrated. It finds the strongest signal in the data without overfitting to noise. Handles the majority of predictions because hockey outcomes are driven more by steady team-level trends than exotic non-linear interactions.
A tree-based model that captures non-linear patterns. Things like how fatigue compounds on road trips, or how a team's power play efficiency changes when facing a top penalty kill. It adds predictive value in situations where straight-line relationships break down.
Every prediction is built from 154 input features, computed from rolling windows of recent games. Here is what the model considers.
Win rates, goal differentials, expected goals, and scoring trends across multiple rolling windows (3, 5, 10, 20 games). Captures both short-term momentum and longer-term quality.
Starter save percentage, goals saved above expected, recent workload, and quality start rates. Goaltending is the single most volatile factor in hockey, so the model tracks it carefully.
Power play and penalty kill efficiency at multiple time horizons. Special teams can swing a game, and the model weighs recent form more heavily than season-long averages.
Days of rest, back-to-back flags, home/away splits, travel distance, and time zone changes. Fatigue is real. Teams on the second night of a back-to-back are measurably worse.
Expected goals for and against, high-danger chance rates, shooting percentage relative to expected, and PDO. These features separate teams earning their results from those riding luck.
The model trains on 16 NHL seasons of game data. That is roughly 20,000+ regular season games, each with full play-by-play records. More data means the model can learn patterns that hold up across different eras, rule changes, and styles of play.
Validation uses walk-forward testing: the model is trained on past seasons and tested on the next season it has never seen. This is repeated across four temporal folds, covering 5,002 test games. It is the most honest way to evaluate a prediction model because it mirrors real-world conditions where you only have historical data at prediction time.
By the numbers
Transparency matters. Here are the blind spots. The model works with pre-game information only, so anything that happens after puck drop or outside the box score is invisible to it.
If a star player gets hurt during warmups or early in a game, the model has no way to adjust. Predictions reflect the expected lineup at the time they are generated.
Unexpected lineup decisions, emergency call-ups, or last-minute goalie changes happen regularly. The model relies on recent team-level trends, not the specific roster sheet for tonight.
Rivalry games, playoff elimination scenarios, trade deadline distractions, a coach on the hot seat. These things affect outcomes, but they are nearly impossible to quantify from historical data alone.
In walk-forward validation across 5,002 games, the model achieved 61.98% accuracy. During the 2025-26 season, live accuracy sits around 57% overall with recent 30-day stretches hitting 71%. No model can predict every game, but consistent edge over coin-flip odds adds up over a full season.
Logistic Regression is stable and interpretable. It handles the core signal well. Histogram-based Gradient Boosting captures non-linear patterns that linear models miss, like how fatigue and travel interact differently for back-to-backs vs. three-in-four-nights. Blending them reduces the weaknesses of each.
The model retrains weekly (Monday mornings) to incorporate the latest game data. Daily predictions use fresh stats pulled that morning, so the features are always current even between retraining cycles.
The model generates probabilities for any NHL matchup, including playoffs. However, playoff hockey is a different beast: smaller sample sizes, adjusted strategies, and heightened intensity mean regular-season patterns don't always carry over. Take playoff predictions with an extra grain of caution.