Iāve been experimenting with a play-by-play metric for a long time, hinting about it here and there and providing beta results, but Iāve never fully published the numbers before. With a wild free agency period winding down during the dead summer period, I thought now was the appropriate time to make a few last tweaks and finish it. This is a statistical plus-minus metric in the same family as BPM or others like Nylonās own DRE, but the difference with Dredge is that it uses the full breadth of the available stats found in play-by-play logs. There are many metrics out there, but most are outdated and metrics are still important as baseline value measures. The box score is limited and its earth has been scarred from repeated excavations. We have 20 years of play-by-play data, and itās time we fully unleash its power.
Methodology
The model setup is pretty basic: Iām trying to predict 15-year RAPM with a bevy of stats, from the simple, like minutes per game, to the advanced, like versions of usage rate. The 15-year RAPM model is used as the dependent variable because itās not directly influenced by the very independent variables Iām using to predict it, and in a large enough sample its issues with noise and collinearity are reduced. That is the standard way to construct an SPM, by the way. I also dropped players with fewerĀ than 3000 total possessions and weighed everyone by possessions too, so that, say, Kevin Garnett has more weight in the model than Anthony Davis. If you want to read more about my model philosophy and a description of some of the stats I used, this twoāpart article is still relevant. Note, however, that the aforementioned article was for a SportVU metric (and one that is no longer possible because shotlogs and other stats have been taken away by the league.) But the model construction is extremely similar.
More from FanSided
- Patriots backup plan for DeAndre Hopkins is a shot in the dark
- Raiders: Saquon Barkleyās new contract may have screwed over Josh Jacobs
- Clark Hunt throws cold water on potential Chiefs throwbacks
- Packers: 3 free agency mistakes Brian Gutekunst should already regret
- Cowboys give a masterclass in defense construction with Trevon Diggs extension
The final model was chosen after careful consideration of the variables used and out-of-sample testing to verify the validity of the results. I was hesitant at including a variety of interaction variables ā separate variables combined in ungodly ways, basically, like REB%*AST% ā because of the fear I was overfitting the model, but the results were more predictive out-of-sample by a significant amount. The same was true of the team adjustment I used and some mean reversion, which I applied in the same manner as I had done with the HBox metric. Since the sample data ranges from 2001 to 2015, I have seasons 1997 to 2000, as well as 2016, available for testing. For that earlier period, you can see how the metric performs compared to a couple of stalwarts: basketball-referenceās BPM and ESPNās PER. Stats from the metrics were used from a previous season to predict a teamās rating the following season, where the difference is calculated by root-mean squared-error and weighed by the amount of minutes given to new players. Dredge performs well there, even though one of its most important variables, offensive fouls drawn, was not available in that time period[1.]. This is true even when the other metrics use mean reversion too, which helps with low minute players. The zero metric sets every player at 0, while the team adjustment one gives equal weight for every teammate based on the teamās rating. That is the standard benchmark any halfway useful metric should beat easily[2.].

And if youāre wondering, since the model was tested only up until 2015, Dredge outperformed BPM in predicting 2016 as well.
Finally, the name is derived from the fact that I used the glmnet function in the program R, as Iām using a net to ādredgeā variables from play-by-play logs ā we have enough acronyms in the NBA world.
The Variables
For some transparency and utility, Iāve provided the coefficients for a simple version of the model (i.e. no convoluted interaction variables.) Everything is an advanced stat or in the form of per 100 possessions. Note that the following model is not a predictive model and is merely being used to express pertinent variables and their worth. These are variables Iāve experimented with for a while now; the discoveries are pretty old but I have not seen them all discussed before publicly.
MPG: 0.132
Minutes per game is an old standard for an SPM, and it does well because of something simple: better players generally play more minutes. Also, players themselves perform better when given reliable and longer stretches in games.
PtsOverAvg100: 0.872
This stat is efficiency but itās combined with volume too. You can view it historically here.
Shot%: 2.24
Shot% is my version of usage% (sorry Neil Paine); itās usage but without turnovers. The scale is from 0 to 1, so a coefficient of 2.24 is significant but not overwhelming. It can also be viewed historically here.
UnAstShot%: 0.841
Since players get credit for assists, they should get more credit for unassisted shots. Thus, the product of unassisted FGM% and shot% has a little bit of power in my versions of Dredge, even when the interaction variables are used. Point guards have the highest unassisted rates.
Ast100: 0.0580
Assists by themselves have very little value, which is probably a surprise to people unfamiliar with SPMās. BPM, for example, does not even use assists by themselves in the final model.
AstDunksLayups100: 0.352
There is, however, one version of assists to do well: assists that lead to dunks or layups. Empirically, this states that our current method of tallying assists is incorrect because assists that lead to jump shots should not be lumped in with assists that lead to shots at the rim. Steve Nash, by the way, had one of the highest rates of dunk/layup assists to total assists during his magical Phoenix Suns run. Additional note: I tried including three-pointers because, you know, a three-pointer is an additional point, but it did not hold up to testing.

