Model calibration
Regressions
Draft-day NHLe + FlameWire (what a team could know by the Entry Draft) vs later NHL destiny. Not live board scores.
FlameWire destiny
How often was the tier right?
Pred tier vs Obs tier on this sample (n=100). Close = off by at most one band (still useful for scouting).
- Exact — predicted the same destiny band (39 players · 39%)
- Close — off by only one band (e.g. top-6 vs middle-6) (45 · 45%)
- Miss — off by two or more bands (16 · 16%)
In plain English: about 84 of every 100 players land in the band FW called or the band next to it (and 39 of 100 are exact) . Chance guessing a 6-band ladder is ~17% exact; always picking the most common band is ~27%.
NHLe scatter
Each dot is one sampled player. Diagonal = perfect calibration.
NHLe calibration
Bucket mean predicted → mean actual. Line should track the diagonal.
FW destiny · actual P/82 by projected tier
Higher projected tiers should land higher NHL production. Star/top-6 left → AHL path right.
FW tier confusion
Rows = projected as-of tier · Columns = observed tier from actual NHL P/82. Diagonal = exact destiny hits.
| Projected \ Observed | star | top6 | middle6 | bottom6 | bubble | ahl | n |
|---|---|---|---|---|---|---|---|
| star | 1 | · | · | · | · | · | 1 |
| top6 | 4 | 1 | 3 | 2 | · | · | 10 |
| middle6 | 2 | 5 | 14 | 6 | 1 | 3 | 31 |
| bottom6 | · | 6 | 8 | 19 | 16 | 2 | 51 |
| bubble | · | · | · | 1 | 4 | 2 | 7 |
| ahl | · | · | · | · | · | · | 0 |
Sample players
Sorted by largest absolute NHLe error first — useful when tuning formulas. Error = actual − predicted (positive ⇒ model under-shot production).
| Player | Pos | Path | As-of | Pick | Age@ | Pred NHLe | Actual P/82 | Err | FW | Pred tier | Obs tier | Hit | NHL GP |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Connor McDavid | C | OHL | Draft 2015 | #1 | 18 | 55.7 | 139.8 | +84.1 | 100.0 | star | star | yes | 448 |
| Quinn Hughes | D | NCAA | Draft 2018 | #7 | 18 | 21.9 | 81.6 | +59.7 | 76.4 | top6 | star | ±1 | 440 |
| Kyle Connor | LW | USHL | Draft 2015 | #17 | 18 | 28.5 | 87.5 | +59.0 | 66.6 | middle6 | star | no | 451 |
| Dylan Larkin | C | USHL | Draft 2014 | #15 | 17 | 17.3 | 73.6 | +56.3 | 61.0 | bottom6 | top6 | no | 422 |
| Lane Hutson | D | USHL | Draft 2022 | #62 | 18 | 21.5 | 71.9 | +50.4 | 64.6 | middle6 | star | no | 171 |
| Brady Tkachuk | C | NCAA | Draft 2018 | #4 | 18 | 21.3 | 70.5 | +49.2 | 67.1 | middle6 | top6 | ±1 | 436 |
| Clayton Keller | C | USHL | Draft 2016 | #7 | 17 | 32.8 | 80.9 | +48.1 | 82.3 | top6 | star | ±1 | 452 |
| Tom Wilson | RW | OHL | Draft 2012 | #16 | 18 | 12.2 | 57.6 | +45.4 | 55.4 | bottom6 | top6 | no | 390 |
| Sam Reinhart | C | WHL | Draft 2014 | #2 | 18 | 34.7 | 78.7 | +44.0 | 86.8 | top6 | star | ±1 | 445 |
| Chandler Stephenson | C | WHL | Draft 2012 | #77 | 18 | 14.6 | 58.5 | +43.9 | 46.2 | bottom6 | top6 | no | 450 |
| Mathew Barzal | C | WHL | Draft 2015 | #16 | 18 | 28.2 | 71.1 | +42.9 | 67.6 | middle6 | top6 | ±1 | 377 |
| Jimmy Snuggerud | RW | USHL | Draft 2022 | #23 | 18 | 18.4 | 59.0 | +40.6 | 59.9 | bottom6 | top6 | no | 82 |
| Pavel Zacha | C | OHL | Draft 2015 | #6 | 18 | 18.6 | 55.3 | +36.7 | 64.6 | middle6 | top6 | ±1 | 446 |
| Matthew Schaefer | D | OHL | Draft 2025 | #1 | 17 | 23.5 | 59.4 | +35.9 | 81.3 | top6 | star | ±1 | 87 |
| Vince Dunn | D | OHL | Draft 2015 | #56 | 18 | 17.0 | 51.4 | +34.4 | 61.7 | bottom6 | top6 | no | 405 |
| Matthew Knies | LW | USHL | Draft 2021 | #57 | 18 | 22.5 | 55.1 | +32.6 | 54.3 | bottom6 | top6 | no | 244 |
| Noah Dobson | D | QMJHL | Draft 2018 | #12 | 18 | 19.0 | 50.6 | +31.6 | 71.3 | middle6 | top6 | ±1 | 439 |
| Logan Cooley | C | USHL | Draft 2022 | #3 | 18 | 30.4 | 59.3 | +28.9 | 81.4 | top6 | top6 | yes | 217 |
| Darnell Nurse | D | OHL | Draft 2013 | #7 | 18 | 12.6 | 36.9 | +24.3 | 66.5 | middle6 | middle6 | yes | 453 |
| Andreas Athanasiou | LW | OHL | Draft 2012 | #110 | 17 | 14.3 | 38.4 | +24.1 | 42.4 | bottom6 | middle6 | ±1 | 192 |
| Jaccob Slavin | D | USHL | Draft 2012 | #120 | 18 | 8.5 | 31.3 | +22.8 | 45.6 | bottom6 | middle6 | ±1 | 414 |
| Ivan Barbashev | C | QMJHL | Draft 2014 | #33 | 18 | 28.9 | 51.6 | +22.7 | 64.2 | middle6 | top6 | ±1 | 442 |
| Josh Doan | RW | USHL | Draft 2021 | #37 | 19 | 21.9 | 44.3 | +22.4 | 62.6 | middle6 | middle6 | yes | 150 |
| Dylan Cozens | C | WHL | Draft 2019 | #7 | 18 | 27.6 | 49.9 | +22.3 | 69.6 | middle6 | middle6 | yes | 450 |
| Anthony Mantha | LW | QMJHL | Draft 2013 | #20 | 18 | 27.0 | 47.8 | +20.8 | 65.8 | middle6 | middle6 | yes | 333 |
| Kevin Labanc | RW | OHL | Draft 2014 | #171 | 18 | 11.8 | 31.6 | +19.8 | 36.0 | bubble | bottom6 | ±1 | 228 |
| Easton Cowan | LW | OHL | Draft 2023 | #28 | 18 | 19.2 | 38.7 | +19.5 | 58.3 | bottom6 | middle6 | ±1 | 72 |
| Connor McMichael | C | OHL | Draft 2019 | #25 | 18 | 21.6 | 40.5 | +18.9 | 63.7 | middle6 | middle6 | yes | 320 |
| Scott Laughton | C | OHL | Draft 2012 | #20 | 18 | 18.3 | 35.1 | +16.8 | 59.4 | bottom6 | middle6 | ±1 | 428 |
| Adam Boqvist | D | SWE-U20-NAT | Draft 2018 | #8 | 17 | 15.6 | 31.9 | +16.3 | 64.2 | middle6 | middle6 | yes | 231 |
| J.T. Compher | C | USHL | Draft 2013 | #35 | 18 | 23.5 | 39.6 | +16.1 | 61.1 | bottom6 | middle6 | ±1 | 437 |
| Eeli Tolvanen | LW | USHL | Draft 2017 | #30 | 18 | 21.6 | 37.2 | +15.6 | 60.8 | bottom6 | middle6 | ±1 | 423 |
| Trent Frederic | C | USHL | Draft 2016 | #29 | 18 | 9.7 | 24.0 | +14.3 | 51.8 | bottom6 | bottom6 | yes | 400 |
| Adam Pelech | D | OHL | Draft 2012 | #65 | 17 | 10.0 | 24.2 | +14.2 | 51.7 | bottom6 | bottom6 | yes | 400 |
| Kirby Dach | C | WHL | Draft 2019 | #3 | 18 | 24.3 | 37.8 | +13.5 | 68.3 | middle6 | middle6 | yes | 247 |
| Ridly Greig | C | WHL | Draft 2020 | #28 | 17 | 21.5 | 34.3 | +12.8 | 60.0 | bottom6 | middle6 | ±1 | 251 |
| Mackie Samoskevich | RW | USHL | Draft 2021 | #24 | 18 | 20.9 | 33.6 | +12.7 | 61.7 | bottom6 | middle6 | ±1 | 161 |
| Zayne Parekh | D | OHL | Draft 2024 | #9 | 18 | 33.4 | 21.0 | -12.4 | 92.8 | top6 | bottom6 | no | 43 |
| Keegan Kolesar | RW | WHL | Draft 2015 | #69 | 18 | 10.4 | 22.2 | +11.8 | 44.0 | bottom6 | bottom6 | yes | 443 |
| Noah Laba | C | USHL | Draft 2022 | #111 | 18 | 14.8 | 26.3 | +11.5 | 43.9 | bottom6 | bottom6 | yes | 81 |
| Ryan Greene | C | USHL | Draft 2022 | #57 | 18 | 16.1 | 27.6 | +11.5 | 51.5 | bottom6 | bottom6 | yes | 89 |
| Kaedan Korczak | D | WHL | Draft 2019 | #41 | 18 | 9.7 | 20.9 | +11.2 | 55.5 | bottom6 | bottom6 | yes | 161 |
| Zachary Bolduc | LW | QMJHL | Draft 2021 | #17 | 18 | 24.3 | 35.5 | +11.2 | 64.6 | middle6 | middle6 | yes | 180 |
| Ben Jones | C | OHL | Draft 2017 | #189 | 18 | 15.4 | 4.4 | -11.0 | 38.6 | bubble | ahl | ±1 | 56 |
| Jakub Lauko | LW | CZE | Draft 2018 | #77 | 18 | 6.1 | 16.5 | +10.4 | 39.3 | bubble | bubble | yes | 139 |
| Logan Brown | C | OHL | Draft 2016 | #11 | 18 | 29.9 | 19.9 | -10.0 | 70.1 | middle6 | bubble | no | 70 |
| Drew Helleson | D | USHL | Draft 2019 | #47 | 18 | 10.2 | 20.0 | +9.8 | 51.8 | bottom6 | bottom6 | yes | 119 |
| Dalibor Dvorský | C | ALLSV | Draft 2023 | #10 | 18 | 14.7 | 24.2 | +9.5 | 54.1 | bottom6 | bottom6 | yes | 78 |
| Alexander Alexeyev | D | WHL | Draft 2018 | #31 | 18 | 17.4 | 8.2 | -9.2 | 65.5 | middle6 | ahl | no | 80 |
| Isaak Phillips | D | OHL | Draft 2020 | #141 | 18 | 8.0 | 16.7 | +8.7 | 42.5 | bottom6 | bottom6 | yes | 59 |
| Jake Leschyshyn | C | WHL | Draft 2017 | #62 | 18 | 15.0 | 6.4 | -8.6 | 48.6 | bottom6 | ahl | no | 77 |
| Wade Allison | RW | USHL | Draft 2016 | #52 | 18 | 15.5 | 24.1 | +8.6 | 51.8 | bottom6 | bottom6 | yes | 75 |
| Ryan Pulock | D | WHL | Draft 2013 | #15 | 18 | 18.6 | 26.8 | +8.2 | 65.9 | middle6 | middle6 | yes | 407 |
| Travis Dermott | D | OHL | Draft 2015 | #34 | 18 | 17.2 | 9.0 | -8.2 | 64.7 | middle6 | ahl | no | 191 |
| Parker Wotherspoon | D | WHL | Draft 2015 | #112 | 17 | 11.7 | 19.4 | +7.7 | 48.2 | bottom6 | bottom6 | yes | 194 |
| Ben Kindel | C | WHL | Draft 2025 | #11 | 18 | 31.5 | 39.0 | +7.5 | 72.6 | middle6 | middle6 | yes | 82 |
| Jason Dickinson | C | OHL | Draft 2013 | #29 | 17 | 18.2 | 25.5 | +7.3 | 57.2 | bottom6 | bottom6 | yes | 398 |
| Brendan Gaunce | LW | OHL | Draft 2012 | #26 | 18 | 23.2 | 16.2 | -7.0 | 61.6 | bottom6 | bubble | ±1 | 96 |
| Ethan Bear | D | WHL | Draft 2015 | #124 | 17 | 11.5 | 18.5 | +7.0 | 46.9 | bottom6 | bottom6 | yes | 186 |
| Ben Harpur | D | OHL | Draft 2013 | #108 | 18 | 5.2 | 12.1 | +6.9 | 42.6 | bottom6 | bubble | ±1 | 95 |
| Robby Fabbri | C | OHL | Draft 2014 | #21 | 18 | 32.0 | 38.8 | +6.8 | 72.1 | middle6 | middle6 | yes | 247 |
| Dennis Cholowski | D | BCHL | Draft 2016 | #20 | 18 | 11.2 | 17.4 | +6.2 | 61.6 | bottom6 | bottom6 | yes | 85 |
| Sam Steel | C | WHL | Draft 2016 | #30 | 18 | 23.1 | 28.9 | +5.8 | 58.5 | bottom6 | bottom6 | yes | 409 |
| Austin Wagner | LW | WHL | Draft 2015 | #99 | 17 | 10.6 | 16.1 | +5.5 | 40.6 | bubble | bubble | yes | 51 |
| Sam Dickinson | D | OHL | Draft 2024 | #11 | 18 | 21.9 | 16.4 | -5.5 | 75.4 | top6 | bottom6 | no | 75 |
| Ty Emberson | D | USHL | Draft 2018 | #73 | 18 | 10.5 | 15.9 | +5.4 | 52.4 | bottom6 | bubble | ±1 | 181 |
| Jonathan Lekkerimäki | RW | SHL | Draft 2022 | #15 | 17 | 20.8 | 26.1 | +5.3 | 60.3 | bottom6 | bottom6 | yes | 44 |
| Nick Ritchie | LW | OHL | Draft 2014 | #10 | 18 | 27.7 | 32.9 | +5.2 | 70.1 | middle6 | middle6 | yes | 187 |
| Brett Leason | RW | WHL | Draft 2019 | #56 | 20 | 24.5 | 19.6 | -4.9 | 59.3 | bottom6 | bubble | ±1 | 226 |
| Mathew Dumba | D | WHL | Draft 2012 | #7 | 17 | 16.6 | 21.2 | +4.6 | 70.6 | middle6 | bottom6 | ±1 | 337 |
| Tucker Poolman | D | USHL | Draft 2013 | #127 | 20 | 9.6 | 5.0 | -4.6 | 44.2 | bottom6 | ahl | no | 82 |
| MacKenzie Entwistle | RW | OHL | Draft 2017 | #69 | 17 | 10.5 | 14.9 | +4.4 | 44.1 | bottom6 | bubble | ±1 | 193 |
| Anders Bjork | LW | USHL | Draft 2014 | #146 | 17 | 14.8 | 18.9 | +4.1 | 40.8 | bubble | bubble | yes | 117 |
| Johnathan Kovacevic | D | NCAA | Draft 2017 | #74 | 19 | 12.7 | 16.8 | +4.1 | 54.6 | bottom6 | bottom6 | yes | 258 |
| Nicolas Meloche | D | QMJHL | Draft 2015 | #40 | 17 | 15.5 | 11.5 | -4.0 | 61.9 | bottom6 | bubble | ±1 | 57 |
| Kale Clague | D | WHL | Draft 2016 | #51 | 18 | 15.2 | 19.1 | +3.9 | 57.4 | bottom6 | bottom6 | yes | 90 |
| Noah Juulsen | D | WHL | Draft 2015 | #26 | 18 | 13.4 | 9.8 | -3.6 | 62.6 | middle6 | ahl | no | 168 |
| Reid Schaefer | LW | WHL | Draft 2022 | #32 | 18 | 16.6 | 13.1 | -3.5 | 55.3 | bottom6 | bubble | ±1 | 50 |
| Filip Zadina | RW | QMJHL | Draft 2018 | #6 | 18 | 23.6 | 26.6 | +3.0 | 70.0 | middle6 | bottom6 | ±1 | 225 |
| Christian Wolanin | D | USHL | Draft 2015 | #107 | 20 | 12.4 | 15.3 | +2.9 | 48.8 | bottom6 | bubble | ±1 | 43 |
| Spencer Stastney | D | USHL | Draft 2018 | #131 | 18 | 10.3 | 13.2 | +2.9 | 46.4 | bottom6 | bubble | ±1 | 118 |
| Luke Kunin | C | NCAA | Draft 2016 | #15 | 18 | 24.9 | 22.5 | -2.4 | 68.0 | middle6 | bottom6 | ±1 | 365 |
| Nicolas Hague | D | OHL | Draft 2017 | #34 | 18 | 16.1 | 18.2 | +2.1 | 63.7 | middle6 | bottom6 | ±1 | 393 |
| Dominik Simon | C | CZE | Draft 2015 | #137 | 20 | 14.7 | 12.8 | -1.9 | 39.0 | bubble | bubble | yes | 83 |
| Samuel Bolduc | D | QMJHL | Draft 2019 | #57 | 18 | 10.7 | 12.6 | +1.9 | 53.7 | bottom6 | bubble | ±1 | 52 |
| Jacob Bryson | D | NCAA | Draft 2017 | #99 | 19 | 15.6 | 13.8 | -1.8 | 54.6 | bottom6 | bubble | ±1 | 304 |
| Keaton Middleton | D | OHL | Draft 2016 | #101 | 18 | 3.4 | 5.2 | +1.8 | 38.1 | bubble | ahl | ±1 | 47 |
| Nolan Foote | LW | WHL | Draft 2019 | #27 | 18 | 21.0 | 19.5 | -1.5 | 59.8 | bottom6 | bubble | ±1 | 42 |
| Kailer Yamamoto | LW | WHL | Draft 2017 | #22 | 18 | 32.0 | 33.4 | +1.4 | 68.9 | middle6 | middle6 | yes | 322 |
| Cole Perfetti | C | OHL | Draft 2020 | #10 | 18 | 44.0 | 45.3 | +1.3 | 89.1 | top6 | middle6 | ±1 | 295 |
| Donovan Sebrango | D | OHL | Draft 2020 | #63 | 18 | 13.7 | 14.9 | +1.2 | 56.0 | bottom6 | bubble | ±1 | 44 |
| Kyle Capobianco | D | OHL | Draft 2015 | #63 | 17 | 12.6 | 13.8 | +1.2 | 54.8 | bottom6 | bubble | ±1 | 95 |
| Matthew Wood | LW | NCAA | Draft 2023 | #15 | 18 | 31.8 | 33.0 | +1.2 | 69.5 | middle6 | middle6 | yes | 82 |
| Ryan Murray | D | WHL | Draft 2012 | #2 | 18 | 16.4 | 17.6 | +1.2 | 69.7 | middle6 | bottom6 | ±1 | 98 |
| Jeremy Lauzon | D | QMJHL | Draft 2015 | #52 | 18 | 11.6 | 12.7 | +1.1 | 55.5 | bottom6 | bubble | ±1 | 356 |
| Alexis Lafrenière | LW | QMJHL | Draft 2020 | #1 | 18 | 44.1 | 45.1 | +1.0 | 91.7 | top6 | middle6 | ±1 | 469 |
| Dante Fabbro | D | BCHL | Draft 2016 | #17 | 17 | 19.9 | 20.8 | +0.9 | 70.8 | middle6 | bottom6 | ±1 | 383 |
| Cole Schwindt | RW | OHL | Draft 2019 | #81 | 18 | 15.4 | 15.8 | +0.4 | 46.3 | bottom6 | bubble | ±1 | 78 |
| Henry Thrun | D | USHL | Draft 2019 | #101 | 18 | 16.8 | 16.7 | -0.1 | 55.3 | bottom6 | bottom6 | yes | 123 |
| Shane Wright | C | OHL | Draft 2022 | #4 | 18 | 37.9 | 38.0 | +0.1 | 85.4 | top6 | middle6 | ±1 | 175 |
How we set Obs tier
Obs tier is the player’s actual NHL outcome band in our data — not a scouting grade and not the same as FW’s score. We only use it as the ground-truth label to score whether Pred tier was right.
-
NHL production rate.
Take every NHL regular-season row we have loaded for that player
(GP > 0). Sum games and points, then convert to a pace:
Actual P/82 = (points ÷ games) × 82. That column is the number next to Pred NHLe. -
Map P/82 → offense role band.
Same ladder NHLe uses for “what scoring rate looks like,” with
separate cuts for forwards and defense
(D offense rates sit lower for the same role language):
Forwards (P/82)
- Star · ≥ 78
- Top-6 · ≥ 50
- Middle-6 · ≥ 32
- Bottom-6 · ≥ 20
- Bubble · ≥ 12
- AHL / long shot · below that
Defense (P/82)
- Top-pair (star) · ≥ 58
- Top-4 · ≥ 38
- 2nd pair · ≥ 26
- 3rd pair · ≥ 16
- Bubble · ≥ 10
- AHL / long shot · below that
- That band is Obs tier. We compare it to Pred tier (from draft-day or first-NHL FW). Hit = exact match · ±1 = adjacent band · no = off by 2+ tiers.
Important limits: this is an offense / scoring-rate destiny label. Shutdown D, PK specialists, and goalies are poorly described by P/82 alone. Career is only as long as the NHL seasons in our dump (not a full HOF-career window for every player). Sample still requires a minimum later NHL GP gate (default 40) so cup-of-coffee rows don’t dominate.
How to read this
- Draft-day mode: FW/NHLe use only seasons with spring end year ≤ draft year (what a team could know by the Entry Draft).
- Sample is drafted skaters only (matched draft year + pick) who later reached the NHL GP threshold — UDFA paths are excluded here.
- Obs tier = actual NHL P/82 from all loaded NHL seasons (points÷GP×82), mapped to the same F/D offense role bands as NHLe (star → AHL). See page section “How we set Obs tier”.
- Draft capital is included as known on draft night (pick is public when the name is called). Pre-pick scouting would zero D — future toggle.
- Survivorship: only players who reached the NHL sample gate.
Use a larger sample size (up to the eligible pool) when adjusting NHLe or FW — small batches bounce around. Hit Different sample a few times to check that a result isn’t just one lucky draw.