Skip to content

dparmar16/NBA-Predictions-2020-Restart

Repository files navigation

NBA-Predictions-2020-Restart

With the NBA season getting underway in the Orlando bubble, I decided to simulate the rest of the regular season along with the playoffs.

Behind the Idea

This idea originated when I was looking at elo data on FiveThirtyEight, a data journalism website, along with a simulation done by ESPN. The elo method is a measure of strength based on game-to-game results, originating in chess but applied to other domains, with a value of 1500 indicating a league-average NBA team. Elo is a zero-sum system, meaning that when one team gains a certain amount of elo from a win, the defeated team must lose the exact same amount of elo. Elo changes are based on the strength of the two teams - a team gains very little elo from a win over a massive underdog compared to beating a similar strength team.

Methodology

To do this, I used Anaconda, which allows for a Python environment via a Jupyter notebook. Within the Jupyter notebook, I reconstructed the logic of the regular season games, the play-in tournament, and the playoff games. I constantly updated team strength as I went, and I recorded where a team ended up in the regular season standings as well as each successive playoff round reached.

Assumptions

Before I show the results, let's go through assumptions that I made, as well as how others can experiment with the code.

  • I did not modify team elo values with home court advantage. This is because we do not yet know how this will affect teams in this fan-less setup.
  • For each team, I look their game-result based elo value (how the team has played to this point) as well as FiveThirtyEight's full strength elo (based on player advanced statistics). To obtain each team's  "starting" elo for this restart, I weighted their game result and full strength elo's (50 percent weight on each). One could change that weighting, or even change elo values all together.
  • Once the teams start the regular season, they will have elo changes with game results. For the start of the playoffs, I weighted their regular season starting and ending elo's (50 percent weight on each). The logic is that we want to regress teams to their true mean, and we don't want to give too much credit to an 8 game hot streak.
  • For the playoffs, I did not update team elo values within a given playoff round, waiting until after they won to give a new value. This was ensure, for example, a team that went up 2-0 did not get such an elo boost that the other team had a slim chance to come back and win.

I left comments in my code for where one can update parameters and see different results. My work relies on various assumptions, and I wanted to leave the door for others to make changes. To see the output, either look at the Jupyter notebook or look at the "Images" folder.

Insights

Some insights from these simulations:

  • The championships won passes the eye test. Milwaukee, the Lakers, and the Clippers are at the top, followed by frisky Boston and Toronto.
  • The Lakers get to the second playoff round nearly 94 percentage of the time, meaning that the models don't give a lot of credence to the teams competing for the 8th seed in the Western Conference. On the other hand, the Clippers only reach the second round 88 percentage of the time, which is due to the stronger quality of teams, such as a dangerous Dallas team, which could end up as the 7th seed.
  • The model likes Houston. They make the Western Conference Finals more often than Denver and Utah, two teams they are likely to be seeded behind. This is due to the high "full strength" elo that FiveThirtyEight gives them.
  • Although Milwaukee has been an unstoppable force this season, the model sees them making the NBA Finals less than 50 percent of the time. Elo really likes both Toronto and Boston, and each of them make the finals in about 20 percent of simulations.
  • Although Miami has played well this season, elo doesn't like them very much. They don't win a championship in a single simulation, while non-contender Orlando does.

Follow Up

Feel free to reach out if you have any questions or ideas. My email is found in my profile.

About

Simulate and predict the NBA regular season and playoffs as the 2019-2020 season resumes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published