Three Goalie Metrics, Three Different Questions
Compares formulas, units, shot-quality adjustment and workload, with an example showing when cumulative goals and expected rates align.

Raw save percentage (SV%) tells you what share of recorded shots on goal a goalie stopped. Goals Saved Above Expected (GSAx) tells you how many goals the goalie prevented—or conceded—relative to a shot-quality model. Save Percentage Above Expected expresses model-relative performance as a rate. They are related, but they are not interchangeable.
The short answer: goals, raw rate, or expected rate
Always check which statistic and denominator a provider means.
The basic formulas are:
- Raw save percentage:
SV% = Saves / Shots Against, equivalently1 − GA / SA - Goals Saved Above Expected:
GSAx = xGA − GA - Save Percentage Above Expected:
SV% − xSV%
Here, GA is actual goals against, SA is shots on goal against, xGA is expected goals against, and xSV% is expected save percentage. The Evolving-Hockey goalie glossary defines ordinary SV% and GSAx separately; it also defines a Fenwick-based expected-save differential with a broader attempt denominator.
Save Percentage Above Expected is separately defined as actual save percentage minus expected save percentage in the MoneyPuck glossary. Because providers may use different eligible attempts, the provider’s exact definition matters.
| Metric and formula | Unit | Shot quality and workload | Best use |
|---|---|---|---|
| Raw SV%: Saves / SA | Decimal or percentage | No shot-quality adjustment; rate still affected by sample size | Describing the observed stopping rate |
| GSAx: xGA − GA | Goals | Model-adjusted; accumulates with opportunities and playing time | Measuring cumulative model-relative impact |
| Save Percentage Above Expected: SV% − xSV% | Decimal or percentage points | Model-adjusted and expressed per eligible shot | Comparing expected and actual stopping rates |
| GSAx per 60: 60 × GSAx / minutes | Goals per 60 minutes | Model-adjusted and normalized for playing time | Comparing goal differentials across workloads |
The crucial distinction is the unit. A goalie can be +8 GSAx, but not “+8% GSAx.” Likewise, a goalie can be +.012 in Save Percentage Above Expected, meaning 1.2 percentage points above expected—not 12 goals saved.
What each metric actually measures
Raw SV% answers: What share of recorded shots on goal did the goalie stop? If a goalie faces 100 shots and allows eight goals, the goalie makes 92 saves and records a .920 save percentage.
Every qualifying shot has equal weight in that calculation. A routine point shot and a cross-crease chance each count as one shot on goal. Raw SV% records the outcomes, but it does not attempt to describe how difficult those shots were.
GSAx answers: How many fewer or more goals did the goalie allow than the model expected from the chances faced? Expected goals against is created by adding the modeled scoring probabilities assigned to eligible attempts.
A positive GSAx means the goalie allowed fewer goals than expected. A negative GSAx means the goalie allowed more:
xGA 12 − GA 9 = +3 GSAxxGA 12 − GA 15 = −3 GSAx
Save Percentage Above Expected asks essentially the same expected-versus-actual question on a per-shot scale: How much higher or lower was the goalie’s stopping rate than the model’s expected stopping rate?
Expected-goals models may incorporate location, angle, shot type, rebounds, movement before the shot, screens, or other recorded features. The exact variables vary by provider. As the Seattle Kraken’s introduction to hockey analytics explains, shot-quality analysis supplies context while public models still leave relevant information unmeasured. GSAx adds modeled difficulty; it does not capture every feature of a scoring chance.
Worked example: the same performance in goals and percentage points
Consider this fictional example, not player data:
- Eligible shots faced: 100
- Expected goals against: 10
- Actual goals against: 8
First calculate GSAx:
GSAx = xGA − GA = 10 − 8 = +2 goals
Now calculate ordinary save percentage:
SV% = 1 − GA / shots = 1 − 8 / 100 = .920
Using the same 100-shot denominator, calculate expected save percentage:
xSV% = 1 − xGA / shots = 1 − 10 / 100 = .900
Save Percentage Above Expected is therefore:
SV% − xSV% = .920 − .900 = +.020
The goalie stopped shots at a rate two percentage points above expected. That is the rate expression of the same +2-goal difference.
When both statistics use exactly the same eligible shots and denominator, the algebra simplifies:
Save Percentage Above Expected = GSAx / eligible shots
In this example:
2 / 100 = .020
This conditional relationship follows from subtracting 1 − xGA/n from 1 − GA/n, as shown in the MetricGate GSAx documentation. It does not justify dividing a dashboard’s GSAx by ordinary shots against when the model uses a different attempt set. The conversion is also invalid if the figures cover different game states, seasons, date windows, filters, or denominators.
Why goalies can rank differently
Consider a second fictional example. Two goalies each face 100 shots and allow eight goals:
| Goalie | Raw SV% | xGA | GSAx |
|---|---|---|---|
| Goalie A | .920 | 10 | +2 |
| Goalie B | .920 | 7 | −1 |
Their raw save percentages are identical because each stopped 92 of 100 shots. Their GSAx results differ because the model assigned different difficulty to the chances they faced.
Goalie A allowed eight goals against an expectation of 10, finishing two goals better than expected. Goalie B allowed eight against an expectation of seven, finishing one goal worse than expected. The equal raw rates conceal different modeled chance quality.
Workload creates another ranking difference. Total GSAx accumulates, so it combines model-relative performance with opportunity. A goalie who sustains a modestly positive rate over a starter’s workload can produce more total GSAx than a backup with a stronger rate in fewer minutes.
GSAx per 60 addresses that particular issue:
GSAx per 60 = 60 × GSAx / minutes played
It normalizes the goal differential for time played, but it does not automatically make a comparison reliable. A few goals—or a few chances with large expected-goal values—can sharply move a small-sample rate.
Neither presentation is inherently superior. Use total GSAx when asking who delivered more cumulative model-relative value over a period. Use GSAx per 60 or Save Percentage Above Expected when asking how performance compared relative to workload.
Which metric should you use?
Choose the metric according to the question, not according to which number looks most advanced.
| If you want to know… | Use |
|---|---|
| What share of recorded shots did the goalie stop? | Raw SV% |
| How many cumulative goals did the goalie prevent relative to the model? | Total GSAx |
| What was the model-relative goal differential for equal playing time? | GSAx per 60 |
| How far above or below expected was the stopping rate per eligible shot? | Save Percentage Above Expected |
A useful goalie summary presents raw SV%, total GSAx, workload, and one rate measure together. Workload might be minutes, eligible shots, or games, depending on the comparison. This prevents a cumulative total from being mistaken for efficiency and a strong rate in limited action from being mistaken for season-long impact.
GSAx provides shot-quality context, but it is not a direct measurement of pure goalie talent and does not completely remove team effects. Team structure can affect passing lanes, screens, rebounds, defensive pressure, and the sequences preceding a shot. A model can adjust only for information represented in its data and specification.
Past description and future prediction must also remain separate. GSAx describes performance against a particular model over a selected sample; it does not guarantee that the same level will continue. Treat short windows cautiously without assuming there is one universal number of games, minutes, or shots at which every goalie metric becomes reliable.
A checklist for valid goalie comparisons
Before comparing two expected-goaltending figures, confirm that the following match or have been explicitly accounted for:
- Provider and expected-goals model
- Exact metric definition
- Eligible shot or attempt set
- Game state, such as all situations or five-on-five
- Season
- Regular season or playoffs
- Full season, recent games, or another date window
- Games, minutes, and eligible shots faced
- Minimum-games setting
- Dashboard update timestamp
Different providers can produce different GSAx values because their models may use different inputs, assumptions, event corrections, and shot definitions. An all-situations figure should not be compared directly with a five-on-five figure. The same warning applies to different seasons, competition types, and date windows.
Never assign a meaning to an unlabeled or ambiguous dashboard column. A number that resembles GSAx, SV%, or xSV% is not enough; confirm the heading, filters, and glossary first.
The Yegorov site provides a useful scope lesson. Its methods and glossary page describes a personal, manually entered dashboard and separates goal totals from save-rate differences. Those definitions help readers interpret that display, but they do not establish the project as an independently validated, league-wide NHL model.
Likewise, the required Reddit discussion about the dashboard documents the questions readers raised, not verified statistical results. Fan calculations can expose ambiguous labels worth investigating, but the provider’s documented definitions and underlying data must settle the calculation.
Finally, inspect what the selected model represents. Rebound control, puck handling, screens, defensive breakdowns, passing sequences, and pre-shot movement may be represented incompletely or not at all. A precise GSAx figure describes only the context recorded by that model.
Do not confuse GSAx with GSAA
Goals Saved Above Expected and Goals Saved Above Average both use goals as their unit, but they use different benchmarks.
GSAx compares actual goals against with modeled expected goals from the chances faced:
GSAx = xGA − GA
GSAA compares actual goals against with the goals a goalie would allow at an average save percentage over the same shot volume. Written in goals-allowed terms:
GSAA = [SA × (1 − league-average SV%)] − GA
The average save percentage must come from a consistent comparison set, including the relevant filters and game state. The Natural Stat Trick glossary describes GSAA as a shot-volume-based comparison with the average save rate.
GSAx therefore uses a shot-quality model, while GSAA uses an average stopping-rate benchmark. The two statistics can produce different evaluations of the same goalie, so the acronyms are not interchangeable.
Related labels also require care. Expected save percentage is the stopping rate predicted for the selected workload, while Save Percentage Above Expected is the difference between actual and expected rates. Fenwick save percentage uses a broader denominator that includes missed shots as well as shots on goal. Always check the provider’s glossary before comparing or converting these figures.
The practical rule is simple: use raw SV% for the observed stopping rate, total GSAx for cumulative performance against modeled shot difficulty, and an expected-save or per-60 rate when workload differs. Report the model, filters, eligible attempts, and sample beside the number, because even a correctly calculated goalie metric can mislead when its definition or context is missing.