Draft Chalkboard
← Back to Articles

Building PWHL Expected Goals from Scratch

September 2026 · Draft Chalkboard

Part 1 of the PWHL Player Value series

The PWHL doesn't publish expected goals. No public xG model exists for the league. But the data to build one is there, buried in the play-by-play feed that powers the league's own website. We pulled 11,625 shots across 210 games and two seasons to build the first one.

Why This Matters

This is the first article in a series about PWHL player value. The end goal: a framework that can tell you what a player is actually worth, grounded in what she does on the ice rather than reputation or box score stats.

To get there, we need to build from the ground up. Expected goals (xG) is the foundation. It tells you how many goals a player should have scored based on the quality of her shots. From there, we can separate skill from luck, evaluate defenders and goalies on what they actually face, and eventually connect all of it to salary data from the PWHLPA.

The NHL has had public xG models for over a decade. The PWHL has had none. Part of the reason is data access. The league's official stats page shows goals, assists, points, and save percentage. It doesn't show shot quality, shot location, or shot type. In our expansion protection article, we noted that without shot quality data, “we genuinely cannot tell you how good any PWHL goalie is independent of her defense.”

It turns out the data does exist. The HockeyTech API that powers the PWHL website includes full play-by-play with shot coordinates, shot quality ratings, shot types, and on-ice player lists for every goal. It just isn't surfaced anywhere on the public site. We pulled all of it.

The Data

Our dataset covers every regular season game from the 2024-25 and 2025-26 PWHL seasons: 210 games, 11,625 shots on goal, 990 goals. Each shot includes:

  • Shot location on the rink, converted to distance and angle from the net
  • Shot quality rating tagged by the league's official scorer (Quality or Non-Quality)
  • Shot type (wrist, snap, slap, backhand, tip)
  • Timestamp within the period, enabling rebound detection

What Makes a Shot Dangerous?

Not all shots are created equal. A tip-in from 8 feet out converts at a fundamentally different rate than a wrist shot from the blue line. The goal of an xG model is to assign each shot a probability of scoring based on the circumstances, then compare actual results to those probabilities.

Three factors dominate conversion rates in our data.

1. Distance

The single biggest predictor. Shots from within 10 feet of the net convert at 31.0%. Shots from beyond the blue line convert at 3.5%. Everything else falls on a smooth curve between those extremes.

ZoneShotsGoalsConv%
5-10 ft (slot)712231.0%
10-15 ft (high slot)1,10817115.4%
15-20 ft (circles)1,45219513.4%
20-25 ft1,27416012.6%
25-30 ft (top circles)1,09011210.3%
30-40 ft (high)1,9431437.4%
40-50 ft (point)1,743844.8%
50+ ft (beyond blue)2,9441033.5%

Over half of all goals (55.4%) come from within 25 feet of the net, despite those shots making up only 33.6% of total attempts. The danger zone is clear.

2. Shot Quality Rating

The league's official scorer tags every shot as “Quality” or “Non-Quality.” This flag captures information that location alone misses: traffic in front of the net, screen plays, defensive breakdowns, odd-man rushes. At the same distance from the net, quality-tagged shots convert at roughly double the rate of non-quality shots.

DistanceQualityNon-QualityRatio
10-15 ft (high slot)18.1%10.3%1.7x
15-20 ft (circles)14.3%10.1%1.4x
20-25 ft14.2%7.2%2.0x
25-30 ft (top circles)12.6%2.7%4.7x
30-40 ft (high)9.2%2.2%4.3x

The quality gap widens as distance increases. Close to the net, most shots are reasonably dangerous regardless of circumstances. From 25+ feet, the quality flag is the difference between a real scoring chance and a shot the goalie sees all the way.

3. Rebounds and Shot Type

Rebounds (shots within 3 seconds of a save) convert at 22.1%, compared to 7.6% for non-rebounds. That's a 2.90x multiplier. Goalies are out of position, the puck is loose, and the shooter often has an open net or a goalie scrambling to recover.

Shot type also matters. Tips (deflections) are the deadliest shot at 14.7%, because they redirect the puck in ways the goalie can't anticipate. Wrist shots, the most common shot type in the league (49.7% of all shots), convert at only 6.9%.

Shot TypeShotsConv%Avg Distvs Avg
Tip51714.7%25.8 ft1.73x
Snap1,2219.3%38.8 ft1.09x
Backhand7599.2%25.2 ft1.08x
Slap5767.6%48.5 ft0.90x
Wrist5,7806.9%41.3 ft0.81x