TOV100: -0.407
Turnovers are self-explanatory. This is one of Chris Paulās best attributes, by the way, because he has roughly one entire turnover less than other players with his assist rate.
StolenTOV100: -0.083799117
Since steals are very valuable and even have value for offenses, it follows that stolen turnovers should be penalized more than other turnovers. However, in the linear model stolen turnovers, for whatever reason, had a lower coefficient than in the fuller models. From my own research, it appears stolen turnovers have twice the negative power of all other turnovers. This should probably appear in the defensive section, however, as most of its value is there ā a stolen turnover leads to a fast break frequently.
3FGA100: 0.0376
This is just three-point field goals attempted; itās a simple spacing effect. You can read more about spacing here.
3FGA100PosAdj: 0.0126
Technically, this is an interaction variable, but Iāve used it so long Iām confident in it. The formula is 3PAper100Poss*(Position+3) where position is on the scale of 1 to 5. I also adjust position with height, which gave better results overall.
PFsDrawn100: 0.0846
Hereās a non-box score stat with some value ā fouls drawn. Free throws attempted doesnāt go far enough because thereās value in drawing fouls in other situations too, of course. Note that the plus/minus dependent variable used for this model probably underrates fouls drawn because a playerās team doesnāt fully reap the benefits of drawing a foul until the penalty is finally reached, at which point the player might be on the bench.
OREB%: 3.87
For the last pure offensive variable, thereās offensive rebound rate. The scale is from 0 to 1
Stl100: 1.33
Steals were one of the big finds from statistical plus/minus models. Theyāre highly valuable. If you split by offense and defense, additionally, about 0.25 of that value goes to offense and the rest to defense. Steals lead to better offensive opportunities because defenses are not set.
OffFoulsDrawn100: 1.22
Hereās one of my favorite discoveries, and itās made it into other models: drawing an offensive foul, which includes more than just turnovers. In fact, if you split the fouls by charges and non-charges, non-charges were more valuable. This is perhaps a good proxy for physical, āgrittyā defenders or just guys who are more active on defense. Note that three of the players with the highest career rates are three of the most prominent āno-stats all-stars:ā Shane Battier, Nick Collison, and Jason Collins. Unfortunately, offensive fouls are only available for 2006 to the present, plus the 2001 season, strangely.
BLK100: 0.236
Blocks are like assists to offense: in their pure form, theyāre highly overrated.
Russells100: 0.445
One reason blocks are overrated is that they often are just rebounded by the offense and lead to a basket anyway. Thus, I ācreatedā the Russell, which is a block that the defense recovers. You can read more about block types here.
Blocked0to5Ft100: 0.523
Blocks at the rim were the most valuable, which makes sense ā thatās where the highest FG% is. Big men usually have higher rates of blocked shots at the rim, and this is a half-decent proxy for rim protection (itās much better than just pure blocks.) Blocking a three-point shot did not, however, test well, by the way.
DefGoaltends100: -2.75
Hereās one of my most interesting discoveries[3.]. And yes, that coefficient means a defensive goaltend is worth nearly negative three points per 100 possessions. In more complex models, the coefficient drops to a āmereā -1.5. For direct impact, goaltending obviously gifts the opponent a couple of points, but thereās a chance the shot was going to go in anyway. I think the stat is also a proxy for guys who chase blocks at the expense of good defense and may also penalize the huge, athletic guys who show up on the box score but make a few mistakes on the court. The player with the highest rate (minimum of 3000 minutes in my 2001-15 data-set), by far, is JaVale McGee at 0.94 per 100 possessions, and heās followed by Samuel Dalembert, Joel Przybilla, Dwight Howard, Bismack Biyombo, and Tyrus Thomas. A couple of those guys were really good defenders ā Joel āthe Vanilla Gorillaā Pryzbilla and Dwight Howard ā so this isnāt a perfect indication of defensive prowess. But itās an important addition because at the very least players should be debited for giving the opponent those points directly, and the recently retired Lord Tim Duncan has the lowest rate ever for a player with a significant amount of blocks. He had 3020 career blocks to 15 total goaltending violations ā and yeah, thatās less than one per season.

