NHL Advanced Stats for Betting — xG, Corsi, PDO Explained

NHL advanced analytics metrics for data-driven hockey betting
Updated July 2026
Licensed
Available in US
Fast payouts
18+ Only

Content

Why Traditional Stats Mislead NHL Bettors

Three seasons ago I nearly gave up on NHL betting because I could not figure out why my picks kept losing. My research was thorough — or so I thought. I was checking win-loss records, goal differentials, recent form tables, power-play percentages. All the numbers the average hockey fan would call “good stats.” And yet the teams I backed kept underperforming, while teams I faded kept winning.

The problem was not effort. It was that traditional stats measure results, not process. A team’s win-loss record tells you what happened. It does not tell you why, and it definitely does not tell you what will happen next. The NHL is the most variance-heavy of the four major North American sports — roughly 75% of games in the 2024-25 season were decided by a single goal or two once empty-net tallies are factored in. In a sport where margins are that thin, outcomes fluctuate wildly around underlying quality. Moneyline favourites won just 57.3% of games during the 2025-26 season, a figure that has been declining year on year. The league is getting tighter, and traditional stats cannot separate the signal from the noise.

Advanced metrics can. Expected goals, Corsi, Fenwick, PDO, and GSAx — these are not analytics buzzwords. They are tools that strip away the randomness and measure what a team is actually doing on the ice. In this guide I will break down each metric, explain how I use it in my pre-game research, and show you where to find the data for free. If you have been betting on hockey using goals-for, goals-against, and gut instinct, this is the upgrade that changes everything.

Expected Goals (xG): Measuring Shot Quality, Not Just Quantity

Imagine two shots on goal. One is a wrist shot from the blue line with traffic in front. The other is a one-timer from the slot off a cross-ice pass with the goaltender scrambling. Traditional stats count both as one shot on goal. Your eyes tell you they are not remotely equal. Expected goals makes that distinction mathematically.

An xG model assigns a probability to every shot based on factors like distance from the net, shot angle, shot type, whether it came off a rush or a cycle, and whether the shooter had time and space. A shot from the high slot on a 2-on-1 might carry an xG value of 0.35, meaning historically 35% of similar shots result in goals. A point shot through traffic might carry 0.03. When you sum up all the xG values for a team across a game, you get a number that represents how many goals they “should” have scored based on the quality of their chances. The model used for the 2022-23 season processed 114,734 shot events — shots, goals, and misses combined — and 8,474 actual goals, producing a league-wide conversion rate of approximately 7.4%.

For betting, the metric that matters most is xGF% — expected goals-for percentage. This is a team’s share of total expected goals when both teams are at even strength (5-on-5). An xGF% above 50 means the team is creating more high-quality chances than it allows. Elite teams consistently hold an xGF% between 52 and 53, and the very best push higher — the Carolina Hurricanes, for instance, have sustained stretches near 56 at 5-on-5, a mark that signals genuine dominance in shot quality.

Where this becomes actionable for betting is in the gap between xGF% and actual results. A team with an xGF% of 54 and a losing record is almost certainly due for positive regression. Their process is sound — they are generating better chances than they concede — but the puck has not bounced their way. The market prices teams on results, not process, which means these “unlucky” sides are frequently underpriced. Conversely, a team with an xGF% of 47 that is somehow winning games is riding unsustainable finishing or goaltending and will eventually come back to earth.

I run a simple screen every morning: sort all thirty-two teams by the gap between their xGF% rank and their standings rank. The teams at the top of that list — high xGF%, low standings position — are my primary candidates for moneyline value. The teams at the bottom are candidates to fade. For a detailed walkthrough of how xG models are built and where their blind spots lie, I have a dedicated piece that goes deeper than I can here.

Expected goals model measuring NHL shot quality from different zones

Corsi and Fenwick: Tracking Puck Possession Under Pressure

Before xG models became widely accessible, hockey analytics ran on a cruder but still powerful engine: shot-attempt metrics. Corsi counts every shot attempt a team generates and concedes at 5-on-5 — goals, shots on target, missed shots, and blocked shots. Fenwick does the same but excludes blocked shots, on the theory that a blocked shot tells you more about the defending team’s structure than the attacking team’s intent.

The concept is simple. If your team is attempting sixty shots per sixty minutes of 5-on-5 play and the opposition is attempting forty-five, you are controlling the puck. The Corsi-for percentage — CF% — expresses this as a ratio. A CF% above 50 means you are generating more shot attempts than you are conceding. Below 50 and you are being outplayed in terms of puck possession, regardless of what the scoreboard says.

Action Network’s editorial team captured the logic perfectly: “Play-driving statistics are an effective indicator in predicting a given team’s long-term results in hockey. Since the margins in the NHL are so tight, close plays and lucky bounces go a long way in deciding short-term results.” Corsi is a play-driving statistic. It tells you which team is doing the driving and which team is riding in the passenger seat. Over a twenty-game sample, CF% is far more predictive of future results than goal differential, because goals are subject to shooting percentage variance and goaltending hot streaks. Shot attempts are not.