The low wrist shot rate is partly a distance effect (they're taken from farther out on average), but even controlling for distance, wrist shots slightly underperform other types. Tips are dangerous at any distance because they change the trajectory of the puck after the goalie has committed.

The Model

Each shot is assigned an xG value based on its distance from the net crossed with its quality rating. Rebounds get a multiplier on top. The result is a probability of scoring for every shot, which we can sum across a game, a season, or a career.

The model is intentionally conservative. It focuses on the two factors with the largest sample sizes (distance and quality) rather than trying to capture every possible variable. As more seasons of data accumulate, it can be refined.

Team Results: Who Got Lucky?

When we apply the model to the 2025-26 season, the gap between expected goals and actual goals reveals which teams benefited from finishing luck and which got burned by it.

TeamWShotsGoalsxGFG − xG
Montreal228937576.6−1.6
Boston218177171.2−0.2
Ottawa177916966.2+2.8
Minnesota168479178.6+12.4
Vancouver127936867.9+0.1
New York128856279.2−17.2
Toronto118485168.6−17.6
Seattle98376271.6−9.6

Minnesota scored 12.4 goals more than expected. They were the only team in the league with a large positive finishing differential. Their shooters converted at 15.8% above expectation across the entire season. Some of that may be individual finishing skill. Some of it is almost certainly luck that won't sustain.

On the other side, New York and Toronto were catastrophic finishers. New York generated the most expected goals in the league (79.2) but scored only 62. They created 885 shots, generated plenty of quality chances, and converted 17 fewer goals than a league-average team would have from the same shots. Toronto was just as bad: 17.6 goals below expectation, a finishing rate 25.7% below league average.

Montreal and Boston, the league's top two teams, were close to expectation. They won because their shot generation was strong and their goalies were excellent, not because they got lucky on finishing. That's a sign their success was structurally sound.

Player xG Leaders

At the individual level, xG separates two distinct skills: chance creation (generating high-xG shots) and finishing (converting shots at above-average rates). A player who does both is a star. A player who creates but doesn't finish is unlucky or snake-bitten. A player who finishes above expectation from low-quality chances may be unsustainably hot. The full xG leaderboard has every qualified skater. Here are the highlights.

Top xG Generators

These players created the most expected goals from their shots, regardless of whether those shots actually went in.

PlayerTeamShotsGoalsxGG − xG
Sarah FillierNY10499.9−0.9
Rebecca LeslieOTT99149.8+4.2
Laura StaceyMTL11379.3−2.3
Alex CarpenterSEA89119.2+1.8
Grace ZumwinkleMIN82138.5+4.5
Jessie EldridgeBOS75148.4+5.6
K. KaltounkováNY80118.1+2.9
Natalie SpoonerTOR7538.0−5.0
Kendall Coyne SchofieldMIN71128.0+4.0
Emily ClarkOTT7737.8−4.8

Sarah Fillier led the league with 9.9 expected goals on 104 shots, the highest volume in the league. She scored only 9 goals on those chances. She's part of the reason New York's finishing numbers look so bad: their best shot creator was slightly below expected, and the rest of the roster was far worse. Alex Carpenter generated 9.2 xG on 89 shots with the highest quality rate (70.8%) among the top ten, meaning more of her shots came from dangerous locations.

Natalie Spooner is the most dramatic case. She generated 8.0 expected goals and scored 3. Her shot profile was excellent: 65% quality shots, high danger locations, plenty of volume. She just could not put the puck in the net. That's the kind of variance that xG was designed to identify. There is no version of talent evaluation where Spooner's 3 goals on 75 shots represents her real ability. She was one of the best shot creators in the league and had the worst finishing luck.

Best Finishers (Goals Above Expected)

These players scored significantly more goals than the model expected from their shot profiles.

PlayerTeamShotsGoalsxGG − xG
Kelly PannekMIN57167.3+8.7
Taylor FoxMIN89136.8+6.2
Jessie EldridgeBOS75148.4+5.6
Fanuza KadirovaOTT48104.8+5.2
Brianne JennerOTT79127.1+4.9

Kelly Pannek scored 16 goals on 57 shots. The model expected 7.3. She converted at 28.1%, more than triple the league average of 8.2%. She was Minnesota's biggest beneficiary of the team-wide hot streak. Taylor Fox was the other half: +6.2 goals above expected on 89 shots. Together, Pannek and Fox account for the bulk of Minnesota's team surplus.

Shot Quality Generation

A separate skill from finishing: who generates the highest proportion of quality chances? Players who consistently get tagged as “Quality” are finding soft spots in the defense, getting open in the slot, and creating looks that the scorer deems dangerous.

PlayerTeamShotsQuality%xG/Shot
Kendall Coyne SchofieldMIN7173.2%11.2%
Alina MüllerBOS6271.0%11.2%
Alex CarpenterSEA8970.8%10.3%
Casey O'BrienNY6366.7%12.0%
Natalie SpoonerTOR7565.3%10.6%

Coyne Schofield leads the league at 73.2%. Nearly three-quarters of her shots are tagged as quality chances. Combined with her finishing (12 goals, +4.0 above expected), she's the rare player who both creates at an elite rate and converts at one. Spooner appears here too, reinforcing that her 3-goal season was a finishing aberration, not a reflection of her shot creation. Explore every player's numbers on the full xG leaderboard.

Limitations

This model is a starting point. The obvious limitations:

  • Two seasons of data.11,625 shots is a solid foundation, but more seasons will strengthen the model. Year-over-year validation isn't possible yet with only two seasons.
  • Quality flag is subjective.An arena scorer tags each shot. Different scorers may have different thresholds, and we don't know if the same criteria are applied consistently across arenas. In the NHL, this is called “rink bias” and it's a known problem with shot-based models.
  • No game state.The model doesn't account for power plays, empty nets, or score effects (teams trailing tend to take more aggressive shots). These can be added in future iterations.
  • No pre-shot movement.Pass-to-shot sequences, cross-ice feeds, and rush chances all increase conversion rates. The play-by-play data doesn't include these sequences, so the model can't capture them directly. The quality flag partially proxies for this.

What’s Next

This xG model is step one. The play-by-play data includes on-ice player lists for every goal, which means we can measure defensive impact: which defenders are on the ice when quality chances are generated against, and which ones suppress them. That's Part 2 of this series.

From there, we can build goalie evaluation (Goals Saved Above Expected, the metric we said the PWHL didn't have the data for in our expansion article). And eventually, we can connect all of it to the salary data published by the PWHLPA to answer the question that started this project: who is overpaid, who is underpaid, and what does a PWHL player's on-ice production actually cost?

Data from the PWHL HockeyTech play-by-play API. 210 regular season games across the 2024-25 and 2025-26 seasons. 11,625 shots, 990 goals.