Zamboni Manifesto - NHL Playoff Best Ball Sims

Simulating the 23-24 NHL Playoffs 100 times to uncover what works and what doesn't in NHL Playoff Best Ball Drafts

What if I told you there was one simple trick to win at NHL Playoff Best Puck? That would be pretty cool, right?

If my sims have anything to say, there might actually be one core tenet that should drive all decisions you make as a Best Puck drafter for this Zamboni contest.

You might be able to guess it, but I’m going to make you wait. Why? Because I’m a piece of shit, that’s why.

In thinking about how I would analyze the Zamboni data that was made available to us by Underdog, the first place I started was of course the Best Puck Manifesto, my three-piece series from this past summer that dove into, you guessed it, the Best Puck Classic. I gave it a re-read one afternoon recently (no, I was not using it as an excuse to avoid writing up this newsletter, stop saying that) and found that I had forgotten some of the most interesting nuggets about regular season NHL Best Puck strategy. And I wrote the damn thing. With a few months between now and when we can even think about 2025-26 Best Puck, you can certainly use it like I do, as a way to put off work you’d like to get done give me a nice click as a thank you for putting all of this strategy together.

What it didn’t do, however, was make me feel confident that we can translate strategy from that contest to the Zamboni contest. The NHL Playoffs are a completely different game, something that drafters know from playing NFL Best Ball in both the regular season and playoffs. Not only does the intensity get ramped up to 105% on the ice, but the simple game mechanics do a complete 180:

  • All 32 NHL teams will be in action during the BPC finals. Only two will be playing for the Stanley Cup in the Zamboni finals, where the huge prizes wait.

  • Only sixteen teams qualify for the playoffs, and of those sixteen, at most 12-14 are teams that we can feel confident will qualify, let alone compete for the Cup, for the first round of play at this point. Perhaps drafting in the final week before the contest closes will alleviate some of that pressure, but it’s also very hard to draft in bulk for the MMEers at that point.

  • Drafts are made up of six drafters, as opposed to twelve like in BPC. This means that the elite combos will be easier to grab, and better players will be available later.

  • BPC rounds consist of weeks, which tend to have very close to 3-4 games, with the rare exception having some teams hit 5 or 2 games. The Zamboni unit of time is a round, which can range anywhere from 4-7 games. Having the best team in a sweep can be counter-productive, actually, when others get to 7-game series.

  • One final relevant point is the scoring structure: each drafted team starts their best player at each position, plus TWO skater flex spots. This is in direct opposition to BPC, where there is one flex but two W spots, and effectively makes roster construction much looser in the Zamboni.

So how do we combat all of these differences? Well, the first thing I thought was to whip out the same code as the BPC, make a couple changes, and just run this data through it to report back what works when drafting.

Then I realized that was stupid, and I should do something 350x more complicated. Kind of.

In short, there is no way to “hack” the playoff data we have available, like I did with the BPC data, to give us the sample sizes required to draw any useful conclusions. Each playoff series is so overwhelmingly important because only one team moves on, and the length of the series controls how much opportunity drafters get to secure fantasy points from their drafted players, not to mention of course how high-scoring those games are (and even whether one game goes to three overtimes…). Substituting in rd4 outcomes as rd1 outcomes makes no sense, because fourteen teams will get straight 0s across the board while Edmonton and Florida will advance at 100% rates.

Thus, the need for a sim was born. As a certified idiot whose experience with hackneyed R coding boils down to barking commands at an AI agent until I get something that works… this was an endeavor. Here’s how I did it, feel free to skip if you don’t care about the particulars to the bold, underlined section header.

  • I simulated the outcome of each playoff bracket as it stood on opening night of the 2023-24 playoffs. This means that the matchups and divisions were 100% known in my universe. This, of course, is not the environment we draft in during early March, when seeding remains up in the air.

  • I fed all available odds from the 2024-25 playoffs to the robots and received a set of “strength vs. average team” figures back. I massaged them slightly, then established a team ELO using the formula: initial_elo = 1500 + 200 * (avg_implied_prob - 0.5). See below if you’re particularly interested in the end result.

Team

Strength

FLA

0.63

CAR

0.61

EDM

0.60

DAL

0.59

NYR

0.53

COL

0.52

TOR

0.51

VGK

0.48

BOS

0.48

WPG

0.47

VAN

0.46

NSH

0.45

LA

0.44

TB

0.41

NYI

0.35

WSH