For betting, I use Corsi as a first-pass filter. If a team’s CF% is above 52, they are generating sustained offensive pressure regardless of whether the puck is going in. If it is below 48, they are being hemmed in their own zone and surviving on goaltending or luck. When a sub-48 team is priced as a narrow favourite because they have been winning recently, that is a red flag — the underlying process does not support the results, and the correction is coming.

Fenwick is less commonly cited but useful in specific contexts. Because it excludes blocked shots, it tends to be a cleaner measure of offensive generation for teams that face opponents who block aggressively. In practical terms, the difference between Corsi and Fenwick rarely changes a betting decision. I default to Corsi because the data is more widely available and the sample sizes are larger, but if you have access to both, cross-referencing them adds a small layer of confidence to your assessment.

Corsi shot attempt tracking showing puck possession dominance

PDO: Spotting Teams Riding Luck Before the Market Does

PDO is the metric that makes people uncomfortable, because it measures luck — or at least the portion of a team’s results that is not sustainable. The formula is straightforward: add a team’s on-ice shooting percentage to its on-ice save percentage at 5-on-5. The league average PDO is always 100 (or 1.000, depending on the scale). Teams above 100 are benefiting from unusually high shooting, unusually high save percentages, or both. Teams below 100 are getting the short end.

The power of PDO for bettors lies in its tendency to regress to the mean. A team sitting at 103 in November is almost certainly going to drift back toward 100 as the season progresses. Their shooters will not keep converting at an elevated rate, or their goaltender will not keep stopping everything. Either the shooting cools or the saves dry up — usually both. The opposite holds for low-PDO teams: a side sitting at 97 is likely to see their results improve as the random noise evens out.

I track PDO alongside xGF% because the combination tells a complete story. A team with high xGF% and low PDO is the ideal betting target — they are creating quality chances, controlling possession, and losing anyway because the percentages are temporarily against them. That team is a buy. A team with low xGF% and high PDO is the opposite: poor process masked by hot shooting and lucky bouncing. That team is a sell, even if they are sitting near the top of the standings.

The timing of PDO regression matters for betting. Teams tend to correct most sharply between the twenty-game and forty-game marks of the season. Before twenty games, PDO is too noisy to draw conclusions. After forty, most extreme cases have already corrected. The sweet spot is identifying outlier-PDO teams around game twenty-five and betting on the correction before the market prices it in. Remember that moneyline favourites won only 57.3% of games in the 2025-26 season — and part of that figure reflects teams whose early-season results were inflated by unsustainable PDO numbers that bookmakers trusted longer than they should have.

PDO metric showing luck regression trends for NHL teams

GSAx: Evaluating Goaltenders Beyond Save Percentage

I spent my first five years of NHL betting treating all goaltenders with a save percentage above .915 as essentially interchangeable. That laziness cost me money. GSAx — Goals Saved Above Expected — fixed the blind spot by showing me what save percentage never could: which goaltenders are genuinely elite and which are simply playing behind good defences.

GSAx measures the difference between the goals a goaltender actually allowed and the goals they “should” have allowed based on the expected-goals value of the shots they faced. If a goaltender faced 1,500 shots worth a combined 130 expected goals and allowed only 115 actual goals, their GSAx is +15. That means they saved fifteen more goals than an average goaltender would have on the same workload. A negative GSAx means the goaltender is leaking goals relative to the quality of chances against.

The evolution of goaltending makes GSAx more important than ever. In the 2025-26 season, a save percentage of .912 ranked third in the entire league. A decade earlier, in 2014-15, that same number would have placed a goaltender thirtieth. Goaltending has improved so dramatically across the board that raw save percentage has lost most of its discriminating power. Two goalies posting .910 might look similar on paper, but their GSAx numbers could reveal a chasm — one is facing low-danger shots and barely keeping pace with expectations, while the other is stopping high-danger chances at a rate that genuinely suppresses scoring.

For betting, GSAx is most useful in three situations. First, when evaluating a matchup between a strong offensive team and a team whose recent results have been carried by elite goaltending. A positive-GSAx goaltender can suppress a high-xGF% offence in a way that aggregate stats do not predict. Second, when a goaltender is announced as the starter and their GSAx diverges significantly from their team’s overall defensive metrics, you know whether the lineup change helps or hurts. Third, when a goaltender’s GSAx is extremely high early in the season, there is a reasonable chance they will regress — nobody sustains a +20 GSAx pace over eighty-two games. That regression means their team’s results will soften, even if the skaters in front of them are performing the same way.

Goaltender GSAx analysis comparing save performance above expected

Building a Multi-Metric Dashboard for NHL Betting

No single metric tells the whole story, and chasing the “one stat to rule them all” is a trap I see new analytics-minded bettors fall into constantly. The edge comes from layering metrics — using each one to confirm or challenge what the others suggest, and only betting when multiple signals align.

My dashboard has four columns for each team in a given matchup. The first is xGF% over the last twenty games at 5-on-5. I want to see which team is generating higher-quality chances. The second is CF%, which tells me about puck possession and territorial control. The third is PDO over the same window, which flags whether either team’s results are inflated or deflated by luck. The fourth is the starting goaltender’s GSAx on the season.

