Finding the Most Clutch NBA Team of the 2020–21 Season Using Python
With the NBA Playoffs soon coming to a close, and (unfortunately) the LA Clippers getting eliminated in the Western-Conference Finals, I delved deeper into finding the team that came out as the most clutch in the regular season. While ‘clutch’ is a broad term used to define a pressurising or pivotal moment in the game, to begin with — I will be defining a ‘clutch’ team as one that is able to score high in the 4th quarter. I will then be qualifying said definition to only the last 5 minutes of a game when the point difference is 5 or less.
The GitHub repo of this project can be found here.
Data Used
I opted out of using a Kaggle dataset for this project — which I was in the habit of doing prior to the same. Instead, I decided to use the NBA Stats API to make my own dataset. The process of the same can be found in data.py and clutch_data.py of the GitHub Repo. The datasets themselves conform to the names of the python files with a .csv extension. Do feel free to use them.
Execution & Analysis
The final dataset consisted of teams with their respective average scores by quarter. You can find a comprehensive Dataframe of the same in data.csv. Through a simple eyeballing of the data I found that the average Q4 scores ranged only from 25 to 28. The team that scored the highest in the 4th Quarter on an average in the 2020–21 season was the Utah Jazz — the number 1 seed in the Western Conference — with an average of 28.42 Q4 points. Similarly, I also found that the Miami Heat had the lowest average Q4 points — 25.32.
Highest Scoring Team: Utah Jazz; 28.41666667 Points
Lowest Scoring Team: Miami Heat; 25.31944444 Points
The Problem
You may have noticed up till now that using Q4 average scores to answer this question seems far too simple of an idea. This is true. I merely wanted to start with this to use as a control further down the line.
In either case, to enumerate some of the issues with Q4 averages:
- The stat does not account for overtimes, which are inarguably more pressurising and thus have more room for ‘clutch’ performances.
- It is unable to include whether the team won or lost the game, which is almost as if not more important than the stat itself in answering this question.
- The defensive strengths of the team are undermined when only the score is looked at. For instance, if a team is clutch in blocking and rebounding, it is as important to note the same as it is to note a team being clutch in scoring.
- The measure does not account for a point differential in the beginning of the 4th Quarter. Again, for instance, let’s paint two scenarios. First, Team A and Team B have a score of 90–75 going into the 4th, and the final score is 115–85. Second, the initial score of the teams is 90–75 and the final score is 98–100. In this case, Team B’s performance in the second scenario would be regarded as clutch as Team A’s in the first scenario. However, upon noticing the point differential, Team B was clearly more clutch.
I can perhaps find a few more irregularities, but these 4 are enough to work on for now. Luckily, Stats NBA came up clutch (ha-ha) in our time of need. It has an entire data section devoted to clutch moments in games. Stats NBA defines clutch moments as the last 5 minutes of a game where the point differential is 5 or lower. This takes care of problems 1 and 4. Let’s see what we can find with this.
Deeper Clutch Data
A few stats that I found which would prove useful are:
- Plus/Minus (+/-): This simple metric measures the ratio between points scored and points conceded. This would take into account the team’s offensive and defensive ability in such times — and would indirectly include points, rebounds, blocks.
- Minutes Played: An account of the minutes a team has played in the given clutch situation.
- Winning Percentage: The team’s winning percentage given that the game had a clutch situation at the end.
Using these 3 metrics I made a simple score, which I have since dubbed the KLAW score (Kawhi Leonard is the most clutch player to play the game I have subjectively seen).
To find the the clutch efficiency of a team, one could multiply the minutes it has played with its winning percentage. This would then imply a metric which measures the effectiveness of every clutch-time minute towards a win. Further, this metric could be multiplied by the plus/minus to see the team’s offensive and defensive abilities in these moments. I also considered some other permutations within these metrics and other metrics, but found these to be the strongest. The KLAW score formula is as follows:
KLAW Score = (Avg. Mins. Played) * (W%) * (Avg. +/-)
Behold, the KLAW scores of all 30 NBA Teams during the 2020–21 season:
A few remarks:
- The Trail Blazers are the most clutch team this season by a landslide. Their total +/- in the clutch is 112, with the second highest being 57 by the Lakers.
- As can be expected, the Minnesota Timberwolves, owing to their poor clutch skills, finished 13th in the Western Conference.
- 18/30 teams have a negative score, which means that they had a negative +/-. This further implies that the top 12 teams are significantly more clutch than the rest, winning more clutch games than losing them.
- The KLAW score does not seem to correlate to a team’s standing in the league or its conference.
- The Oklahoma City Thunder is a clutch-neutral team, with a 53% winning percentage and 0.0 KLAW score.
- Eastern Conference Seed #10 Charlotte Hornets is number 4 on the clutch list, and one of the only two teams who cracked the KLAW top-10 list without advancing to the playoffs.
Conclusion
Overall, I’m happy with the KLAW scores. They seem to be working and do represent somewhat of what I thought to be the potential results, barring a few exceptions.
Future Work
I intend on creating a small library forking the NBA API which I’d be able to use to pull the data simply. I’m fairly certain the code I used to create the first data was inefficient and required a lot of requests. I spaced it out using time.sleeps, but I do think there must be a simpler way of acquiring quarterly data. I’ll be doing more research and perhaps fixing the same. I further want to conduct a similar analysis for the teams in the Playoffs — which I will do after the Finals are over. Finally, I’ll also be calculating the KLAW score per player, and see if there are any patterns between those and the teams overall — perhaps signifying clutch players over clutch teams.