What is PDO in Hockey? The Luck Stat That Predicts Regression
PDO tells you when a team is getting lucky and when that luck is about to run out. Here's how it works and why it matters for predictions.
If you want to know which NHL teams are overperforming and which are due for a correction, PDO is the stat to watch.
It doesn't get talked about on broadcasts. Most fans have never heard of it. But in the analytics world it's one of the most reliable indicators of whether a team's record is real or built on sand.
What PDO actually is
The formula is straightforward:
PDO = On-Ice Save Percentage + On-Ice Shooting Percentage
If your team's goalie is saving 91.5% of shots and your skaters are scoring on 9.5% of their attempts, your PDO is 101.0.
The key thing to understand: league-wide PDO always averages to exactly 100. Every save for one team is a miss for the other. It's mathematically locked. Over a big enough sample, every team gets pulled back toward 100.
That means a team running well above 100 is benefiting from some combination of hot goaltending and hot shooting. And that combination almost never lasts.
Why it always comes back to 100
Save percentage and shooting percentage are both noisy stats, especially in small samples. The things that create real sustained deviation (elite goaltending, elite shot selection) exist, but they move the needle less than people think.
Goalies are volatile. Even the best goalies have stretches where they post a .940+ save percentage that they can't maintain. Pucks bounce off posts, deflect off skates, find holes that have nothing to do with skill. Those stretches end.
Shooting percentage is even noisier. A team can go on a run where everything goes in from everywhere. That's not a system. That's luck. And it corrects.
Small samples make everything look extreme. Over 10 games, a team can easily sustain a PDO of 104. Over 82 games, they almost certainly won't.
How to read the numbers
PDO well above 100 (103-106): This team is probably winning more than their play deserves. Their goalie is running hot, their shooters are finishing at unsustainable rates, or both. Their record looks better than it should. Expect a correction.
PDO well below 100 (94-97): This team is probably better than their record shows. They're getting bad bounces on both ends. This is a buy-low situation if the underlying possession numbers are solid.
PDO near 100: What you see is what you get. Results are tracking actual talent level.
How PuckCast uses it
The model doesn't plug PDO in as a single input. It breaks it into the two components and handles them separately.
Save percentage regression: The model tracks each goalie's rolling performance against their career baseline and expected performance given shot quality. A goalie running way above expected gets flagged, and the win probability adjusts down.
Shooting percentage normalization: If a team is shooting 12% but their shot profile suggests 8.5%, the model doesn't assume they'll keep converting at that rate. It prices in the expected correction.
The sanity check: When a team's record says they're good but the model says they're not, PDO is usually the explanation. High PDO teams get downgraded in the power index. Low PDO teams get bumped up.
This is one of the ways the model finds edges that a pure standings-based approach misses completely.
Bottom line
PDO is a regression detector. Teams running high are probably getting lucky. Teams running low are probably better than they look. The number is 100, and the league always gets pulled back toward it.
Check the glossary for more analytics terms, or head to predictions to see how regression factors into tonight's picks.
PDO regression adjustments are built into every PuckCast prediction. Model refreshes daily.