A bet gets serious consideration when I see convergence. If Team A has an xGF% of 54, a CF% of 53, a PDO of 98, and a starting goaltender with a GSAx of +8, while Team B shows an xGF% of 48, a CF% of 47, a PDO of 103, and a netminder with a GSAx of -3, the picture is overwhelming. Team A is doing everything right and getting unlucky. Team B is doing everything wrong and getting away with it. If the bookmaker has Team B as the favourite — or even priced near even money — I have a strong value bet on Team A.

Convergence does not always happen. Many nights, the metrics are mixed — one team is better on xG but worse on Corsi, or both teams have neutral PDO figures. Those are the games I skip. The discipline to pass on ambiguous signals is worth more than any individual metric, because it keeps me from forcing bets on noise. Over a season of 1,312 regular-season games, there are enough clear signals to fill a profitable betting sheet without ever touching a game where the analytics are inconclusive.

Multi-metric NHL analytics dashboard combining xG Corsi and PDO

One practical note: always use 5-on-5 data when building your dashboard. Power-play and penalty-kill situations distort possession and scoring metrics in ways that make team-level comparisons unreliable. A team that plays shorthanded frequently will have a suppressed raw CF% even if they dominate at even strength. Filtering to 5-on-5 removes that distortion and gives you the clearest view of which team is actually the better hockey side.

Free and Paid Data Sources for UK Punters

When I started using advanced stats for hockey betting, the data was scattered across academic blogs and niche forums. Today the landscape is dramatically better, and most of what you need is free. The challenge is not access — it is knowing which sources to trust and how to navigate them efficiently from a UK time zone.

Natural Stat Trick is my primary free resource. It provides xG, Corsi, Fenwick, PDO, and individual player data at 5-on-5, filterable by game range, situation, and score state. I pull my twenty-game rolling averages from here every morning. The interface is functional rather than beautiful, but the data is comprehensive and updates within hours of game completion.

MoneyPuck offers a public xG model with team and player projections that are updated daily. Their win-probability charts are useful for cross-referencing my own estimates, and their expected-goals model weights shot location, type, and game state slightly differently from Natural Stat Trick, which gives me a second opinion on close calls. Evolving-Hockey provides more granular player-level analytics and is particularly strong on goaltender metrics including GSAx. Their free tier covers the essentials; a paid subscription unlocks historical data and customisable reports that are worth the cost if you are betting seriously.

For game-day information — confirmed goaltender starts, injury updates, and line combinations — I rely on Daily Faceoff. Their goalie confirmation page is the single most important pre-bet bookmark I have, and it typically updates by 4 p.m. UK time on game days. LeftWingLock serves a similar function with additional information on starting lineups and recent transactions.

The one thing none of these free sources provide is integrated odds data. For that, I manually check two or three UK-licensed bookmakers and log the prices into my spreadsheet alongside the analytics. It adds a few minutes to the process but ensures I am always comparing my probability estimates against the actual market rather than a remembered price from three hours ago.

Laptop displaying free NHL advanced stats data sources

When Numbers and Instinct Disagree

There will be nights when every metric on your dashboard says one thing and your gut says the opposite. Maybe you have watched a team play and something feels off despite strong underlying numbers, or maybe a low-xGF% side just looks dangerous when you catch their games. I have been in that spot dozens of times, and my rule is simple: trust the numbers for the bet, trust your eyes for the research. If watching a game reveals something the data might be missing — a coaching change that has not yet filtered into the twenty-game sample, a key player clearly hobbled but not on the injury report — use that observation to dig deeper into the data, not to override it. Over nine seasons, the times I abandoned my analytics to follow a hunch have been my most expensive lessons.

Which single advanced stat matters most for NHL betting?

Expected goals-for percentage at 5-on-5 is the most predictive single metric for future team results. It measures shot quality on both sides of the puck and correlates strongly with long-term win rates. If you only have time for one number per team, xGF% is the one to check.

Can advanced stats predict NHL playoff outcomes?

Advanced stats predict playoff series outcomes better than regular-season standings or goal differential, but the sample sizes in a best-of-seven format introduce significant variance. xGF% and GSAx are particularly useful for identifying which team has a structural advantage, though individual goaltending performances can override even large analytical edges in short series.

Where can I find free xG and Corsi data for NHL teams?

Natural Stat Trick provides comprehensive free data for xG, Corsi, Fenwick, and PDO at 5-on-5 with customisable date ranges. MoneyPuck offers an alternative xG model with daily updates. Both are accessible from the UK without any paywall for their core features.

How often should I update my analytics before placing a bet?

I refresh my twenty-game rolling averages every morning during the season. A full dashboard rebuild — rechecking xGF%, CF%, PDO, and GSAx for all thirty-two teams — takes about fifteen minutes with practice. Stale data is worse than no data, so daily updates are essential for anyone placing bets more than once a week.

Article

Puck Line Betting Explained

What Puck Line Means and Why It Is Always 1.5 Goals I remember my first NHL bet as a UK punter — a straight moneyline on the Bruins at 1.45.…

Content created by the IceSharp team