xJawn NHL expected goals

← League

Ottawa Senators

Atlantic · 44-27-11, 99 pts

82 GP · 5th Atlantic
2025-26 · regular season
Adjusts with rink filters
shots for◀ 5v5 offense
shots against5v5 defense ▶
How to read this map

One rink, both ends: what OTT generates on the left, what it concedes on the right. Every attempt is a Gaussian bump of height = its model xG, summed per game. The controls switch the surface (xG heatmapvs league, the league baseline at the same strength) and the markers: × goal · on net · missed · small blocked.

The page opens at 5v5; empty-net attempts are excluded throughout, and the strength buckets segregate them anyway — which is why the empty-net control greys out unless the view can actually contain one. Everything inside the outlined box moves with the filters; everything below it does not.

Observed production

5v5 · regular season
for against
axis spans ±31% of league average · centre = average · right = more
Goalsteam
179 73rd pctl163 52nd pctl
Shotsteam
1,798 61st pctl1,527 6th pctl
Attemptsteam
3,798 59th pctl3,386 9th pctl
xGteam
175.7 72nd pctl142.5 3rd pctl
xGF%share of team xG
55.2%94th pctl
0% 50% = even split · gray = league middle 50% / 90% 100%

Percentiles and the gray spread rank against all 32 teams recomputed under the current filter — every bar and band here moves together, so a slice never ranks against a different slice's league.

Rolling xGF%

5v5 · regular season
Per-game chance share, smoothed. drag the slider to set the window

Model estimates

🔒 full season · 5v5
Season-long ratings — the filters above don't apply here. goals vs league average · bar grows from average
Shootingour skaters · on our shots, vs this season's average
-7.96th pctl
3,798 attempts · 100% by rated shooters
Savingour goalies · on shots faced, vs this season's average
Leevi Meriläinen -3.87 G · 745 shotsLinus Ullmark +2.15 G · 2,006 shotsJames Reimer -0.57 G · 557 shotsMads Sogaard -0.34 G · 61 shots
-2.734th pctl
Linus Ullmark 2,006 · Leevi Meriläinen 745 · James Reimer 557 · Mads Sogaard 61 · Hunter Shepard 17 shots faced
Shooting againsttheir skaters · on shots faced
+0.984th pctl
sign-flipped — positive means they shot worse than average
Saving againsttheir goalies · on our shots
-0.247th pctl
negative means their goalies stopped more than average
−15league average+15

These four are shown within-season centered — each against this season's own league average, not the fit's career-pooled one — because shooting talent leaguewide is running well above its historical zero point this season; without that adjustment nearly every bar would read "above average." The against columns still barely vary between teams, since every team faces roughly average opposition, so for those two the rank still matters more than the level. They are shown because they genuinely move adjusted xGF% below (computed from the uncentered ratings — see that section's own note), and folding them into the two own-team rows would have hidden half of that.

Adjusted xGF%skill-weighted chance share
saving against -1.17 ppshooting against -1.07 ppsaving +0.74 pp
53.7%88th pctl · -1.48 pp
0% 50% = even split · gray = league middle 50% / 90% 100%
How it's built, and what it isn't
unadjusted 55.2% +shooting +0.02+saving against -1.17+shooting against -1.07+saving +0.74 = adjusted 53.7%

How it's builtEvery 5v5 shot is re-scored with σ(logit(xG) + shooter − goalie) and both ends re-summed. Both skill terms land on every shot — one team's for side, the other's against side — so the league share still averages 50%. The two moves are taken in that order and sum exactly to the total; shares don't decompose additively, so a side-by-side split would not close.

What it isn'tA descriptive re-score of shots already taken, not a forecast. Against future goal share the combined adjustment is indistinguishable from plain xGF% (+0.019 r, p = 0.192); only the shooting half shows a small honest lift (+0.026, p = 0.020), and the saving half contributes nothing forward-looking. The premise underneath is itself unestablished — xGF% over GF% is +0.040, p = 0.246. Read it as what this roster's skill was worth on these shots — nothing more.

The four segments are the four rows above, in order. They are four and not two because η puts both rating terms on every shot: the shots we took carry our shooters and the opposing goalie, and the shots we faced carry their shooters and ours. Over a full season the two “against” terms would sit near league average and contribute nothing — but the ratings are not centred at zero this season, so they do move the number, and hiding them inside a single “shots faced” figure would have left half the adjustment unexplained.

Season context

descriptive · not modeled
How the season was played, not how well. Not a modeled component: each is its own metric (a rate, a TOI share, or opponents' net xG-RAPM), shown with a league percentile only where one exists, never added together. Not a grade.
Ice timeshare by strength
5v5 79%PPPK
+0.5PP − PK min/60
Score stateTOI by game state
trail 27%tied 36%lead 37%
leads a lot
Goalie workloadstarter's share of shots
59%of 5v5 shots against
Schedule strengthopponents' net xG-RAPM
not available in the pipeline
0league average100 pctl
Full table · all numbers
FamilyStatValue (current slice)
Observed ◆ filtered Goals for / against 179 / 163
Observed ◆ filtered xG for / against 175.7 / 142.5
Observed ◆ filtered Shots for / against 1,798 / 1,527
Observed ◆ filtered Attempts for / against 3,798 / 3,386
Modeled 🔒 5v5 Shooting — our skaters · on our shots, vs this season's average -7.9 G 6th pctl
Modeled 🔒 5v5 Saving — our goalies · on shots faced, vs this season's average -2.7 G 34th pctl
Modeled 🔒 5v5 Shooting against — their skaters · on shots faced +0.9 G 84th pctl
Modeled 🔒 5v5 Saving against — their goalies · on our shots -0.2 G 47th pctl
Modeled 🔒 5v5Unadjusted xGF%55.2%
Modeled 🔒 5v5↳ shooting shift+0.02 pp
Modeled 🔒 5v5↳ saving against shift-1.17 pp
Modeled 🔒 5v5↳ shooting against shift-1.07 pp
Modeled 🔒 5v5↳ saving shift+0.74 pp
Modeled 🔒 5v5Adjusted xGF% 53.7% 88th pctl
ContextIce time — share by strength+0.5
ContextScore state — TOI by game stateleads a lot
ContextGoalie workload — starter's share of shots59%
ContextSchedule strength — opponents' net xG-RAPM

Observed values reflect the active rink filters; modeled values are fixed at their full-season 5v5 fit.

Modeled ratings come from joint__baseline_xg__f3e3111e (as of 2026-06-14) — a separate surface from the box-score xG model badged in the footer.