What's Actually Inside a GAR Number
2026-08-01 · methodology · analytics · GAR · RAPM
GAR compresses a season into one figure - so the parts underneath had better add up. What our GAR is actually made of, why it is anchored on counting stats rather than built purely from RAPM (measured: pure RAPM drops standings R-squared from 0.75 to 0.51), and the bug that left our own component breakdown failing to sum to the number above it.
Figures computed 2026-08-01, against the models as they stood that day. We change them — see the methodology page for where they are now.
- GAR is anchored on counting stats, with the even-strength defense term replaced by a regression-based estimate. It is not a pure RAPM model, on purpose.
- We measured the pure-RAPM alternative: it drops standings R² from 0.75 to 0.51 and is not more repeatable. RAPM cannot see finishing, faceoffs, or penalties.
- The breakdown we displayed was built from columns that were never part of the total. Their sum correlated 0.61 with the headline number at best — and 0.026 in 2025-26 after a separate bug. Both are fixed; the components now sum exactly.
What a GAR number contains
Our headline value is the RAPM total GAR. It is a sum of the following, all in goals above a replacement-level player:
| Component | What it measures | Source |
|---|---|---|
| EV Offense | Even-strength goal creation | Counting stats |
| EV Defense | Even-strength goal suppression | Regression (SPM/RAPM) + team residual |
| Power Play | Offense with the man advantage | Counting stats |
| Penalty Kill | Shorthanded goal suppression | Expected goals against on PK shifts |
| Finishing | Goals scored above expected | Counting stats, regressed 50% toward xG |
| Penalties | Drawn minus taken | Counting stats |
| Faceoffs | Draw wins above average | Counting stats |
Finishing is deliberately halved. Shooting above expected is mostly luck — it repeats year-over-year at roughly r = 0.35, the weakest of any component we track — so keeping all of it would make GAR a worse measure of skill. Keeping half is a compromise between describing what happened and predicting what comes next.
Why not use regression for everything?
The obvious simplification is to drop the counting-stat anchor and build GAR entirely from RAPM (Regularized Adjusted Plus-Minus) coefficients — one term each for even-strength offense, even-strength defense, power play, and penalty kill. It is cleaner, and it is what several public models do.
We tested it across four seasons. It is substantially worse:
| Model | YoY repeatability | Standings R² |
|---|---|---|
| Current (counting-anchored) | 0.766 | 0.754 |
| Pure RAPM sum | 0.741 | 0.508 |
| Pure counting stats | 0.619 | 0.823 |
A pure-RAPM model loses a third of its ability to explain why teams win, and it is not more repeatable either. The reason is what RAPM measures: on-ice expected-goal rates at even strength, on the power play, and on the penalty kill. That is all. It cannot see whether a player buried his chances, won a defensive-zone draw, or drew a penalty in the third period. Those are real, repeatable sources of value, and a model built only on shot-rate coefficients is blind to every one of them.
There is a second, subtler problem. RAPM coefficients are estimated relative to teammates and opponents. That is exactly what you want when isolating an individual — and exactly what you do not want when adding players up to explain a team's season, because the relative framing has already divided out the team-level signal that standings depend on.
Counting stats have the mirror problem: the best standings fit of the three, and the worst repeatability, because they keep every bounce. So we anchor on counting stats and substitute regression for the one component counting stats genuinely cannot measure — even-strength defense, where a defenseman's job is to prevent events that then do not appear in any box score.
What we got wrong
Our player pages show a component breakdown beneath the headline GAR. It was drawing from a set of internal RAPM columns that are stored for analysis but are not part of the total — two of them, even-strength offense and power play, are explicitly documented in our own code as “stored, not used in total.”
The result was a breakdown that did not reconcile with the number above it. Across most seasons the component sum correlated about 0.61 with the displayed GAR. It should have been 1.00.
A second bug made 2025-26 far worse. Our RAPM job writes its results after the aggregation that composes GAR, and it was overwriting four component columns with raw, unadjusted coefficients. For 2025-26, 551 of 611 stored even-strength-defense values were exactly the raw coefficient rather than the processed one. The component sum's correlation with the headline number fell to 0.026 — essentially random. Alex Ovechkin's stored defensive value read -13.1 where the correct figure was 0.26.
Both are fixed. The aggregation is now the sole writer of those columns, the breakdown reads the components that are genuinely inside the total, and we added an automated check that fails if the parts ever stop summing to the whole. Across all 19 seasons with RAPM data, the components now sum to the headline number exactly — maximum error 0.000000.
The caveat we are not going to hide
The sum was exact, but the attribution was not. The even-strength defense figure was computed as a residual — the headline number minus every other component — which makes the arithmetic airtight but means the EV Defense bar quietly absorbed everything that was not one of the named parts: the half of finishing we regress away, a small play-driving credit, and the replacement-level adjustment.
When this post first went up we estimated that leakage at “a few tenths of a goal, two or three at worst.” That was wrong, and materially so. The estimate accounted for the finishing and play-driving pieces but omitted the replacement-level adjustment, which turns out to dominate. Measured properly, the EV Defense bar was overstated by an average of 4.0 goals for defensemen and 3.0 for forwards, and by as much as 8.8. Moritz Seider's 2025-26 bar read +7.9 when his actual even-strength defense was −0.9.
We have since split the residual into named parts, so each is now shown on its own instead of being folded into defense:
| Bucket | What it is |
|---|---|
| EV Defense | The even-strength defense share of the total, as the ledger allocates it |
| Play-driving | Shot-share credit for defensemen who move play up the ice |
| Finishing adj. | The half of shooting luck we regress away |
| Replacement | The baseline every player is measured against, scaled by ice time |
A second correction, August 2026
The line above — “his defensive rating is now his defensive rating” — was still too confident, and we have since found out why. Naming the parts fixed the arithmetic but not the attribution: the EV Defense bucket is computed as what is left after every other named part is subtracted, so it remains a residual wearing a measurement's name. In particular it still absorbs a replacement-level transfer paid per even-strength hour, and the penalty-kill component is centred on the league average rather than on replacement. Kill time therefore earns a player nothing above the baseline, and the shortfall lands in the defense bucket. The correlation between a defenseman's shorthanded share and how far his site rating sits below a direct estimate is −0.69: five of the eight most PK-heavy defensemen in 2024-25 sat in the bottom 11 percent of a rating that has nothing to do with the penalty kill.
We tried four fixes — swapping in a better column, removing usage contamination statistically, changing the replacement basis, and enabling the zone-start term — and none of them survived testing. So rather than publish a number we cannot defend, the site now shows two: an EV Defense (allocated) bar, which is the ledger share and still adds up, and a separate EV Defense (rating), which is a direct estimate of how good the player actually is at defending. The rating is the more repeatable of the two, better predicts next season's goals against, and agrees more closely with Evolving Hockey and HockeyStats. It deliberately does not add up with the other bars, because it is a rating rather than an allocation.
The parts still sum to the headline number exactly. We would rather correct this in public twice than leave a tidy chart standing that implied more precision than the method supported.
Why this matters
A value model that cannot explain itself is a black box asking for trust it has not earned. If we tell you Macklin Celebrini was worth 27.3 goals above replacement, you should be able to open that number, see 18.2 from even-strength offense and 4.4 from the power play, and add it back up. When the parts do not reconcile with the whole, either the breakdown is wrong or the headline is — and you have no way to tell which.
Frequently Asked Questions
What is GAR made of?
Seven components, all in goals above replacement: even-strength offense, even-strength defense, power play, penalty kill, finishing, penalties drawn minus taken, and faceoffs. All are counting-stat based except even-strength defense, which uses a regression estimate, and finishing, which is regressed halfway toward expected goals.
Why isn't GAR built entirely from RAPM?
Because RAPM only measures on-ice expected-goal rates. It cannot see finishing, faceoffs, or penalties drawn. Measured across four seasons, a pure-RAPM model drops standings R-squared from 0.75 to 0.51 and is no more repeatable year over year, so Hockey Alchemy anchors GAR on counting stats and substitutes regression only for even-strength defense.
Why is finishing only counted at half weight?
Shooting above expected is mostly luck. It repeats year over year at about r = 0.35, the weakest of any GAR component, so counting all of it would make GAR a worse measure of durable skill. Half is a compromise between describing what happened and predicting what comes next.
More from the Notebook
How Good Is Our WAR Model? We Ran Four Tests and Lost Two
We tested our WAR model against HockeyStats and Evolving Hockey on the four questions an honest player-value model has to answer, matched to each benchmark's published protocol. Summed to a team it loses both tests - it forecasts next season worse than simply reusing last season's standings. Measured per player it wins both, repeating at 0.77 against 0.62 and 0.46.
Which Hockey Stats Are Skill, and Which Are Luck?
Line up every player's value in a category this season against next season and you get a brutal skill-vs-luck test. Staying out of the penalty box repeats more than four times better than finishing - and it changes how you should read a stat line.
Talent vs Production: Why the Box Score Misleads
Two wingers score 20 goals; only one of them will do it again. The gap between what a player produced and the process underneath it is the most useful idea in hockey analytics - and it is the split our expected-goals and finishing models are built to make.