For the past several seasons, I’ve attempted to predict the win total for the Raptors using various player value measures and their correlations to win rates. I’ve tried to keep my approach fairly consistent, with small common sense tweaks each year.
The model I used last season used only boxscore-derived stats from basketball-reference (win shares, and wins over replacement based on their box-plus-minus stat). The win totals were over-predicted, partly because I tried to keep my hands off the numbers as much as possible. I used a very simple pro-rating of minutes from the previous season, meaning some (really good) players ended up with ridiculous minutes loads. I also made no league-wide adjustments — so every team had too high a win prediction by 2-3 wins. This year I hope to remedy those issues, as I will outline below.
Before we get to that though, how did the model do last year? It predicted 58 wins for the Raptors (which was obviously high), but applying the minutes restrictions and adjusting the totals down league wide, it would have predicted about 54 wins. Part of this was a simplistic approach to the WORP statistic, which resulted in an exaggeration of win totals, which I’ll take a different approach to this year. Another part is obviously the various injuries and roster changes the Raptors went through during the year, and of course there are always errors in the minutes assumptions and player performance projections no matter what we do.
Since we’re changing a few things, let’s just quickly go through the entire process. I’ve simplified it this year (even while adding another statistic to project with), so this will be relatively quick.
First things first, we work entirely from data from the previous season. If a player had an unusually good or bad season, or an injury preventing them from playing many minutes, that will directly impact these projections. To avoid this would be a lot of work, and more importantly, would require manual manipulation of the data — which I try to avoid as much as possible to keep my bias out of the model.
So, the three stats we will look at to evaluate player value and project that into wins for a team are:
1) Win Shares (WS): this statistic from basketball-reference.com is the most widely used boxscore win aggregation statistic (a cousin to Wins Produced — I prefer win shares, personally, so I’m going with that). Essentially a measure of how many wins a player generates for their team, often expressed in a rate form (per 48 minutes played), and based on box-score measurables: efficiency, rebounding, and very basic defensive stats.
2) Box-plus-minus (BPM): this statistic from basketball-reference.com is a sort of middle ground between raw box score aggregations like WS and PER (player efficiency rating), and the new “impact” statistics like adjusted plus-minus and Real Plus Minus. It is derived from running regressions between box score stats and a form of adjusted plus-minus, to determine which box score stats tend to represent players who have an impact on the game.
3) Real Plus Minus (RPM): this statistic from ESPN.com is an impact stat, an attempt to capture a player’s value that doesn’t show up in the box score. It is the latest in a line of adjusted plus-minus stats that attempt to isolate the reasons a team is winning or losing any given set of minutes — assigning blame or credit to the various players on the floor. It’s complicated and the full background would take ages to explain, but consider this the most advanced and least reliable (in small samples like a single season) of the stats we are looking at here.
So for each player currently on the team, we grab their total minutes played last season, their per-minute win production (by win shares), their BPM, and their RPM.
The first modification we make to those numbers is to the minutes played. We look at the total minutes attributed to a team for the coming season, and if they don’t sum to 19,860 minutes (5 positions, 48 minutes, 82 games), then the minutes need to be adjusted (either up or down). So we apply a factor to every player’s minutes to get the total correct. Last season, this led several times to insane minutes allocations for players. To avoid that this season, I’ve placed an artificial cap of 3,000 minutes for any one player (roughly in line with the most minutes played by any one player last season, 3,048 by Andrew Wiggins). This means a few players will not be fully pro-rated up. To simplify things, those extra minutes that don’t get assigned because players are hitting that 3,000 MP cap, are just assumed to be of zero value to the team.
Ten different teams are impacted by this, with a null value assigned to between 100 minutes and 800 minutes of playing time. Those are very small numbers, representing at most four percent of a team’s playing time.
Once the minutes are assigned properly, they can be used to get win values for each player. For win shares, it is very simple. Just take the player’s per-minute WS production rate and multiply by the new total minutes played. Then you simply sum all the WS values for the team, and you have your win total.
The BPM and RPM approach is different. These two stats take the form of a “plus-minus,” or a point differential for the team. So for these stats, instead of summing them, we take an average - a minute-weighted average for the entire team. That gives us the average point differential for the team’s players.
From there, we figure out an expected points for and points against. Since there are five players on the court at any time, we multiply the players’ average point differential by five to get the team’s average point differential. Then to find a pythagorean win expectation, we apply half of that point differential to a generic points scored value (we’ll say 100 points here), and the other half to a generic points allowed value (again, 100 points). So, for example, a team with a predicted point differential of +6, would have predicted points scored and allowed values of 103 and 97, respectively.
Then, the pythagorean wins approach is as follows:
Wins = 82 * (Points Scored ^ 14) / (Points Scored ^ 14 + Points Allowed ^ 14)
So, that’s the approach. We apply that method to every team in the league, and come up with three different predicted win totals for each team.
There are small adjustments to be made league wide at this point. The average win total predicted for the league has to be 41 wins, so if the league average win prediction comes in too high, every team will be adjusted down to bring it in line.
In our case, the average win predictions for the three approaches came in at 42.8 wins (WS), 43.9 wins (BPM) and 43.3 wins (RPM). So win predictions for each team will be reduced by 1.8, 2.9 and 2.3 wins respectively.
What do the numbers say? First, here is the breakdown of the player values for the Raptors, showing last season’s values (minutes played, WS/48, BPM, RPM) and this season’s projected values (minutes played, total WS, minutes-weighted value of BPM and RPM).
Keep in mind, these are not my personal predictions for a minutes distribution — this is purely a pro-rated value for every player on the team based on last season.
Those results all sum up to 56 wins (by WS); 52 wins (by BPM); and 49 wins (by RPM). So that’s not a terrible projection, considering no improvement is considered for young players like Powell, Siakam, Wright and Poeltl.
But let’s look at the predicted standings (using the average of all three win results), to put that in context.
Again, keep in mind, this is all done with as little manipulation or input from me as I can manage.
A few things stand out. Cleveland doesn’t look great, as stats can never really capture the value of a player like LeBron. But a big chunk of why they look worse is the model assuming Derrick Rose will play a lot of minutes for them. Charlotte is beloved by the stats, as always. They disappointed last year and could easily do so again this year. Out west, the Clippers look like they survive Paul’s absence pretty easily, even as Houston gets a big boost from his arrival. And that East-West imbalance looks very real. 12 of the 15 West teams are predicted to finish with a better record than the 8th seed out East (the Knicks, and that’s all you need to know about the East right now).
Obviously there are all sorts of assumptions herein that might not play out — like Charlotte or New Orleans or Minnesota playing up to their collective talents. But as an early look at the raw numbers, this is what the league could well look like come next spring.
As for the Raptors, as much as I think the model is underrating the Cavaliers, if their seemingly pending collapse is really on its way, this shows that the Raptors are as poised as anyone to take advantage of a power vacuum in the East.
All stats and player-team assignments are pulled as of July 26th. A few minor moves have happened since but mostly fringe signings and waivings, so the big picture shouldn’t be impacted much.