Edgehalla

Methodology

Hockey stat glossary

Every stat used on Edgehalla, in a sentence or two. "For" means the player's team, "against" means the opponent, and on-ice stats count events while the player was on the ice. Where a table header on the site has a dotted underline, hover or tab to it to see the same definition.

Shot attempts

Corsi forCF#

Shot attempts by a team (or with a player on the ice): goals, shots on goal, missed shots and blocked shots.

Excludes the shootout and penalty shots. An attempt blocked by the shooter's own teammate still counts for the shooting team (the NHL's SAT credits it to the other team).

CF = goals + shots on goal + missed shots + blocked shots

Corsi againstCA#

Shot attempts by the opponent while the team or player is on the ice.

Corsi for percentageCF%#

Share of all shot attempts that went in your favour.

CF% = CF / (CF + CA)

Fenwick forFF#

Unblocked shot attempts: goals, shots on goal and missed shots. xG is summed over these.

FF = goals + shots on goal + missed shots

Fenwick for percentageFF%#

Share of unblocked attempts that went in your favour.

FF% = FF / (FF + FA)

Shots forSF#

Shots on goal plus goals.

Individual shot attemptsiCF#

A player's own shot attempts, including those that were blocked.

Shot quality and chances

Expected goalsxG#

The probability that an unblocked shot becomes a goal, from our model of distance, angle, shot type and the play before it. Summed over shots.

Blocked shots get no xG because their recorded location is where the block happened. Penalty shots use a constant rate and the shootout is excluded.

Full method: Expected goals (xG) →

Expected goals forxGF#

Total xG of a team's unblocked attempts, or of its attempts while a player was on the ice.

xGF = Σ xG over unblocked attempts for

Full method: Expected goals (xG) →

Expected goals againstxGA#

Total xG of the opponent's unblocked attempts while the team or player was on the ice.

Full method: Expected goals (xG) →

Expected goals for percentagexGF%#

Share of expected goals in your favour. On-ice 5v5 xGF% has a split-half r of about 0.29 at 7 xG per half.

xGF% = xGF / (xGF + xGA)

Full method: Expected goals (xG) →

Individual expected goalsixG#

Sum of xG on a player's own unblocked attempts. Always raw xG, never sequence-adjusted.

Full method: Expected goals (xG) →

Sequence xGsxG#

xG adjusted for flurries: a rebound only counts for the chance that the earlier shots in the same play did not already score.

sxG_i = xG_i × Π (1 − xG_j) over earlier same-team shots in the play

Full method: Sequence xG (sxG) →

Scoring chancesSC#

Attempts worth 2 or more points under the zone method: 1–3 points for location, +1 for a rush or rebound, −1 if blocked.

Full method: Scoring chances →

High-danger chances forHDCF#

Scoring chances worth 3 or more points: most attempts from the net-front slot, or rush and rebound attempts from the wider slot.

Full method: Scoring chances →

Medium-danger chances forMDCF#

Scoring chances worth exactly 2 points.

Full method: Scoring chances →

Transition attemptTRN#

An attempt within 10 s of a turnover, recovery, hit-forced recovery or faceoff win in the neutral or defensive zone, in the same play.

Replaces NST's rush rule, which flagged only 1.7% of 5v5 attempts in our 2025-26 sample. The transition definition flags 8.1%.

Full method: Transition attempts →

Rush attempt (NST rule)#

NST's definition: an attempt within 4 s of any event in the shooting team's neutral or defensive zone. Kept as a compatibility column.

Full method: Transition attempts →

Rebound attempt#

An attempt within 3 s of an earlier same-team attempt, with no stoppage in between.

Full method: Scoring chances →

Scramble#

Three or more same-team attempts within 6 s. About 1.9 per game; 10.4% end in a goal.

Full method: Sequence xG (sxG) →

Shot dietixG/att#

Average xG per individual unblocked attempt: how dangerous a player's typical shot is. One of the most stable traits we measure (split-half r 0.68).

Shot diet = ixG / iFF

Full method: Rebound Control and Shot Diet →

Percentages, luck and relative stats

PDO#

On-ice shooting percentage plus on-ice save percentage. League average is 1.000 (or 100); far from it usually means luck that will fade.

PDO = on-ice SH% + on-ice SV%

Shooting percentageSH%#

Goals divided by shots on goal. On-ice SH% uses every shot while the player was on the ice.

Relative (on/off)Rel#