TechsFlgs100: 1.25
For an esoteric variable no one would think is valuable, itās hard to beat this one: total technical and flagrant fouls per 100 possessions. Originally, I included it because I thought it would make sense to penalize guys for giving the opponent a free foul shot, but oddly enough itās positive and worth about the same as a steal. The value remained high even in more advanced models. I would like to christen this variable the āRasheed,ā as his Ruthian stats here are unbreakable ā 41 in 2001 ā and no one has a higher career rate either. I realize how bizarre it is that such a negative stat has a positive correlation[4.], but this a proxy for, well, feisty defenders and guys who fight hard in the paint, from Anthony Mason and Jerome Kersey to Karl Malone and Larry Sanders. Like a few other defensive stats Iāve found, the biggest positive is simply being active on defense, and being active means youāll find yourself in more situations where you can pick up a technical foul. And, remember, model donāt lie.
PTS_FB100: -0.0499
This is fast break points per 100 possessions, as defined by stats.NBA.com. This has a small effect, but I believe this punishes serial gambling defenders and superstars who pick up a large number of steals but have few responsibilities on offense. Corey Brewer is the prime example of the former, and Russell Westbrook is an example of the latter. I will note, however, that fast break points have a positive correlation for an offense-only metric, so the effect is even greater on defense. I do wonder if this says anything about guys who create steals but donāt finish fast breaks. Will the model overrate them or is that a good attribute?
DREB%: 6.48
Lastly, thereās defensive rebound rate. This is one variable that needs a transformation because of the nonlinear nature of the variable (i.e. your rebounds go down when you switch to a team with many other good rebounders) and because not all rebounds are the same. Splitting rebounds by FGs and 3PGās, for example, is a good start. And, yes, defensive rebounds are found to be more valuable in this model than offensive, but direct comparisons canāt be made to, say, BPM because BPM uses rebounds in the interaction term AST%*REB%.
Thereās one variable that didnāt show up in the simple linear model but has in other iterations, and Iāll be nice and share it: loose ball fouls per 100 possessions. Like offensive fouls drawn and technical fouls, itās a proxy for hustle or grittiness, perhaps. Even though itās a foul, it signifies that a player is fighting for a loose ball, which is a positive act and a sign that a player is, well, actually trying. The coefficient is low, usually around 0.33, but itās something to consider. The rate league leaders include ferocious rebounders, like Danny Fortson and Jeff Foster, to defensive players with high reputations like Alonzo Mourning and Dikembe Mutombo ā and, of course, Nick Collison is among the leaders as well. Luckily, the NBA is now tracking loose balls recovered, not just fouls, so that could become one of the more valuable and interesting defensive stats out there.
The last steps are a team adjustment and a mean reversion, which done in the same manner as HBox. Basically, the players are adjusted so their sum ratings equal a teamās own rating, and I also adjust team ratings for three-point and free throw defensive luck.
The Numbers
In the embedded sortable table, you have access to Dredge for every player from 1997 to 2016. In time, this table will be expanded to include other variables as well. The highest rating belongs to 2016 Stephen Curry, unsurprisingly, which aligns with the results from many other advanced stats. Most of the other top marks are taken by LeBron James and Kevin Durant, twin exemplars of efficiency and all-around play. And despite a lack of gaudy box score stats, Kawhi Lenoard is ranked sixth in Dredge. If youāre looking for other top seasons from a few legends, Kevin Garnettās highly regarded 2004 season is below Leonard and a hair above Tim Duncanās 2002 MVP season. Duncan, in turn, is ahead of Shaquille OāNealās legendary 2000 season. Dwyane Wade and Chris Paul, both from 2009, follow closely behind. The 1997 version of Michael Jordan has a high rating, but heās not that close to the top.
Version: 1.0
Since weāre all more familiar with the 2016 season right now, let me break down the numbers from that season. Curry, Leonard, and Durant are at the top, of course, with some of the best ratings ever, but Kyle Lowry is fourth. This would surprise most fans who are not familiar with advanced stats. Lowry kills it in subtle ways, and he does one thing this model uniquely loves: he draws a ton of offensive fouls, especially for a star. There arenāt too many other surprises near the top of the leaderboard with a couple exceptions. One is that Russell Westbrook, who has some of the most extreme stats youāll ever see, is merely ninth. While his usage rate is sky-high, he was near the average in league efficiency and had a high rate of turnovers that became steals. Kemba Walkerās efficiency wasnāt grand either, but heās surprisingly high because he drew even more offensive fouls than Lowry.
More from Nylon Calculus
- Nylon Calculus: Reviewing preseason predictions for the Western Conference
- Nylon Calculus: Reviewing preseason predictions for the Eastern Conference
- Nylon Calculus: LeBron James and the slam dunk aging curve
- The Whiteboard: Why has the NBA seen so many 50 point games this season?
- Nylon Calculus: 15 early season predictions for the NBA Western Conference
For some validation at the superstar level, the highest rated players by MVP index (read more about it here) season-by-season align fairly well with the actual MVP winners: thereās Karl Malone in 1998; Shaquille OāNeal in 2000; Tim Duncan in 2002; Kevin Garnett in 2004; LeBron James in 2009; 2010, and 2012; Kevin Durant in 2014; and finally Stephen Curry in 2015 and 2016. There were minor disagreements in most other seasons: Malone over Michael Jordan by a hair in 1997; David RobinsonĀ in 1999 over Karl Malone; Dirk Nowitzki in 2003 over Duncan; then the turnaround of Duncan over Nowitzki in 2007; and Kevin Durant over LeBron in 2013. None of those are outrageous, and the seasons with large disparities between who won MVP and the MVP index leaders arenāt surprising: the model has Shaq over Allen Iverson in 2001; Kevin Garnett over Steve Nash in 2005; LeBron James over Nash in 2006; Chris Paul over Kobe Bryant in 2008; and LeBron over Derrick Rose in 2011. Those are the most contentious MVP votes in recent history, and I believe the results are strong enough at least at the superstar level to be plausible. But there are still a few curious findings.
The Overlooked Bo Outlaw
One of the strengths of this metric is that is goes all the way back to the period of 1997 to 2000, where we have few advanced stats. The top rated players there by Dredge are usually all-stars or highly regarded players except for ⦠Bo Outlaw. Only Tim Duncan, Eddie Jones, Karl Malone, Alonzo Mourning, David Robinson, and Shaquille OāNeal outranked him in 2000, for example. I imagine most NBA fans donāt even know who he is anymore. He was an athletic 6ā² 8ā³ frontcourt player with one of the ugliest free throw shots youāll ever see and a high rate of activity on defense. As an undrafted player, think of him as a lite version of Ben Wallace ā he had a large number of steals for a big man and pursued a lot of loose balls. He had a surprisingly high number of assists for a player of his type in his prime too, and he was efficient as well. He performed well in plus/minus stats too, like in RAPM. If he had played today he would have been more appreciated.
Super Mario
The model is designed to overrate no player more than Mario Chalmers. Heās the perfect candidate. Heās a high three-point volume point guard with a few assists who nets a large number of steals and offensive fouls drawn. He even has a high number of loose ball fouls. Let it be known that no model is perfect and defense is still largely uncharted, where Marioās turnover creation is valuable but he stalls elsewhere. But we should reconsider his worth because itās been shown consistently that guys who net a lot of turnovers are generally very good on defense. And heās really good at navigating tubes and rescuing princesses.
Brent Barry: The Secret Superstar of 2002
There are only a handful of players with higher ratings in 2002 than Brent Barry: Tim Duncan, Shaq, Dirk, and Ben Wallace. I assume this will surprise people, but he was a wing player with a high number of assists, rebounds, and steal who was one of the best shooters of his era. In fact, he had one of the most efficient seasons ever in 2002, and it looks even better when you adjust for the low league-wide efficient of that dead-ball era. He received no high honors during his career, but what he did on the court was undeniably valuable and he has no red flags like ball-hogging or awful defense either. So when youāre next gifted with an NBA broadcast featuring Brent āBonesā Barry, appreciate that he did play at a high level few others have, even for just one brief season and the fact that few others recognize it.
Conclusion
This metric is by no means complete, and Iāll be updating it periodically. Thereās still a lot of information to add, but the metric is stable enough now that I can share it. We have access to two decades of play-by-play data, which spans an entire generation, and itās time we start using its full capabilities. The box score contains little and advanced stats should be available for more than just the SportVU era. Letās not forget the past and learn from the full weight of history.
[1. Dredge still outperforms the other metrics even when mean reversion is used, which means you regress all the stats to -2 based on minutes played. For example, a player with only 1 minute played will have a rating of -2 while one with 3000 minutes will be regressed toward -2 only lightly.]
[2. Win Shares performed horribly, so much so that I worry itās an error I did not catch. But others have found its weak predictive power when looking at data with players in new situations, although itās not as bad as Wins Produced.]
[3. Unfortunately, I donāt know how accurate goaltending totals are in the 90ās. The 1997 season, in particular, has a very low rate of goatlending violations: 249 for the entire regular season while now the annual totals range from 500 to 700.]
[4. If youāre wondering if a player who picks up a technical foul doesnāt get āblamedā in the plus/minus model, Iāll note that the standard for fouls is to include those points in the stint before any substitutions occur, so the fouls are awarded when the player who fouled is still in the lineup.]