Regression board
Luck Meter: who is running hot, and who is due
Every NHL skater's goals, points and on-ice results compared with what his shots, ice time and history say to expect. A positive meter means the results are ahead of the process (sell high); a negative meter means they are behind it (buy low).
2025-26 regular season, 828 skaters · updated Oct 2, 2026 · model xG in 100% of player-games (the rest use shot volume × league shooting %) · talent baselines from 2020-21, 2021-22, 2022-23, 2023-24, 2024-25 plus 2025-26.
Sell high: running hottest
Shooting 21.7% vs 14.1% expected (+11.6 G) · Team shoots 13.4% with him on at 5v5 vs 9.5% expected
40 points vs 23.6 expected (+16.4) · Team shoots 12.0% with him on at 5v5 vs 8.7% expected
Shooting 10.8% vs 5.7% expected (+7.6 G) · 40 points vs 27.9 expected (+12.1)
Shooting 22.9% vs 16.2% expected (+8.8 G) · Team shoots 13.0% with him on at 5v5 vs 9.7% expected
Team shoots 12.7% with him on at 5v5 vs 10.0% expected · 115 points vs 94.9 expected (+20.1)
Buy low: running coldest
Shooting 0.0% vs 9.2% expected (−3.9 G) · Team shoots 4.4% with him on at 5v5 vs 8.3% expected
Shooting 6.1% vs 12.4% expected (−7.1 G) · 22 points vs 34.8 expected (−12.8)
Shooting 3.8% vs 10.8% expected (−3.6 G) · 5 points vs 13.5 expected (−8.5)
Shooting 6.6% vs 12.1% expected (−5.0 G) · Points on 39.5% of on-ice goals vs 61.6% expected
Team shoots 4.7% with him on at 5v5 vs 8.7% expected · Shooting 5.6% vs 12.6% expected (−2.5 G)
Anthony Mantha: points vs expected, game by game
64 points against 49.0 expected (+15.0). The band is ±1σ of the expectation.
- Actual points
- Expected
- ±1σ
- Above expected
- Below expected
The board
| Player | Team | GP | P | P − xP | Trend | Meter | L20 | Rost % | Tag | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mattias SamuelssonD | BUF | 78 | 41 | +14.6 | 11.9% (7.0%) | 12.0% | 1036 | 39% | +88 | 2 | 78%▲8.5 | Hold* | |
| Anthony ManthaR | PIT | 81 | 64 | +15.0 | 21.7% (14.1%) | 13.4% | 1032 | 67% | +85 | 86 | 53%▲16 | Sell high | |
| Kaapo KakkoR | SEA | 65 | 40 | +16.4 | 16.7% (13.7%) | 12.0% | 1055 | 73% | +85 | 92 | 17%▲16 | Sell high | |
| Alex NewhookC | MTL | 42 | 25 | +7.8 | 21.3% (13.8%) | 17.4% | 1078 | 66% | +84 | 51 | 26%▲23 | Hold* | |
| William NylanderR | TOR | 65 | 79 | +21.6 | 19.2% (14.7%) | 13.6% | 1017 | 78% | +83 | 29 | 99%▼0.8 | Hold* | |
| Viktor ArvidssonL | BOS | 69 | 54 | +14.0 | 14.3% (13.0%) | 14.0% | 1065 | 71% | +82 | 84 | 32%▲23 | Hold* | |
| Justin FaulkD | DET | 78 | 40 | +12.1 | 10.8% (5.7%) | 9.3% | 996 | 50% | +78 | 59 | 55%▼22 | Sell high | |
| Pavel ZachaC | BOS | 78 | 65 | +12.3 | 22.9% (16.2%) | 13.0% | 1036 | 62% | +78 | 95 | 77%▲12 | Sell high | |
| Alex TuchR | BUF | 79 | 66 | +11.5 | 16.9% (12.7%) | 12.5% | 1044 | 67% | +77 | 59 | 94%▼5 | Hold* | |
| Zach WerenskiD | CBJ | 75 | 81 | +21.4 | 8.5% (6.8%) | 10.0% | 1006 | 64% | +77 | -16 | 100%▲0.5 | Hold* | |
| Martin NecasC | COL | 78 | 100 | +14.3 | 18.4% (15.4%) | 12.4% | 1054 | 67% | +77 | 4 | 100%▲1.7 | Hold* | |
| Macklin CelebriniC | SJS | 82 | 115 | +20.1 | 15.7% (13.6%) | 12.7% | 1036 | 85% | +77 | 37 | 100%▲1 | Sell high | |
| Mark ScheifeleC | WPG | 82 | 103 | +22.4 | 20.6% (18.7%) | 13.0% | 1022 | 77% | +76 | 19 | 100% | Sell high | |
| Ben HuttonD | VGK | 55 | 15 | +4.6 | 8.5% (3.4%) | 11.7% | 1000 | 39% | +76 | -29 | — | Hold* | |
| Jakob ChychrunD | WSH | 80 | 60 | +6.6 | 11.8% (9.6%) | 11.9% | 1049 | 50% | +76 | 44 | 99% | Sell high | |
| Ryker EvansD | SEA | 67 | 17 | +1.3 | 17.4% (5.3%) | 11.7% | 1033 | 29% | +74 | 21 | 14%▲13 | Hold* | |
| Josh MorrisseyD | WPG | 77 | 55 | +10.9 | 9.6% (6.2%) | 11.5% | 1026 | 47% | +73 | 3 | 99%▲3.2 | Sell high | |
| Marcus JohanssonL | MIN | 75 | 49 | +15.8 | 14.0% (13.4%) | 11.2% | 1035 | 65% | +71 | 23 | 0.8% | Hold* | |
| Adrian KempeL | LAK | 81 | 73 | +15.2 | 15.9% (13.5%) | 10.5% | 1027 | 74% | +71 | 81 | 97% | Sell high | |
| Darren RaddyshD | TBL | 73 | 70 | +11.2 | 10.4% (7.7%) | 11.1% | 1017 | 54% | +70 | 19 | 100%▲3.7 | Hold* | |
| Charlie McAvoyD | BOS | 69 | 61 | +16.3 | 9.9% (8.8%) | 12.4% | 1026 | 49% | +70 | 57 | 96%▲5.9 | Sell high | |
| Ryan McDonaghD | TBL | 48 | 21 | +4.8 | 15.4% (6.5%) | 11.2% | 1019 | 47% | +69 | 24 | 7.3%▲6.8 | Hold* | |
| Ryan SheaD | PIT | 80 | 35 | +9.2 | 8.3% (7.3%) | 13.2% | 1042 | 39% | +69 | 78 | 15%▲9.6 | Hold* | |
| Rasmus AnderssonD | VGK | 81 | 47 | +12.4 | 9.6% (6.7%) | 9.5% | 995 | 46% | +68 | 46 | 94%▼3.9 | Hold* | |
| Matt BoldyL | MIN | 76 | 85 | +11.1 | 16.5% (13.1%) | 10.7% | 1031 | 71% | +68 | 13 | 100% | Sell high | |
| Oliver Ekman-LarssonD | TOR | 78 | 39 | +10.1 | 7.4% (5.3%) | 11.9% | 1018 | 39% | +67 | -31 | 43%▲32 | Hold* | |
| John MarinoD | UTA | 80 | 36 | +8.1 | 7.3% (7.2%) | 13.2% | 1044 | 38% | +67 | 11 | 18%▲13 | Sell high | |
| Cole CaufieldR | MTL | 81 | 88 | +9.2 | 19.8% (16.7%) | 12.6% | 1042 | 69% | +67 | 52 | 100%▲1.3 | Sell high | |
| Evan BouchardD | EDM | 82 | 95 | +21.1 | 9.5% (8.6%) | 10.9% | 997 | 54% | +66 | 45 | 100% | Hold* | |
| Sidney CrosbyC | PIT | 68 | 74 | +13.0 | 18.1% (14.0%) | 12.1% | 1016 | 71% | +65 | 11 | 100%▲2.4 | Sell high | |
| Mario FerraroD | SJS | 82 | 23 | +5.4 | 7.4% (4.0%) | 9.7% | 1007 | 34% | +65 | 68 | 15%▼2.1 | Sell high | |
| Rasmus DahlinD | BUF | 77 | 74 | +15.8 | 9.7% (9.1%) | 10.7% | 1020 | 56% | +65 | 69 | 100%▲0.8 | Hold* | |
| Alexandre CarrierD | MTL | 73 | 22 | +2.7 | 12.5% (5.5%) | 11.8% | 1010 | 36% | +64 | 62 | 12%▲10 | Hold* | |
| Jamie BennL | DAL | 60 | 36 | +8.8 | 20.8% (16.1%) | 12.8% | 1038 | 66% | +63 | 3 | 21%▲17 | Sell high | |
| Logan StanleyD | BUF | 76 | 26 | +6.2 | 9.4% (5.9%) | 9.6% | 1016 | 49% | +63 | -9 | 6.6%▲5.9 | Sell high | |
| Vladislav GavrikovD | NYR | 82 | 35 | +7.5 | 11.8% (7.0%) | 8.2% | 997 | 44% | +62 | 31 | 41%▼6 | Hold* | |
| Egor ChinakhovR | PIT | 72 | 42 | +8.1 | 15.0% (12.7%) | 11.2% | 1017 | 74% | +61 | 76 | 48%▲39 | Hold* | |
| Shayne GostisbehereD | CAR | 55 | 50 | +13.0 | 11.2% (8.9%) | 10.1% | 984 | 61% | +60 | 55 | 95%▲16 | Sell high | |
| Henri JokiharjuD | BOS | 41 | 15 | +6.2 | 5.0% (4.0%) | 11.9% | 1014 | 40% | +60 | 81 | 0.1% | Hold* | |
| Esa LindellD | DAL | 82 | 32 | +5.4 | 7.2% (6.5%) | 12.4% | 1038 | 36% | +59 | 43 | 37%▼31 | Hold* | |
| Alexander WennbergC | SJS | 80 | 55 | +12.8 | 19.4% (14.4%) | 8.9% | 980 | 60% | +57 | 68 | 25%▼1.5 | Hold* | |
| Robert ThomasC | STL | 64 | 64 | −0.2 | 24.5% (18.4%) | 13.1% | 1045 | 73% | +57 | 68 | 93%▲20 | Hold* | |
| Brock FaberD | MIN | 80 | 51 | +11.2 | 8.7% (6.4%) | 9.8% | 1001 | 44% | +57 | 6 | 95%▼3.6 | Hold* | |
| Brent BurnsD | COL | 82 | 35 | +1.4 | 7.0% (3.7%) | 10.1% | 1021 | 41% | +56 | 18 | 50%▼14 | Sell high | |
| Adam LarssonD | SEA | 82 | 25 | +6.9 | 6.6% (4.1%) | 8.8% | 999 | 38% | +56 | 29 | 23%▼19 | Sell high | |
| Miro HeiskanenD | DAL | 77 | 63 | +13.4 | 6.1% (5.5%) | 10.5% | 1017 | 48% | +56 | 26 | 99%▲4 | Sell high | |
| Nick JensenD | OTT | 61 | 17 | +2.7 | 11.1% (4.5%) | 12.1% | 991 | 32% | +55 | 76 | 0.0% | Sell high | |
| Casey MittelstadtC | BOS | 71 | 42 | +5.5 | 18.8% (16.6%) | 13.3% | 1038 | 57% | +55 | 6 | 13%▲11 | Hold* | |
| Jake SandersonD | OTT | 67 | 54 | +11.9 | 9.5% (7.7%) | 9.5% | 997 | 48% | +55 | -5 | 99%▲3.2 | Hold* | |
| Denton MateychukD | CBJ | 75 | 31 | +4.4 | 14.8% (8.5%) | 9.7% | 1006 | 46% | +55 | 38 | 42%▲40 | Hold* |
* Tag softened to Hold: his role or shot diet moved the same way as his results, so part of the streak may be real.
Goalies: save % luck and GSAx by shot class
Save percentage against a talent estimate shrunk toward league average, goals saved above average with a 90% interval, and goals saved above expected by shot class for the games our sequence engine has processed so far.
| Goalie | GP | Shots | Talent SV% | Luck (pts) | GSAA ± 90% | Tag | ||
|---|---|---|---|---|---|---|---|---|
| Scott WedgewoodCOL | 45 | 1093 | .921 | .904 | +17.7 | +28.2 ± 16.6 | +22.4 ± 16.4 (45 GP)
| Sell high |
| Dennis HildebyTOR | 20 | 548 | .912 | .897 | +15.4 | +9.3 ± 11.8 | +9.9 ± 12.0 (20 GP)
| Sell high |
| Jesper WallstedtMIN | 35 | 1020 | .915 | .900 | +15.1 | +19.6 ± 16.1 | +13.0 ± 15.8 (35 GP)
| Sell high |
| Devin CooleyCGY | 31 | 847 | .909 | .897 | +11.9 | +11.5 ± 14.6 | +16.4 ± 15.2 (31 GP)
| Sell high |
| Jacob FowlerMTL | 17 | 448 | .908 | .897 | +11.3 | +5.8 ± 10.7 | +10.0 ± 11.1 (17 GP)
| Sell high |
| Ukko-Pekka LuukkonenBUF | 35 | 930 | .909 | .898 | +10.3 | +12.2 ± 15.3 | +9.9 ± 15.4 (35 GP)
| Sell high |
| Justus AnnunenNSH | 28 | 711 | .906 | .897 | +8.9 | +7.3 ± 13.4 | +11.9 ± 13.9 (28 GP)
| Sell high |
| Dan VladarPHI | 52 | 1283 | .906 | .897 | +8.8 | +13.0 ± 18.0 | +8.5 ± 18.0 (52 GP)
| Sell high |
| Joel HoferSTL | 46 | 1250 | .909 | .902 | +7.0 | +16.6 ± 17.8 | +17.2 ± 18.0 (46 GP)
| Hold |
| Colten EllisBUF | 16 | 455 | .903 | .896 | +6.8 | +3.5 ± 10.7 | +1.0 ± 10.5 (16 GP)
| Hold |
| Alex LyonBUF | 36 | 979 | .906 | .900 | +6.3 | +10.3 ± 15.7 | +10.3 ± 15.9 (36 GP)
| Hold |
| Anton ForsbergLAK | 36 | 952 | .909 | .903 | +6.0 | +12.5 ± 15.5 | +6.6 ± 15.3 (36 GP)
| Hold |
| Philipp GrubauerSEA | 32 | 866 | .909 | .903 | +5.9 | +11.5 ± 14.8 | +9.1 ± 14.8 (32 GP)
| Hold |
| Logan ThompsonWSH | 58 | 1587 | .912 | .906 | +5.7 | +25.8 ± 20.0 | +33.2 ± 20.7 (58 GP)
| Hold |
| Jet GreavesCBJ | 55 | 1539 | .908 | .903 | +4.7 | +18.8 ± 19.7 | +16.3 ± 19.9 (55 GP)
| Hold |
| Jakub DobesMTL | 43 | 1187 | .901 | .898 | +3.1 | +7.0 ± 17.3 | +12.3 ± 17.9 (43 GP)
| Hold |
| Spencer KnightCHI | 55 | 1583 | .902 | .900 | +2.1 | +10.4 ± 20.0 | +13.8 ± 20.5 (55 GP)
| Hold |
| Jeremy SwaymanBOS | 55 | 1571 | .907 | .905 | +1.8 | +18.1 ± 19.9 | +24.7 ± 20.6 (55 GP)
| Hold |
| Casey DeSmithDAL | 30 | 760 | .907 | .905 | +1.6 | +8.4 ± 13.9 | +6.0 ± 13.8 (30 GP)
| Hold |
| Jake AllenNJD | 37 | 1031 | .903 | .902 | +1.3 | +7.7 ± 16.2 | +10.8 ± 16.6 (37 GP)
| Hold |
| Mackenzie BlackwoodCOL | 39 | 933 | .903 | .903 | +0.8 | +7.5 ± 15.4 | +6.1 ± 15.4 (38 GP)
| Hold |
| Connor IngramEDM | 32 | 763 | .899 | .899 | +0.4 | +2.7 ± 13.9 | +3.9 ± 14.1 (32 GP)
| Hold |
| Igor ShesterkinNYR | 51 | 1425 | .912 | .911 | +0.1 | +22.9 ± 19.0 | +20.6 ± 19.1 (51 GP)
| Hold |
| Pyotr KochetkovCAR | 9 | 189 | .899 | .900 | −0.5 | +0.7 ± 6.9 | −0.5 ± 6.8 (8 GP)
| Hold |
| Dustin WolfCGY | 57 | 1558 | .899 | .900 | −1.0 | +4.8 ± 19.9 | +0.2 ± 19.8 (57 GP)
| Hold |
| Daniil TarasovFLA | 33 | 925 | .895 | .896 | −1.1 | −0.4 ± 15.3 | −1.9 ± 15.4 (33 GP)
| Hold |
| Brandon BussiCAR | 39 | 912 | .894 | .895 | −1.4 | −1.7 ± 15.2 | +0.4 ± 15.5 (39 GP)
| Hold |
| Karel VejmelkaUTA | 64 | 1626 | .896 | .898 | −1.7 | +0.9 ± 20.3 | +7.5 ± 20.9 (64 GP)
| Hold |
| Andrei VasilevskiyTBL | 58 | 1483 | .911 | .913 | −2.3 | +22.9 ± 19.4 | +20.6 ± 19.5 (58 GP)
| Hold |
| Filip GustavssonMIN | 50 | 1377 | .903 | .906 | −2.4 | +10.9 ± 18.7 | +3.5 ± 18.4 (50 GP)
| Hold |
| Joonas KorpisaloBOS | 31 | 851 | .894 | .897 | −2.6 | −1.1 ± 14.7 | −5.7 ± 14.5 (31 GP)
| Hold |
| Joseph WollTOR | 39 | 1220 | .898 | .901 | −2.9 | +3.5 ± 17.6 | +0.2 ± 17.5 (39 GP)
| Hold |
| John GibsonDET | 57 | 1461 | .901 | .904 | −3.0 | +8.6 ± 19.2 | +15.0 ± 19.8 (57 GP)
| Hold |
| Alex NedeljkovicSJS | 40 | 1049 | .896 | .900 | −3.6 | +0.6 ± 16.3 | +1.5 ± 16.5 (40 GP)
| Hold |
| Ilya SorokinNYI | 55 | 1530 | .906 | .910 | −3.8 | +15.9 ± 19.7 | +25.6 ± 20.5 (55 GP)
| Hold |
| Akira SchmidVGK | 34 | 791 | .892 | .897 | −4.1 | −2.4 ± 14.2 | −6.7 ± 14.0 (34 GP)
| Hold |
| Joey DaccordSEA | 47 | 1307 | .896 | .900 | −4.4 | +0.6 ± 18.2 | −1.8 ± 18.3 (47 GP)
| Hold |
| Arturs SilovsPIT | 39 | 1020 | .887 | .892 | −4.7 | −8.4 ± 16.1 | −5.4 ± 16.4 (39 GP)
| Hold |
| Eric ComrieWPG | 25 | 654 | .890 | .896 | −6.1 | −3.7 ± 12.9 | −4.7 ± 12.9 (25 GP)
| Hold |
| David RittichNYI | 30 | 720 | .894 | .901 | −6.1 | −0.8 ± 13.5 | +6.4 ± 14.3 (30 GP)
| Hold |
| Jake OettingerDAL | 54 | 1372 | .899 | .906 | −6.6 | +5.3 ± 18.6 | +4.4 ± 18.8 (54 GP)
| Hold |
| Jonas JohanssonTBL | 25 | 670 | .884 | .892 | −8.5 | −8.0 ± 13.0 | −10.7 ± 12.9 (25 GP)
| Buy low |
| Lukas DostalANA | 56 | 1513 | .888 | .897 | −8.9 | −10.9 ± 19.6 | −1.3 ± 20.4 (56 GP)
| Buy low |
| Jonathan QuickNYR | 25 | 671 | .891 | .900 | −9.2 | −2.9 ± 13.0 | −0.5 ± 13.4 (25 GP)
| Buy low |
| Yaroslav AskarovSJS | 47 | 1341 | .883 | .892 | −9.4 | −16.9 ± 18.4 | −18.0 ± 18.6 (47 GP)
| Buy low |
| Thatcher DemkoVAN | 20 | 514 | .895 | .905 | −10.5 | −0.3 ± 11.4 | +4.3 ± 12.0 (20 GP)
| Buy low |
| Carter HartVGK | 18 | 422 | .891 | .902 | −11.1 | −1.9 ± 10.3 | −2.0 ± 10.5 (18 GP)
| Buy low |
| Arvid SoderblomCHI | 26 | 774 | .880 | .891 | −11.1 | −12.1 ± 14.0 | −7.9 ± 14.5 (26 GP)
| Buy low |
| Nikita TolopiloVAN | 21 | 582 | .881 | .893 | −11.7 | −8.2 ± 12.1 | −1.9 ± 12.9 (21 GP)
| Buy low |
| Stuart SkinnerPIT | 50 | 1267 | .888 | .900 | −11.9 | −9.6 ± 17.9 | +6.6 ± 19.1 (50 GP)
| Buy low |
| Anthony StolarzTOR | 26 | 708 | .893 | .906 | −13.2 | −2.0 ± 13.4 | −0.7 ± 13.7 (26 GP)
| Buy low |
| Ville HussoANA | 20 | 534 | .884 | .898 | −14.0 | −6.2 ± 11.6 | −3.3 ± 12.1 (20 GP)
| Buy low |
| Juuse SarosNSH | 59 | 1700 | .893 | .908 | −14.7 | −3.4 ± 20.7 | −1.7 ± 21.0 (59 GP)
| Buy low |
| Vitek VanecekUTA | 22 | 506 | .883 | .899 | −15.3 | −6.1 ± 11.3 | −5.4 ± 11.5 (22 GP)
| Buy low |
| James ReimerOTT | 14 | 289 | .886 | .901 | −15.6 | −2.8 ± 8.6 | −0.5 ± 9.0 (14 GP)
| Hold |
| Elvis MerzlikinsCBJ | 30 | 812 | .883 | .899 | −15.6 | −10.2 ± 14.3 | −7.2 ± 14.7 (30 GP)
| Buy low |
| Connor HellebuyckWPG | 57 | 1547 | .895 | .913 | −18.0 | −0.4 ± 19.8 | +1.8 ± 20.1 (57 GP)
| Buy low |
| Darcy KuemperLAK | 50 | 1234 | .891 | .909 | −18.1 | −5.1 ± 17.7 | −7.7 ± 17.7 (50 GP)
| Buy low |
| Linus UllmarkOTT | 49 | 1198 | .891 | .909 | −18.7 | −5.8 ± 17.4 | −7.7 ± 17.4 (49 GP)
| Buy low |
| Samuel ErssonPHI | 33 | 744 | .870 | .889 | −19.9 | −19.3 ± 13.7 | −13.1 ± 14.4 (33 GP)
| Buy low |
| Cam TalbotDET | 34 | 797 | .883 | .903 | −20.0 | −9.7 ± 14.2 | −7.4 ± 14.6 (34 GP)
| Buy low |
| Charlie LindgrenWSH | 21 | 602 | .879 | .899 | −20.2 | −10.1 ± 12.3 | −3.8 ± 13.0 (21 GP)
| Buy low |
| Carl LindbomVGK | 8 | 189 | .873 | .894 | −21.2 | −4.3 ± 6.9 | −2.4 ± 7.3 (8 GP)
| Hold |
| Calvin PickardEDM | 16 | 410 | .871 | .892 | −21.3 | −10.2 ± 10.2 | −3.9 ± 10.9 (16 GP)
| Buy low |
| Jacob MarkstromNJD | 44 | 1113 | .883 | .905 | −21.5 | −13.7 ± 16.8 | −13.1 ± 17.0 (44 GP)
| Buy low |
| Kevin LankinenVAN | 47 | 1285 | .875 | .897 | −21.7 | −25.7 ± 18.0 | −17.1 ± 18.8 (47 GP)
| Buy low |
| Tristan JarryEDM | 33 | 832 | .882 | .904 | −21.9 | −11.1 ± 14.5 | −3.8 ± 15.3 (33 GP)
| Buy low |
| Samuel MontembeaultMTL | 25 | 635 | .872 | .896 | −23.6 | −14.7 ± 12.7 | −2.9 ± 13.8 (25 GP)
| Buy low |
| Sergei BobrovskyFLA | 52 | 1250 | .877 | .905 | −28.0 | −23.4 ± 17.8 | −18.8 ± 18.3 (52 GP)
| Buy low |
| Jordan BinningtonSTL | 41 | 1010 | .873 | .902 | −28.5 | −22.5 ± 16.0 | −26.7 ± 15.8 (41 GP)
| Buy low |
| Adin HillVGK | 27 | 587 | .871 | .901 | −31.0 | −14.7 ± 12.2 | −14.4 ± 12.4 (27 GP)
| Buy low |
| Frederik AndersenCAR | 35 | 849 | .874 | .907 | −33.2 | −18.3 ± 14.7 | −0.9 ± 16.1 (35 GP)
| Buy low |
| Leevi MeriläinenOTT | 20 | 457 | .860 | .893 | −33.4 | −16.3 ± 10.8 | −19.4 ± 10.5 (20 GP)
| Buy low |
| Petr MrazekANA | 10 | 247 | .858 | .900 | −41.3 | −9.2 ± 7.9 | −8.2 ± 8.1 (10 GP)
| Hold |
How the Luck Meter works
Each component compares what happened with a talent-adjusted expectation. Talent is a Bayesian estimate: the league (or position) rate acts as the prior and every loaded season of the player's own data updates it, so a rookie regresses to league average and a veteran to his own history. Small samples barely move the meter.
- Expected goals are the player's own ixG (our xG model, calibrated to league scoring) or, for games not yet run through the xG model, shots on goal times the league shooting percentage for his position. We multiply by his finishing talent: (career goals + 25) / (career xG + 25), so a proven sniper is expected to beat xG and a new player regresses to league average.
- How often his team scores on its shots with him on the ice, against his own history shrunk toward the league rate with 1500 pseudo-shots. On-ice SH% is one of the least repeatable numbers in hockey, so it takes a large sample to move the expectation.
- Skaters barely control their goalie's save percentage, so the expectation is close to league average (4000 pseudo-shots). It matters most for plus-minus and least for points, so it carries the smallest weight.
- Individual points percentage is the share of on-ice goals he scored or assisted on. The baseline is his history shrunk toward the forward or defense average with 40 pseudo-goals. A defenseman with a forward-like IPP is usually due to come down.
- Expected points = expected goals + expected assists, where expected assists are his assist-involvement rate times the expected goals his teammates generate with him on the ice (on-ice xGF adjusted for his on-ice finishing talent, minus his own).
Each component becomes a z-score (luck divided by its sampling standard deviation), weighted shooting 0.3, onIceSh 0.25, pax 0.2, ipp 0.15, onIceSv 0.1. The meter is 100 × tanh(Σ weight × z / 1.5), so it runs from −100 (ice cold) to +100 (red hot). |meter| ≥ 50 with at least 10 games earns Sell high or Buy low.
Sustainability check. Over his last 10 games we look for a role change (TOI up 1:30+, PP share up 10+ points, or PP1 / line promotions from our deployment tracker) and a shot-diet shift (xG per unblocked attempt up or down 20%+). A sell signal with a better role or shot diet is softened to Hold, and so is a buy signal with a worse one.
xG comes from our trained expected-goals model (methodology), and the board recomputes nightly.
FAQ
What does the Luck Meter measure?
It measures how far a player's results are running ahead of (positive) or behind (negative) what his shot volume, shot quality, ice time and history say to expect. It combines five components: shooting luck, on-ice shooting %, on-ice save % (PDO), IPP and points vs expected points.
Should I trade every Sell high player?
No. Sell high means the results are ahead of the process, so the price is probably at its peak. Elite finishers and playmakers do sustain some of it, and the meter only knows the seasons we have loaded. We soften the tag to Hold when his role (TOI, PP share, promotions) or shot diet improved at the same time, because some of that heat is real.
Why is a star player flagged as lucky?
Talent is estimated from every season we have loaded, shrunk toward league average. A player with a short history is pulled part of the way toward league average even if he is an elite shooter. The sample note on the page shows which seasons fed the baseline.
Do older seasons count as much as recent ones?
No. Players change with age and role, and the league changes around them, so the career baseline is weighted toward recent seasons, Marcel-style. This season counts in full, last season 80%, the season before 60%, and each older season half as much as the one after it (30%, 15%, and so on). An old hot streak still nudges the baseline, but it no longer outweighs what he has done lately.
How is PDO used?
PDO is on-ice shooting % plus on-ice save % at 5v5. We split it into its two halves because they regress at different speeds and matter differently for fantasy: on-ice shooting drives points, on-ice save % mostly drives plus-minus.
How are goalies rated?
Goalies get goals saved above average (GSAA) with a 90% interval, a talent estimate (save % shrunk toward league with 3,000 pseudo-shots) and, for games the sequence engine has processed, goals saved above expected by shot class (rebounds, transition, cycle, off the draw) with intervals.
How often does the board update?
Nightly, after the previous night's games are ingested. xG coverage grows as games are reprocessed with the full engine; the page shows what share of games used model xG.