The NBA draft lottery is broken at both ends. One is readily apparent from watching the 76ers tear down every asset they own in exchange for future assets and a large number of losses so as to end up at the very top end. The other is a little more subtle – the Detroit Pistons have, in every single year since 2008 when the last gasp of their most recent championship team scraped out the 29th overall pick, picked between 7th and 18th, including 6 of the 8 picks in that range between 7 and 9. Detroit, as a result, has a roster packed with middling talent that’s just a little above average at their position, and while that gives them just enough strength to narrowly make or miss the playoffs, it doesn’t give them much hope for a truly strong season.
There are three goals that, in order to fix the random system, must be pursued:
First, the draft is used as a primary tool to create competitive balance or parity. As such, the goal should be that the further a team is from competing, the more likely a higher pick. This is already held to be true in the existing lottery system since the top picks are extremely likely to go to teams with the worst records.
Second, since in the NBA the marginal returns of going from the bottom to the middle are smaller than the marginal returns of going from the middle to the top, teams that are in the middle also should retain some reasonable chance of a higher pick. The current system actively works against this goal, since the chances of a team that’s near the middle of the league moving up are incredibly small.
Third, because we’re working with a pure random system, there needs to exist some countermeasure to prevent extreme results from affecting competitive balance too much. This can be seen in the current system as a byproduct of only picking the top 3.
In order to evaluate the success of any system, then, we need to establish some kind of estimate for what the value of the average pick is. The model here is as follows:
Value + m = e Pick × α + c + et
This model assumes, effectively, that in order to move from pick n to pick n+1, you decrease the value of the result by multiplying by some constant value k, which is represented by e raised to the power of alpha in the model. This will most accurately represent the diminishing marginal returns to losses
Estimating the value of alpha by linear regression, then, allows us to estimate the value of pick n by substituting in n to the model. In order to account for the ability of VORP to take negative values, we add a value m to all the dependent variables such that m is equal to the absolute value of the minimum of the set of VORPs plus some small positive constant. It is also important to note that the VORP variable is equal to the sum, for a player, of the VORP accumulated across their first stint with their first team.
The value for each lottery pick, then, is shown in the table below.
This regression was run using only data from the lottery picks, due in large part to how that will be the only results that we’ll be looking at. Further, due to the heavily random nature of the later picks, the results start to get a little crazy since you start to see large outliers in the 2nd round. As a result, the percent changes flatten out on average, which results in absurdly inaccurate numbers for the highest picks. Basically, instead of the 4.3% decrease per pick shown here, you’d see a .8% decrease, and the largest value taken was 3.17 in contrast to the 6.74 seen here. Since the average at first overall is over 10, the smaller sample result is preferred.
With these values, if we know the probability of each team taking any given spot, we can estimate the expected value of the draft position by summing the product of the probability of taking the position and the value of the position. The table below shows the probability of ending up at a specific pick given your ranking in lottery odds based on a Python simulation of the lottery that I ran one million times. There is a small amount of error, but every single one is, I believe, within .0005 of the true value, which is a meaninglessly small number amount of error and I don’t really have the computational resources to go further.
The resulting expected values are as follows:
As you can see, the existing system already reduces the value of being the worst overall team and claiming the best lottery odds from one that purely gave places based on an ordinal ranking. However, what you can also see is that the existing system fails under goal 2; Not only is the value of the 14th overall lottery odds low, it’s not that much different than under a pure ordinal ranking, and as a result, the team in 14th adds too little value to be able to reliably move up. Further, this produces some extreme swings based on pure random results, failing goal 3 as well.
The first solution I’m going to propose is one that also eliminates a relatively arbitrary element of the lottery: Pick all 14 spots instead of just the top 3. Using similar Python code, the new simulation produces these odds and expected values:
This accomplishes goal 1 and 2; There’s still a large amount of value going over to the team with the best lottery odds, but the team with the worst lottery odds takes a huge leap in value gained. The problem with this system, however, is that it produces some extreme results. 1 in every 33 drafts, on average, the team with the worst overall record will drop to 7th, which is a huge dropoff in actual value. That’s just at the level of frequency that it needs to be planned for, and so we’ll add an additional step into the simulation: We’ll guarantee that no team drops more than 3 spots below their odds rank. So if you have the worst odds, you won’t pick worse than 4th. If you have the 7th worst odds, you won’t pick worse than 10th. While this does still allow for some crazy jumps upwards, those don’t tend to project to have too bad of an impact on the competitive balance in the league. For a team that’s just outside the playoffs, even adding something as unlikely as a number one overall pick, doesn’t move them into being over the line with regards to competitive imbalance. Thus, simulating this one million times in Python produces the following odds and expected values:
This, then, meets all 3 goals. The team with the best odds retains the strength of their pick from the current system. The team with the worst odds, meanwhile, gains a large amount more value than under the current system – an amount comparable to what they would’ve gained under the full draw. And finally, there are no catastrophically bad randomly generated results in which a team’s future is set back by a year because of a random number.
The next graph is presented to visualize exactly how the 3 systems compare.
This makes it much more clear who stands to gain from each system and also demonstrates the superiority of the 3rd system in achieving the goals set out. It retains the rewards present in the current system to help truly bad teams recover, but for teams late in the lottery, it gives comparable gains to a full draw while eliminating the risks that the full draw has of causing truly bad teams to have no choice but to remain bad because the lottery balls fell wrong.
Thus, in order to fix the lottery, the most obvious step one is to switch to the system I’ve proposed: draw the full lottery, but guarantee that no team drops more than 3 spots below their odds rank. This strengthens the position of teams in the back part of the lottery, and, as a result, increases the opportunity cost of tanking. Which is to say, if there’s a true and semi-reliable path out of the treadmill of mediocrity, we might not have to watch another team do what the 76ers did, because it’s less beneficial of a decision. Further steps may need to be taken, sure – team strength and record aren’t perfectly aligned, for example – but this is a solid first step that would absolutely benefit the NBA’s lottery teams.