pwhl methodology
PWHL Methodology
Two pieces: a team-strength Elo that simulates the Walter Cup, and a player-level advanced suite built from on-ice shot coordinates.
The outlook is a team Elo fit on every PWHL result since the league's first puck drop, walked chronologically and Monte-Carlo simulated to playoff and Walter Cup odds. The advanced suite is built separately from HockeyTech coordinate-level play-by-play — high-danger chances defined by where shots actually came from.
engine
Team Elo Walter Cup outlook + coordinate-level advanced suite
Team strength is a chronological Elo over every PWHL game (home-ice advantage, margin-aware) that feeds a Monte Carlo of the remaining schedule and playoff bracket. The advanced suite is independent: from ~340 games of HockeyTech play-by-play with on-ice x/y shot coordinates, four metrics span the goalie (HDSV+), offense (Slot Threat), special-teams (PPQ-lite) and physical (hits+blocks) axes.
data
Where the inputs come from
sources
HockeyTech / LeagueStat play-by-play, PWHL official results
training
All PWHL seasons to date (S1 2024, S2 2024-25, S3 2025-26); ~340 games of coordinate-level play-by-play
holdout
Each advanced metric is face-validity gated against known elite players before shipping; the Elo is validated against final standings
calibration
Out-of-sample performance
metric
Face-validity gate (advanced) + standings fit (Elo)
value
Published per release
High-danger is defined empirically as the tightest ~30% of shots by distance to the net (within ~40px of the folded-frame net), where conversion runs about 1.6x the overall rate.
key levers
What controls the projection
Coordinate-defined high danger
Shots carry on-ice x/y, so the slot is defined by where shots actually convert, not by a fixed box-score rule.
Per-game rates
No public skater TOI in the feed, so skater metrics are per game. For a three-season league this is more stable than per-60 on tiny minutes.
Empirical-Bayes shrinkage
Low-sample players are pulled toward the position-group mean (skaters) or league high-danger save rate (goalies) so noise doesn't top the leaderboard.
Goal-to-goalie attribution
Goals carry no goalie id, so each high-danger goal is charged to the goalie facing that team's shots in the same game — same id space as the saves.
faq
Common questions
Why only four metrics?
The PWHL feed exposes shots with coordinates, hits, blocks, and power-play scoring — but no zone entries, no passing, and no on-ice player lists. So a goalie high-danger metric, a slot shot-generation metric, a power-play metric, and a physical metric are what the data honestly supports. We didn't ship anything the data can't back.
Why per game instead of per 60?
The public PWHL feed has no skater time-on-ice. Per-game rates are the honest alternative, and on a three-season sample they're more stable than per-60 on small minutes.
How is high danger defined?
Empirically: shots are folded to one attacking frame, and high-danger is the tightest ~30% by distance to the net — the slot zone where conversion runs about 1.6x the overall rate.
What's the outlook based on?
A chronological team Elo over every PWHL game, Monte-Carlo simulated to playoff and Walter Cup probabilities. It's separate from the advanced metrics.
apex framework
For the platform-wide methodology framework — pre-registration policy, data philosophy, bias controls, and honesty notes — see the apex methodology page.