0.34

  • These ELO ratings set a range of team strengths that were applied directly to the first round matchup, with a game-by-game build/decay factor implemented to starting ELO based on the game results, as well as a home-ice advantage coefficient (home-ice is known through rd2, I left it up to ELO after rd2, I suspect this is frivilous but also I think helps to avoid overbiasing the results in favor of one NHL team in case my home-ice advantage was too strong). Thus, teams that win more build their ELO rating more quickly, and can level up over the course of the playoffs. This ensures that Cinderella runs are at least possible given the known chaos of the NHL playoffs unlike a league like the NBA (which if anyone has good The Dance writeups from that playoff contest on Underdog, I’d be very interested in reading/comparing!) and that better teams are more likely to play fewer games (because they are winning series quickly).

  • After simulating the entire playoff bracket via the above process, then I worked out an incredibly basic system to apply player-level fantasy points per game. I gave it my best effort to set realistic baselines for all players in this contest based on their actual results as well as their expected results, which I loosely based on ADP. This data was sourced from play-by-play logs from evolving-hockey.com, because date-kept data that is far easier to source doesn’t help when the NHL has a Game 7 on the same day it starts a different series in the other conference with Game 1. The NHL rocks.

  • Most critically, I needed a strategy to assign udpts in a way that resembled real life, where winning teams would likely have better fantasy performances, but not always. This was the only way to ensure that I was not losing valuable signal in the sim process. I even found during this approach that when you group players by position, their win vs. loss game logs take on completely different shapes. Like, what the fuck man, why are you going to do this to me?

    Centers, in losses, have a far greater spread between fantasy performances vs. wins than is the case for other positions.

  • Thus, the player sim pulls from a specially constructed distribution for each player that is also informed by the position they play; the “volume” positions in W and D have less deviation than at C between wins and losses, where the data shows a large gulf between the scoring in wins vs. scoring in losses. I thought this table was cool, too, further proving the need for this elaborate step:

  • I worried this was a McDavid effect (given the outsized importance of his fantasy production on last year’s playoffs…), and after sorting each position into tiers based on fantasy production found that the middle and lower tier of C showed a similar pattern, so I moved on. A very cool finding that one day I’m sure will have NHL front offices falling over themselves to hire me.

  • Armed with playoff sims, I then used these player baselines and distributions to sample fantasy point production, which then allows me to model the UD contest itself. I treated all ~10k contest entries as the field for all simulations, thus all findings you’ll see are actual teams that real people drafted. Off-the-wall strategies that have never been tried need-not apply, though if you have one, put it in place for 24-25 playoffs and maybe you’ll find me writing the 2026 manifesto update about your genius build!

  • Final note, remember that in rd1, 2/6 from each pod advanced last year, PLUS the 226 best teams that did not finish 1st or 2nd in their pod because of contest overlay. These teams were then randomly assigned new rd2 pods of 8, with the top 1 advancing, then assigned new rd3 pods of 5, with the top 1 advancing. The 93-team final then determines the remainder of the prize pool, the totality of which can be found here. $100K in total was paid out for every sim, a fact which I checked and am very proud of (tiebreakers were an absolute bear for my pea brain to explain to the computer). Note that EV calculations that follow are not based to $0, considering that the contest has rake taken out but costs $10 to play. The rake was reduced thanks to the contest not filling, but the field still paid $104,820 to play and received back $100,000.

  • I wanted to run 1000 sims, then 500, but for computer memory reasons was forced to limit it to 100 sims. Bah humbug.

What follows are the results I found after simming the 2023-24 NHL Playoffs 100 times and tallying the results based on real teams drafted in the 2023-24 Underdog Zamboni NHL Contest:

Some takeaways from the 100 sims:

  1. You aren’t stacking enough.

Red = Incidence (Drafts), Blue = Wins

Yeah, you. Also me. Especially me. Six-stacks win 53% of the time, and 7s win 22% of the time in my sims, making a 6+ stack a winner 75% of the time! This is slightly flawed, as this methodology counts a win as a win regardless of whether it was a chop for first place or not, but it is worth considering that 6+7s are drafted at a ~29% rate. That means that 75% of winning lineups came from just 29% of drafts!

I wanted to show the draft rates, however, to set a baseline for my general point of this article: overstacking appears to be the ticket to success. When you look at these same stack types (which are all the types with n>200 attempts, by the way) by EV, which accounts for the ties that are not accounted for above, you get a very similar story:

When you max out at stacks of 4, EV is negative. It trends up for 5s, and peaks at 6, before falling back down a good amount for the 7-5 drafts.

We will focus primarily on EV from here on out, which takes into account the $10 entry fee as well as any payouts received, whether the team made the finals or was eliminated beforehand, per the UD Payouts table.

  1. Stacking at least one team with six players is clearly superior, with even larger stacks also showing out surprisingly well

The below table shows data summarized by the largest stack on a roster - meaning a 5-4-2-1 with 5 TOR players would count as a “5” and not as a “4” or “2” or “1”.

max_stack_size

n

rd2_adv_rate

rd2_to_rd3_ratio

rd3_to_rd4_ratio

EV

win_rate

draft_rate

9

30

0.260

0.147

0.278

4.90

1.4%

0.3%

8

148

0.329

0.159

0.275

4.02

5.4%

1.4%

7

670

0.339

0.160

0.261

6.00

21.8%

6.4%

6

2258

0.354

0.154

0.244

4.47

53.8%

21.5%

5

3631

0.356

0.130

0.189

-1.24

16.1%

34.6%

4

2507

0.359

0.104

0.154

-3.48

1.5%

23.9%

3

1037

0.364

0.079

0.133

-4.94

0.0%

9.9%

2

189

0.314

0.049

