How Much Value Do G-League Replacement Players Have?

(Note: An updated and expanded version of this article can be found here.)

One of the most useful catch-all stats in the advanced statistician’s playbook is VORP, Value Over Replacement Player.

Like WAR (Wins Above Replacement) in baseball, VORP distills the value of a player’s entire offensive and defensive contribution on the floor to one number, defined by Basketball Reference as “A box score estimate of the points per 100 TEAM possessions that a player contributed above a replacement-level (-2.0) player, translated to an average team and prorated to an 82-game season.”

Very long story very short, this means that a team full of replacement players would post a -5.4 net rating, and since the NBA ever-so-conveniently was played at exactly a 100.0 pace this season, that means it will exactly dovetail with a -5.4 points per game differential.

And since one of the fundamental laws of analytics holds that every point of differential is worth 2.7 wins in the standings, a team with a -5.4 point differential would be expected to go 26-56.

Which also dovetails nicely with a rule of thumb in baseball that holds that a zero-WAR team will, depending on which of the various flavors of WAR calculation you’re using, win between 45 and 54 games, and since baseball seasons are nearly twice as long as basketball seasons, over 82 games, our hypothetical baseball team is going between 22-60 and 27-55.

Which, well, that’s that, right?

But is it really? Let’s try some check numbers with a little help from our friend the Play Index.

We’ll take every player who played at least 700 minutes and posted a VORP between -0.1 and +0.1 in 2018-19 (that’s 36 guys) and create a minute-weighted average of Win Shares per 48 minutes.

Long story short, what we get is a hypothetical player with a .0596 WS/48 number.

And since WS/48 calculates out to expected record as (WS/48*5)*82 (five players per team, 82 games), that means our team of replacement players is expected to be worth right around a .298 winning percentage, or a 24-58 record over 82 games (rounded down from 24.436 expected wins.)

Or, if they were a baseball team, 48-114. Yikes. Pray for rain!

VORP is a cumulative stat. You could, in theory, take a team’s collective VORP, multiply it by 2.7, add 26.4, and expect to get pretty close to the team’s actual won/lost record during the season.

So let’s try that with six examples, ranging from terrible to title contender, and see how the formula does.

The teams (and their records): The Knicks (17-65), Hawks (29-53), Pistons (41-41), Pacers (48-34), Trail Blazers (53-29), and Bucks (60-22).

Total VORP for players for those six teams in games in which the player suited up for them:

NYK -0.9
ATL 2.9
DET 9.5
IND 13.5
POR 15.5
MIL 19.2

Now it should be obvious that a simple linear x2.7 multiplier isn’t going to give us a clean result here in terms of translating VORP to an actual won-lost record.

But look at the numbers more closely and you see a couple of things that are fairly consistent as you go up the list.

The difference between New York and Milwaukee was 43 wins and 20.1 VORP. This implies that one VORP team-wide is worth 2.15 wins rather than 2.7 and that the break point is closer to 19 wins than 24-27.

Taking that, you get expected win totals of:

NYK 17.07
ATL 25.24
DET 39.43
IND 48.03
POR 52.33
MIL 60.28

Which, with the exception of the Hawks, who could be seen to overachieve by this metric (probably due to Trae Young if I had to hazard a guess why, since his advanced stats were bonkers all season long), gives us a very nice predictor of team wins based on cumulative player performance, at least in this six-team sample size cross-section of the league.

Which, considering that stuff like Pythagorean record (explained in the Basketball Reference glossary and far too wordy to quote here) has a margin of error of approximately pi wins either side of a team’s actual record, stacks up surprisingly well if you use 2.15 as your VORP multiplier and 19 as your all-replacement-player expected win total.

And keep in mind this is in a season (2018-19) where per 100 possessions and per game were, league-wide, exactly the same thanks to that 100.0 pace (well, not counting overtime, but I’m not going to sweat an extra quarter or two of basketball in an 82-game season if you don’t. I’m just not all that worried about something like a one percent deviation.)

But if you have ever wondered “what do they mean by replacement player, anyway”?

Well, here’s the full list of those 36 guys from the sample I mentioned above:

Alec Burks, Anthony Tolliver, Bruce Brown, Cedi Osman, Cheick Diallo, D.J. Wilson, David Nwaba, DeAndre’ Bembry, Devin Harris, Dion Waiters, Doug McDermott, E’Twaun Moore, Evan Turner, Harry Giles, Jabari Parker, Jahlil Okafor, Jaylen Brown, Jerian Grant, Jordan Clarkson, Kelly Oubre, Kent Bazemore, Kevin Huerter, Kris Dunn, Lance Stephenson, Lauri Markkanen, Marco Belinelli, Marvin Bagley, Rodney McGruder, Sam Dekker, Solomon Hill, Taurean Waller-Prince, Terrance Ferguson, Tim Frazier, Tyus Jones, Will Barton, and Yogi Ferrell.

You could probably cobble together a roster out of those guys that would look an awful lot like a group of guys who’d not be out of place playing in the G-League, right? In fact, many of those guys are G-League alumni or once-touted draft projects who never quite panned out.

And indeed, you’d expect that team you mashed together out of that group of castoffs and spare parts to win somewhere between 19 and 26 games playing an 82-game NBA schedule.

So that’s what a replacement player is worth in basketball. Now all you need to do is find five guys with an average VORP of 5.9, play them 48 minutes a game, and you’ll go undefeated.

Good luck with that. The only four guys in the whole league to manage the feat in 2018-19 were James Harden, Giannis Antetokounmpo, Nikola Jokic, and Rudy Gobert. Not a bad bunch to build a team around.