A stat with the player on the ice minus the same stat for his team with him off the ice, in the same games and strength state.

Rel xGF% = xGF% on − xGF% off

Goals above expectedG−xG#

Goals minus expected goals. For a shooter, a rough read on finishing; over small samples, mostly luck.

G − ixG

Score and venue adjustedSVA#

Team counts reweighted for score state and home ice (McCurdy method, our own coefficients), because trailing teams shoot more. Individual stats are never adjusted.

Individual points percentageIPP#

Share of on-ice goals for which the player had a point.

IPP = points / on-ice goals for

Ice time and deployment

Time on iceTOI#

Ice time from the NHL shift charts, split by strength state (5v5, PP, PK and others).

Full method: Data sources →

TOI shareTOI%#

A player's ice time as a share of his team's time at the same strength in the same games.

TOI% = player TOI / team TOI (same strength)

Power-play sharePP TOI%#

A player's power-play time as a share of his team's power-play time in the same games. The single most useful fantasy usage number.

PP share = player PP TOI / team PP TOI

Full method: Line detection →

Power-play unitPP1#

PP1 is the group of skaters with the most power-play time together in a game; PP2 is the next. Detected from shifts.

Full method: Line detection →

Quality of teammatesQoT#

Ice-time-weighted average season xGF% of a player's teammates, shrunk toward average. Meaningful.

Full method: Gas Tank and Schedule Edge →

Quality of competitionQoC#

The same average over opponents. It barely varies between players (0.485–0.514 in our sample), so read it as context only.

Full method: Gas Tank and Schedule Edge →

Offensive zone start percentageOZS%#

Of a player's shifts that start on an offensive- or defensive-zone faceoff, the share that start in the offensive zone.

OZS% = OZ starts / (OZ starts + DZ starts)

Per 60/60#

A count scaled to 60 minutes of ice time at the same strength, so players with different ice time compare fairly.

X/60 = X × 3600 / TOI seconds

Shift age#

Seconds since a player's current shift began. Penalties are 3.5 times as common past 90 s as the exposure would predict.

Full method: Gas Tank and Schedule Edge →

Edgehalla signature stats

Draw EquityDrEq#

Faceoff results in goals: each win or loss scored against a coin flip and weighted by the zone. 100 extra offensive- or defensive-zone wins are worth about 1.9 goals.

Σ (win − 0.5) × V(zone)

Full method: Draw Equity →

Faceoff percentageFO%#

Faceoffs won divided by faceoffs taken.

FO% = FOW / (FOW + FOL)

Full method: Draw Equity →

Turnover LedgerTO±#

Takeaways credited and giveaways charged at the league xG value of the zone where possession changed, per 60.

Full method: Turnover Ledger →

Pressure IndexPI#

A decayed running score of each team's shots, zone wins and forecheck events, from −1 to +1. Descriptive only: it does not predict the next goal.

PI = (P_home − P_away) / (P_home + P_away + 0.05)

Full method: Pressure Index →

Gas Tank#

Fatigue measured through the icing rule: after its own icing a team wins 43.9% of the next defensive-zone draws and allows 29% more xG in the next 20 s.

Full method: Gas Tank and Schedule Edge →

Schedule Edge#

Rest, back-to-backs and travel. A team on the second night of a back-to-back against a rested opponent won 38–44% of games from 2021-22 to 2025-26.

Full method: Gas Tank and Schedule Edge →

Penalty ValuePenV#

Minor penalties drawn minus taken, times the net xG of a power play (about 0.20 per two-minute minor).

(minors drawn − minors taken) × 0.20

Full method: Penalty Value →

Play DNA#

Our summary glyph of how a goal was built (possessions, passes, entry, shot), drawn from derived tracking numbers.

Full method: Goal anatomy →

Goalies

Goals saved above expectedGSAx#

Expected goals against minus goals allowed, excluding empty-net goals, penalty shots and the shootout. Positive is good.

GSAx = Σ xGA − GA

Full method: Expected goals (xG) →

Save percentageSV%#

Saves divided by shots on goal faced.

High-danger save percentageHDSV%#

Save percentage on high-danger shots on goal only.

HDSV% = 1 − HDGA / HDSA

Full method: Scoring chances →

Rebound Control#

Rebounds allowed per save: an opponent attempt within 3 s of a save. League rate 12.4%; split-half r 0.39–0.48.

Full method: Rebound Control and Shot Diet →