0.064

-6.41

0.0%

1.8%

1

12

0.153

0.054

0.000

-8.25

0.0%

0.1%

This table shocks me, in all honesty. I was quite sure that the nature of a PP1 in hockey and the construction of the best teams in the league meant that grabbing secondary pieces was the surest way to lead yourself to an early exit in these contests. But we see that not only is the EV in the later stages far better, but the rd2 advancement figures are basically equal for the 5-6 range as it is for the 3-4 range, and then the later rounds are vastly superior.

Basically, if you have Nathan MacKinnon, Martin Necas, and Valeri Nichushkin, it may actually be worth it to add on pieces like Devon Toews, Brock Nelson, and Jonathan Drouin in the later stages of your draft, as opposed to starting with the studs on a lesser team. Who knew? I sure didn’t.

I feel quite confident in concluding that overstacking is absolutely the correct approach when drafting NHL Zamboni contests.

  1. Draft one or two goalies, it doesn’t matter — but absolutely do not draft three or more goalies.

Reminder that there is rake involved, so 1 vs. 2 goalies is effectively a rake-neutral decision, anything more is catastrophically bad.

This one also surprises me, a little bit. The vast majority of teams take 2 Gs, which makes perfect sense to me. I was a bit surprised to see that 1s were actually (slightly) higher EV. It’s clear in the data that losing the skater roster spot that a third goalie represents is very detrimental to your Zamboni outlook.

G

n

rd2_adv_rate

rd2_to_rd3_ratio

rd3_to_rd4_ratio

EV

win_rate

draft_rate

G_category

1

1856

0.346

0.132

0.213

0.10

24.0%

17.7%

1

2

7599

0.358

0.126

0.201

-0.22

73.3%

72.5%

2

Early advancement advantages (35.8% vs. 34.6%) for 2-goalie teams get wiped out in later stages (presumably where the extra skater matters more with eliminated pieces of rosters), culminating in a win rate of 24% for 1G teams despite them making up only 17.7% of all drafted rosters. This results in a net EV difference of 33 cents, so I wouldn’t confidently state 1 is better than 2, just that both are clearly superior to 3G builds!

  1. Positional Allocation shouldn’t really matter - but Ws still do?

I think this one will require some more deep-diving, as in theory Cs and Ws should be interchangeable with 3 of each being able to be scored each round, as opposed to Best Puck where only two Cs can score in a week as opposed to three Ws.

My theory on why EV is highest for 5 & 6 W teams, and pretty poor for 3 & 4s, is that it is very difficult to stack 6 players from a team without getting a bunch of Ws, especially since few teams have more than 2 viable C options. With double the Ws per team, we could just see a factor of the earlier Stacking notes playing a role here in the data.

The data does seem quite clear though that we should only be drafting two defenders per Zamboni team. The lowest-scoring position in fantasy doesn’t require much investment to produce usable scores, as-tested by nearly 4,000 drafters last year whose results when drafting 3D fare about $1.20 worse in the aggregate across all 100 sims.

  1. Last year’s Zamboni Winner, countmc, was a very deserving winner.

The cool part about running the sims on real drafts is that I get to judge actual drafters, as well. Something very interesting that I noticed is that last year’s winner, countmc, also crushed my sims as well. In fact, the following team won in FIVE of the entries, which you can see a classic COL alphas mixed with a TB stack with both a Marner and Bennett one-off. Very solid. I’ll tease it, but I think there is some signal that avoiding teams in the same divisional pod is generally +EV, but it wasn’t strong enough to include in this rendition.

The fact that the literal winner looks so good (he won with a 6-6 FLA EDM, by the way!) across his entire portfolio is very encouraging that I am not too far off base. I know countmc is an incredibly sharp and thoughtful drafter, so it is nice to see him pop up here.

Here’s a fun graphic with the top drafters, in my sims, in last year’s contest, as graded by average profit (taking into account number of entries and the payouts associated). My ~32 drafts were among the losingest in the entire contest, so you’re welcome for my donation. Once again, countmc crushed it in these sims, and in the real thing. Kudos to a great playoff run, both in reality and in the metaverse!

That’ll do for now, but on my radar are a better sense of “how” to stack (positions, ADP, etc.) and some more elaborate dos and donts as far as the playoff pathing is concerned. I’d love to dive deeper into “what wins in certain setups” such as cinderella runs (when teams are 100% drafted, for example), or when the conference finals finish in a sweep + in 7 games, and so on, but there are so many combinations of factors that I am not sure 100 sims is enough to cover those. I’ll toss more ideas around, but I think the stacking questions are more attackable for the time being.

If you have any specific questions, feel free to float them my way on Twitter, @FakeMoods, in the Morning Skate Podcast Discord (#dog-app channel), or in the Deposit Kingdom Discord (#badge-bros #puck thread). I can’t promise I’ll be able to answer them, because I’m a relative novice at this, but I’d love to hear your feedback and what you’d like to see.

Now, with just about a month to go until the playoffs start.. I need to get in these lobbies to press this newfound edge.

Happy Drafting, and thanks for reading!