Vancouver Canucks
Kodo projects the Vancouver Canucks for 32-42-10 (74 pts), carried by 14th-ranked power play. In a banger league, the fantasy value runs through Filip Hronek and Elias Pettersson on PP1. 2 core skaters project to rise and 5 to slip. Kevin Lankinen is the projected starter.
Your categories · using the preset above
Contents · 12 sections
How these projections are made
Goals for, goals against and points percentage come from the roster: summed player projections over the real 26-27 schedule, last season's expected goals against regressed toward the league and adjusted for projected goaltending, and a game-by-game simulation of that schedule.
The special teams are projected from how much each number actually carries over year to year, measured across 298 team-season pairs going back to 2010-11. The power play uses one prior season shrunk 0.36; the penalty kill uses three, weighted .5/.3/.2 and shrunk 0.38. Special teams barely persist, so a league-worst penalty kill is mostly bad luck and comes most of the way back, while the faceoff dot is a repeatable team skill. How far a club moves depends on how far from the mean it started: Vancouver sits near league average on both the power play and the faceoff dot and barely shifts, while Edmonton's 30.6% power play comes back to the middle and this penalty kill, worst in the league, is the biggest riser of all 32.
The penalty kill averages three seasons because one measures it so badly. Split a single season's spread into ability and sampling noise — a kill rate is a binomial over about 250 opportunities, so the noise is known rather than guessed — and only 33% of the gap between clubs is real. Divide the year-over-year correlation by that and the ability underneath comes out near 1.0: penalty killing is almost perfectly persistent and merely hard to see in one season. The cure for a noisy measurement is more of it, and three seasons beat one by 4.3% out of sample. Because averaging reorders clubs, that row's rank is a real forecast; the rows marked = are single-season regressions, which compress the values but keep them in order, so their rank is last season's by construction and only the value is a prediction.
A roster-aware faceoff model was built and rejected on the evidence. Draw counts are not stored, but they can be recovered exactly from the per-game percentages, and with real draws a club's number reconstructs from its own centres. It still does not predict better: given a club's first half to learn from and even handed the second half's draw distribution, it scored 2.24 against the plain regression's 2.26 across 32 clubs, and the best blend of the two puts almost no weight on it. A team's faceoff percentage already carries who takes its draws. Expected goals has no team projection at all, so that row shows last season alone.
Why the shape matters more than the total
Read it against the roster movement section. A club that faded and then lost its best defenceman is not going to bounce; one that faded while carrying injuries and got everybody back is a different case entirely.
Quarters are equal shares of the games actually played, so the windows differ slightly by club depending on scheduling.
Why these three and not a schedule score
Ranks are against all 32 clubs, and the whole thing is read off the published slate — no projection is involved.
Forward lines
Defence pairs
Special teams
Scratches & depth
The stakes. Quinn Hughes played his last game as a Canuck on 2025-12-11, and the quarterback spot on the top unit has been open since. Kodo prices the promotion at 10.8 points, on a gap of 1.40 measured power-play minutes per game. PP1 skaters averaged 3.15 last season (n=158) against 1.75 for PP2 (n=157). With Vancouver projected last in the league in points percentage at 0.35 and 30th in goals for at 2.56, the power play (21.8%, 14th of 32) is the most valuable real estate on this roster.
What IPP, focal and ixG mean
Focal is the older, cruder version — his share of the team's power-play points over his share of its minutes. It is team-relative, so it moves when a teammate is injured; IPP does not. ixG is the expected goals from his own shots on the man advantage. Minutes are measured, not modelled.
What actually moves these numbers
But it is mostly the minutes, not the man. Shorthanded time correlates +0.52 with blocks per 60 across players and only +0.14 within the same player year to year, which says coaches pick shot-blockers for the kill more than the kill turns anyone into one. A player promoted onto PK1 gains blocks because he is on the ice for more shots, not because he changed — so price the ice time, not a breakout.
Hits run opposite to ice time. Total minutes correlate −0.57 with hits per 60, and −0.60 among forwards: the fourth line hits, the first line does not. So a rate beats a total here more than in any other category, which is what the /60 columns are for — a checker on eleven minutes at 12 hits per 60 is worth more than a first-liner at 5 on nineteen, and their season totals can look identical.
Power-play time predicts the absence of all of it — −0.43 with hits per 60, −0.47 with blocks, −0.26 with penalty minutes. The men who run a power play are not the men who supply a banger roster, which is why the two sections of this page rarely name anybody twice.
Faceoff wins are a volume category. They track draws taken far more than win rate, so the man to want is the one taking the most — normally the first-line centre and whoever takes defensive-zone draws on the kill.
Measured on 2022-23 through 2025-26, skaters with 40+ games and 200+ minutes at both ends of each pair.
Pending free agents · this summer
| Brendan GallagherR | UFA | $6.50M | 23 pts |
|---|---|---|---|
| Filip ChytilC | UFA | $4.44M | 13 pts |
| Drew O'ConnorL | UFA | $2.50M | 24 pts |
| Luke SchennD | UFA | $2.25M | 2 pts |
| Paul CotterL | UFA | $2.15M | 15 pts |
| Zeev BuiumD | RFA | $0.97M | 31 pts |
| Jonathan LekkerimäkiR | RFA | $0.92M | 19 pts |
| Kirill KudryavtsevD | RFA | $0.90M | 3 pts |
| Liam OhgrenL | RFA | $0.89M | 18 pts |
| Aatu RätyC | RFA | $0.81M | 16 pts |
| Nikita TolopiloG | UFA | $0.81M | |
| Caleb MalhotraC | UFA | — | 25 pts |
Free the summer after
| Jamie OleksiakD | $5.00M | 9 pts |
|---|---|---|
| Marco RossiC | $5.00M | 54 pts |
| Linus KarlssonC | $2.25M | 30 pts |
| Victor ManciniD | $1.00M | 2 pts |
| Max SassonC | $1.00M | 14 pts |
| Tom WillanderD | $0.95M | 23 pts |
Biggest cap hits
| Elias PetterssonC | $11.60M | 5y left · NMC |
|---|---|---|
| Thatcher DemkoG | $8.50M | 2y left |
| Brock BoeserR | $7.25M | 5y left · NMC |
| Filip HronekD | $7.25M | 5y left · NMC |
| Brendan GallagherR | $6.50M | final yr · M-NTC, NMC |
| Jake DeBruskL | $5.50M | 4y left · NMC |
| Jamie OleksiakD | $5.00M | 1y left · M-NTC |
| Marco RossiC | $5.00M | 1y left |
Cap hits from CapWages for the 25 men on file. A dash is a figure we do not have, usually a restricted free agent whose entry-level deal has lapsed, and those are left out of the committed total rather than counted as nothing.
Every skater
the reference table · Overall is value as a z-score against the league, so +1.00 is a standard deviation above average‹ 12 / 12| Player | Role | Overall | GP | G | A | P / if | PPP | SHP | SOG | HIT | BLK | PIM | +/- | FOW | H+B | S+H+B | Trajectory | Signals |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Elias Pettersson (C) | L1·PP1 | +0.99 | 77 | 20 | 41 | 61.3 | 24 | 1 | 141 | 78 | 100 | 20 | -17 | 608 | 178 | 319 | decliningPP1 | |
| Paul Cotter | L3 | +0.23 | 77 | 9 | 6 | 14.7 | 1 | 0 | 70 | 204 | 26 | 31 | -14 | 56 | 229 | 299 | decliningbounce-back | |
| Jake DeBrusk | L1·PP1 | +0.19 | 78 | 25 | 19 | 43.5 | 20 | 0 | 185 | 74 | 36 | 14 | -18 | 12 | 111 | 295 | bounce-backice time ↑PP1 | |
| Marco Rossi | L2·PP1 | -0.07 | 75 | 19 | 34 | 53.7 | 19 | 0 | 116 | 62 | 41 | 23 | -14 | 411 | 103 | 219 | ascendingPP1 | |
| Brock Boeser | L2·PP1 | -0.11 | 78 | 24 | 28 | 52.3 | 20 | 1 | 160 | 61 | 30 | 12 | -31 | 44 | 91 | 251 | decliningbounce-backPP1 | |
| Drew O'Connor | L2 | -0.37 | 75 | 13 | 11 | 23.9 | 1 | 2 | 116 | 71 | 33 | 37 | -7 | 45 | 104 | 220 | ||
| Brendan Gallagher | L3·PP2 | -0.45 | 70 | 10 | 13 | 23 | 4 | 0 | 107 | 81 | 23 | 37 | -3 | 5 | 104 | 211 | decliningbounce-back | |
| Aatu Räty | L4 | -0.45 | 64 | 7 | 9 | 15.5 | 0 | 0 | 68 | 157 | 18 | 24 | -2 | 442 | 175 | 242 | bounce-back | |
| Linus Karlsson | L1·PP2 | -0.50 | 70 | 13 | 17 | 29.5 | 4 | 0 | 99 | 75 | 23 | 35 | -10 | 13 | 98 | 197 | ascendingbounce-backice time ↑ | |
| Caleb Malhotra | -1.05 | 49 | 9 | 16 | 25/36 | 3 | 0 | 41 | 76 | 27 | 22 | 0 | 0 | 103 | 144 | — | ||
| Liam Ohgren | L4 | -1.13 | 64 | 8 | 10 | 17.9 | 0 | 1 | 95 | 65 | 36 | 8 | -8 | 8 | 101 | 196 | ||
| Jonathan Lekkerimäki | -1.18 | 42 | 12 | 7 | 19/29 | 2 | 0 | 104 | 58 | 23 | 10 | 0 | 0 | 81 | 185 | — | ||
| Max Sasson | L4 | -1.32 | 65 | 8 | 6 | 13.8 | 1 | 0 | 64 | 33 | 34 | 24 | -5 | 119 | 67 | 131 | ||
| Filip Chytil | L3·PP2 | -1.77 | 40 | 8 | 6 | 13.1/27 | 2 | 0 | 88 | 15 | 13 | 16 | -7 | 184 | 27 | 115 | ||
| Braeden Cootes | -1.86 | 33 | 6 | 7 | 13/27 | 2 | 0 | 63 | 41 | 18 | 2 | 0 | 0 | 59 | 122 | — | ||
| Adam Novotny | -2.31 | 18 | 3 | 3 | 6/21 | 1 | 0 | 35 | 25 | 10 | 4 | 0 | 0 | 35 | 70 | — |
| Player | Role | Overall | GP | G | A | P / if | PPP | SHP | SOG | HIT | BLK | PIM | +/- | FOW | H+B | S+H+B | Trajectory | Signals |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Filip Hronek | D1·PP1 | +1.06 | 77 | 7 | 38 | 45 | 17 | 1 | 120 | 120 | 93 | 36 | -10 | 1 | 213 | 332 | ice time ↑PP1 | |
| Jamie Oleksiak | D3 | +0.39 | 77 | 3 | 7 | 9.2 | 0 | 0 | 69 | 98 | 118 | 35 | +5 | 0 | 216 | 284 | ||
| Elias Pettersson (D) | D1 | +0.04 | 67 | 2 | 4 | 5.5 | 0 | 0 | 53 | 124 | 79 | 38 | -7 | 0 | 203 | 255 | ice time ↑ | |
| Luke Schenn | -0.01 | 49 | 0 | 1 | 1.6 | 0 | 0 | 39 | 161 | 59 | 37 | -6 | 0 | 219 | 259 | |||
| Zeev Buium | D2·PP2 | -0.14 | 79 | 7 | 25 | 31.3 | 14 | 0 | 91 | 32 | 70 | 43 | -13 | 0 | 102 | 192 | — | |
| Tom Willander | D3·PP2 | -0.43 | 71 | 5 | 18 | 22.5 | 4 | 0 | 71 | 38 | 84 | 31 | -9 | 0 | 122 | 192 | — | |
| Victor Mancini | D2 | -1.57 | 39 | 1 | 2 | 2.4 | 0 | 0 | 30 | 46 | 48 | 15 | -5 | 0 | 94 | 124 | decliningice time ↑ | |
| Kirill Kudryavtsev | -2.57 | 12 | 0 | 3 | 3/13 | 0 | 0 | 9 | 12 | 19 | 1 | 0 | 0 | 31 | 40 | — |
| Goalie | GS | W | L | OTL | SV% | GAA | SV | SA | GA | SHO | GSAx | GSAx/GS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kevin Lankinen | 45 | 15 | 25 | 5 | 0.893 | 3.26 | 1182 | 1325 | 143 | 1.1 | -60.1 | -1.397 |
| Thatcher Demko | 26 | 10 | 12 | 3 | 0.902 | 2.68 | 622 | 690 | 68 | 1.4 | -13.1 | -0.653 |
| Nikita Tolopilo | 13 | 5 | 7 | 2 | 0.900 | 3.23 | 374 | 415 | 41 | 0.0 | -23.4 | -1.302 |
Projected record and projected ice time are model estimates; ranks, lines, projections and trend signals trace to real data.