Okay.
I said I would post a final update before the season kicks off, so here we go. Rosters were finalized last night, and I've updated to include all the waiver claims and other deck chairs and so forth.
As I've said before, I did not build a mechanism for dealing with partial-season injuries, so players are either in or out. My method was basically if they are injured but expected to be back by December or so, I included them. If they are expected to miss more time than that (e.g. Colin White in Ottawa) then I took them out. In some cases I am just guessing. I took Brandon Sutter out; it's just a hunch but I don't expect him to play this year. I dunno, your guess is as good as mine.

. Boeser and Motte on the other hand are in. I am sure I made mistakes but it's not possible to do this perfectly and also following the training camps of 32 teams is exhausting.
First up, I will post the same goal differential rankings as I did in the OP, minus the little anecdotes. I am also providing other info on where the rank in the specific categories. "NonGoalieRank" is where the team ranks just on the strength of offense-defense, not taking goaltending into account. Last column notes the change from the original ranking. There are a couple big changes, I'll get to that:
Rank | TEAM | Goal Diff | ES Offense | ES Defense | PP | PK | Goaltending | NonGoalieRank | CHANGE FROM OP |
1 | VGK | 36 | 1 | 25 | 14 | 1 | 4 | 2 | - |
2 | COL | 36 | 6 | 2 | 1 | 8 | 18 | 1 | - |
3 | TOR | 32 | 2 | 19 | 15 | 7 | 2 | 3 | - |
4 | SEA | 21 | 31 | 5 | 4 | 17 | 3 | 8 | - |
5 | T.B | 14 | 15 | 6 | 13 | 16 | 13 | 6 | +1 |
6 | NYI | 13 | 21 | 4 | 11 | 24 | 7 | 9 | +2 |
7 | BOS | 13 | 32 | 1 | 3 | 30 | 14 | 7 | +4 |
8 | CAR | 13 | 3 | 18 | 8 | 22 | 19 | 4 | -3 |
9 | FLA | 7 | 22 | 3 | 2 | 31 | 24 | 5 | +4 |
10 | WPG | 6 | 8 | 32 | 25 | 2 | 1 | 24 | +7 |
11 | NYR | 2 | 19 | 16 | 9 | 28 | 6 | 21 | +1 |
12 | NSH | 2 | 14 | 15 | 26 | 12 | 11 | 18 | -3 |
13 | DAL | 2 | 10 | 10 | 23 | 15 | 20 | 11 | -3 |
14 | EDM | 1 | 4 | 30 | 20 | 14 | 17 | 14 | +1 |
15 | CHI | -1 | 11 | 31 | 21 | 3 | 9 | 22 | +9 |
16 | PIT | -1 | 23 | 9 | 7 | 21 | 27 | 10 | -9 |
17 | N.J | -2 | 12 | 12 | 10 | 25 | 21 | 13 | -1 |
18 | WSH | -4 | 7 | 24 | 28 | 5 | 22 | 16 | +5 |
19 | L.A | -4 | 30 | 21 | 5 | 27 | 10 | 28 | +7 |
20 | VAN | -4 | 29 | 20 | 6 | 29 | 8 | 29 | +2 |
21 | S.J | -5 | 16 | 17 | 12 | 32 | 12 | 26 | -1 |
22 | MTL | -6 | 13 | 8 | 22 | 26 | 23 | 19 | -3 |
23 | STL | -6 | 27 | 14 | 17 | 18 | 16 | 23 | -2 |
24 | CGY | -7 | 17 | 11 | 19 | 23 | 28 | 15 | -10 |
25 | OTT | -7 | 9 | 27 | 24 | 4 | 25 | 17 | - |
26 | DET | -10 | 20 | 29 | 32 | 9 | 5 | 31 | +3 |
27 | MIN | -13 | 18 | 7 | 27 | 11 | 31 | 12 | -9 |
28 | BUF | -15 | 28 | 23 | 18 | 13 | 26 | 27 | +4 |
29 | ARI | -19 | 26 | 13 | 16 | 19 | 30 | 25 | +2 |
30 | PHI | -20 | 5 | 22 | 30 | 6 | 32 | 20 | -3 |
31 | CBJ | -21 | 25 | 26 | 29 | 10 | 29 | 30 | -3 |
32 | ANA | -22 | 24 | 28 | 31 | 20 | 15 | 32 | -2 |
[TBODY]
[/TBODY]
There are basically 4 different things that causes change in rankings:
1) There were a few players that I had flat out missing from my database, and some were some pretty big names. For example, I was completely missing David Pastrnak AND Brad Marchand which is part of the reason Boston was in 11th. I have no idea how I was missing those players and am pretty annoyed about it, but I believe I have all significant players now.
2) Actual roster changes, obviously. Injuries, trades, etc. Also some tweaks to usage, when trying to guess what % of starts each goalie is going to get. This is again basically an educated guess on my part. I still don't know what Dallas is doing.
3) Bugs in code. There were a few just flat-out bugs I had where I fat-fingered something or wasn't handling things properly, leading to dumb results like Arizona having the best PK of all time, or weighting 2019 heavier than I meant to, etc.
4) Improvements to methodology. Maybe I should put "improvements" in scare quotes, but basically I've spent a lot of time back-testing with previous seasons worth of data to find the right coefficients and such, and I finally implemented a few things that I didn't have time for before (properly allocating ice time between forwards and defensemen being the biggest one.)
I am still finding basically no correlation in year-to-year goaltender performance so I take the goaltending number with a huge grain of salt, which is why I provide the NonGoalieRank column.
OK, at last, I have run the simulations. To explain these once more, I have run the season 10,000 times taking the schedule into account, the goal-scoring and allowing rates of each team and giving a small home ice advantage. The "Point Range" represents the 25th-to-75th percentile result for each team, in other words the point range in which the majority of simulations land. I have also provided the floor and the ceiling, along with a bunch of other data points.
The last few columns represents the % of time the team achieves a certain result, so in order, % of time they finished 1st in division, then 2nd in division, and so forth, culminating in the % of the simulations in which they made the playoffs.
Atlantic Division
Team | MinPts | Point Range | MaxPts | AvgGF | MinGF | MaxGF | AvgGA | MinGA | MaxGA | D1% | D2% | D3% | WC1% | WC2% | Playoff% |
TOR | 77 | 106 - 117 | 140 | 304 | 228 | 370 | 227 | 167 | 288 | 75% | 17% | 5% | 2% | 0% | 100% |
T.B | 64 | 93 - 104 | 129 | 276 | 213 | 342 | 244 | 188 | 306 | 10% | 31% | 28% | 13% | 6% | 89% |
BOS | 66 | 92 - 104 | 126 | 285 | 212 | 352 | 253 | 190 | 310 | 10% | 31% | 27% | 13% | 7% | 88% |
FLA | 59 | 87 - 99 | 127 | 300 | 232 | 375 | 284 | 225 | 354 | 3% | 15% | 23% | 19% | 12% | 73% |
MTL | 51 | 77 - 89 | 126 | 264 | 206 | 327 | 282 | 219 | 348 | 0% | 2% | 6% | 8% | 11% | 27% |
OTT | 49 | 76 - 88 | 114 | 264 | 209 | 329 | 286 | 231 | 346 | 0% | 2% | 5% | 7% | 9% | 23% |
DET | 46 | 75 - 86 | 112 | 236 | 176 | 303 | 262 | 206 | 323 | 0% | 1% | 4% | 5% | 8% | 19% |
BUF | 47 | 70 - 82 | 104 | 249 | 189 | 306 | 290 | 232 | 351 | 0% | 0% | 2% | 2% | 4% | 8% |
[TBODY]
[/TBODY]
Metro Division
Team | MinPts | Point Range | MaxPts | AvgGF | MinGF | MaxGF | AvgGA | MinGA | MaxGA | D1% | D2% | D3% | WC1% | WC2% | Playoff% |
NYI | 64 | 93 - 104 | 129 | 274 | 215 | 336 | 242 | 180 | 303 | 40% | 27% | 16% | 3% | 4% | 90% |
CAR | 64 | 92 - 103 | 129 | 317 | 248 | 383 | 284 | 216 | 354 | 36% | 28% | 17% | 4% | 4% | 88% |
NYR | 54 | 84 - 95 | 122 | 277 | 215 | 343 | 274 | 212 | 334 | 10% | 15% | 19% | 7% | 8% | 59% |
PIT | 55 | 82 - 93 | 116 | 279 | 217 | 343 | 283 | 226 | 350 | 6% | 11% | 17% | 6% | 9% | 48% |
N.J | 53 | 81 - 92 | 120 | 280 | 223 | 343 | 286 | 227 | 362 | 5% | 10% | 15% | 6% | 9% | 44% |
WSH | 51 | 79 - 91 | 119 | 260 | 205 | 328 | 272 | 196 | 341 | 4% | 8% | 13% | 5% | 7% | 37% |
PHI | 42 | 67 - 78 | 104 | 254 | 194 | 326 | 307 | 243 | 382 | 0% | 1% | 2% | 1% | 2% | 4% |
CBJ | 42 | 66 - 77 | 105 | 239 | 181 | 301 | 294 | 226 | 354 | 0% | 0% | 1% | 1% | 1% | 3% |
[TBODY]
[/TBODY]
Central Division
Team | MinPts | Point Range | MaxPts | AvgGF | MinGF | MaxGF | AvgGA | MinGA | MaxGA | D1% | D2% | D3% | WC1% | WC2% | Playoff% |
COL | 80 | 108 - 119 | 144 | 317 | 248 | 386 | 230 | 170 | 289 | 92% | 6% | 1% | 0% | 0% | 100% |
WPG | 59 | 87 - 98 | 121 | 262 | 205 | 328 | 249 | 195 | 311 | 3% | 31% | 23% | 10% | 8% | 75% |
DAL | 60 | 84 - 96 | 124 | 260 | 203 | 326 | 257 | 192 | 321 | 2% | 21% | 21% | 11% | 10% | 63% |
NSH | 58 | 84 - 95 | 121 | 255 | 199 | 322 | 252 | 204 | 314 | 2% | 20% | 21% | 10% | 10% | 62% |
CHI | 50 | 81 - 93 | 120 | 262 | 207 | 328 | 268 | 207 | 327 | 1% | 13% | 17% | 9% | 10% | 49% |
STL | 51 | 78 - 90 | 123 | 256 | 195 | 332 | 272 | 216 | 334 | 0% | 7% | 11% | 8% | 9% | 34% |
MIN | 45 | 72 - 84 | 110 | 246 | 179 | 320 | 280 | 212 | 342 | 0% | 2% | 4% | 3% | 5% | 15% |
ARI | 40 | 67 - 79 | 104 | 253 | 195 | 313 | 304 | 235 | 379 | 0% | 1% | 2% | 2% | 2% | 6% |
[TBODY]
[/TBODY]
Pacific Division
Team | MinPts | Point Range | MaxPts | AvgGF | MinGF | MaxGF | AvgGA | MinGA | MaxGA | D1% | D2% | D3% | WC1% | WC2% | Playoff% |
VGK | 84 | 108 - 119 | 139 | 320 | 261 | 387 | 233 | 183 | 295 | 80% | 18% | 2% | 0% | 0% | 100% |
SEA | 73 | 98 - 109 | 132 | 273 | 204 | 330 | 226 | 170 | 287 | 18% | 61% | 14% | 3% | 1% | 97% |
EDM | 58 | 82 - 94 | 123 | 289 | 229 | 352 | 290 | 235 | 353 | 1% | 8% | 26% | 11% | 9% | 54% |
L.A | 53 | 79 - 90 | 118 | 268 | 214 | 324 | 281 | 222 | 359 | 0% | 4% | 17% | 9% | 9% | 39% |
VAN | 50 | 78 - 90 | 119 | 266 | 206 | 338 | 280 | 219 | 355 | 0% | 4% | 15% | 9% | 9% | 37% |
S.J | 47 | 78 - 89 | 113 | 273 | 211 | 336 | 290 | 226 | 353 | 0% | 3% | 14% | 8% | 9% | 34% |
CGY | 51 | 77 - 88 | 116 | 267 | 210 | 329 | 287 | 228 | 352 | 0% | 3% | 12% | 7% | 8% | 30% |
ANA | 44 | 65 - 77 | 102 | 236 | 159 | 304 | 293 | 232 | 357 | 0% | 0% | 1% | 1% | 2% | 4% |
[TBODY]
[/TBODY]
So, for Vancouver:
* They finish with between 78-90 points the majority of the time, worst sim was 50 points and best was 119 points
* They score on average 266 goals, allow on average 280 goals.
* They win the division less than 1% of the time, and come in 2nd 4% of the time, 3rd 15%, win the 1st WC 9% of the time and win the 2nd WC 9% of the time, all adding up to making the playoffs about 37% of the time.
Again this is somewhat in line with what I've seen from other projection systems, which have Vancouver making the playoffs 30-40% of the time in simulations.
If you see anything that seems off (except for Seattle being too high

,) let me know! Otherwise, basically going to put this to bed and re-visit it in 6 months.