A deep dive on EV, most likely pull and Rookies in NBA Top Shot’s Series 3 Base Set

I am back with more analysis on the expected value (EV) of NBA Top Shot Series 3 packs and some further content that I think will help sort some recurring issues around EV.

While waiting on the release of the pack details from next Tuesday's Series 3 drop, I ran some numbers on the Release 6 (the last one for which they are available).

Pack EV

Using the usual method, the surprisingly high numbers that I obtained are the following: EV1 = 15.3$, EV2 = 15.7$.

The steep increase in EV imo is due to the price of rookies skyrocketing and the overall effect of challenges. Anyway, an EV of +67% on a pack is really not bad!

Given that the usual critique I encounter when giving such numbers is something along the lines of "most moments are trash, all my packs are worth 6$", I have added some more analysis. I simulated a million random draws from the pack content and calculated the value of each pack. Here is a plot showing the probability of the pack having a value comprised between 5 and 30$.

r/nbatopshot - To buy or not to buy? Deep Dive on EV, most likely pull and Rookies in the Series 3 Base Set 👀
r/nbatopshot - To buy or not to buy? Deep Dive on EV, most likely pull and Rookies in the Series 3 Base Set 👀

Pack EV vs most likely pull

As you can notice, indeed the most likely pull is that of a pack with a value of less than 10$. Regardless of the method that you use, the probability of your pack having an EV < 10$ is around 66%. So how does this square out with an EV > 15$?

The reason for that is that the likelihood of pulling a pack with a value > 20$ is not too different (or better, decays very slowly) from the one of pulling a pack with a value > 50$, or 100$ for that matter. In other terms, the distribution of the values of the pack has a very fat right tail.

This is visible if we extend the x-axis of the last graph and log-transform the y-axis (to better show small probabilities). I only plot one for simplicity, the other one is very similar. From this, you can see that pulling a pack with a value around 180-190$ is actually more probable than any other value above 60$. There are indeed a few moments in that range: Kuminga, Shengun, and Suggs and a few others that are not too far apart (Bones, Duarte and Mitchell).

r/nbatopshot - To buy or not to buy? Deep Dive on EV, most likely pull and Rookies in the Series 3 Base Set 👀

While this might seem counterintuitive, it is due to the fact that the EV is basically a weighted mean (not a median), and is therefore heavily influenced by outliers. If you buy 9 packs and 26/27 moments are trash, but then the last one is a rookie worth 100$ (not so unlikely, see below), your EV will still be strongly positive (152$ of value vs 81$ spent).


Last part of the analysis: the rookies! If the EV is so skewed by the most valuable moments (almost all rookies), what are the chances of pulling a rookie? Here's a plot about that.


When I first posted this analysis, I received some criticism regarding this probabilities. This release is skewed by the presence of Bouknight, a 3-star rookie that has an unusually high mint (12k instead of 4k). The critics were right about that! What happens if we take out Bouknight? By how much does the probability fall? Here’s another plot on that. The 3 lines represent the probability of pulling a rookie with Bouknight included (top line, and as the plot above), with Bouknight replaced by a rookie with a 4k mint (mid line) and simply with taking out Bouknight (bottom line).



Despite all this positivity, I have bought around 15 base packs and never pulled a single moment worth more than 9$ (two Steph and a Gabe Vincent). If we assume that all of those packs were of this release, the probability of a moment having a value < 9$ is 96%. The probability of me never pulling anything better in 15 packs is a mere 13%. But I won't complain too much, as I have had great pulls in other packs.


EV can be misleading and counterintuitive! For this analysis I used a (messy) script in Python, so I can't share the usual spreadsheet. If you are interested- just write to me, and if you promise not to judge me because of the horrible code, I will send it to you. If you spot any mistakes or something doesn't make sense, please let me know. 

Anyway, I am currently working on expanding this analysis, in hope that the community appreciates it. If you have any ideas or requests, feel free to contact me.

Also, if you want to show some ❤ and help me keep this going, don’t be shy about it and send me some of your worst duplicates on TS. My username is gummibaerchen.