Box Score Production (stat)
An all-in-one statistic that sums up a player's accomplishments as measured through his box stats.
Box Score Production (BSP) is a stat I created about 15 years ago. We have more precise and illuminating statistics now, that measure how a player's presence on the court affects his team's results, but those are not always easy to apply to older players, so I think BSP retains some value. If nothing else, I believe it is the best summation of a player's box stats. BSP is adapted from the TENDEX system created by Dave Heeren.
Heeren's TENDEX system formed the basis for many subsequent attempts at statistical player evaluation in basketball. Similar models include John Hollinger's Player Efficiency Rating (PER) and Game Score, Dean Oliver's Approximate Value (AV), the NBA's own Efficiency statistic, and David Berri's Win Score and Wins Produced, based on the book The Wages of Wins, by Berri, Martin B. Schmidt, and Stacey L. Brook. The heart of Heeren's work, and most of the others, is that through most of NBA history, an average possession is worth about one point. Quoting from Heeren's Basketball Abstract:
The formula works because a ball possession is worth one point on the average. This means that rebounds and steals which acquire possession are valued at one point apiece, an assist which converts an ordinary one-point possession into an easy two-point basket is worth one, and missed shots which result in squandering possession are equivalent to turnovers and are minus-one. Of course, if an offensive rebound follows a missed shot, the team having missed the shot is back where it started — still having the ball without having scored. A minus-one is given to the player who missed the shot and a plus-one to the player who rebounded. The sequence results in zero, as indeed it should because no points are scored.
The problem is that a rebound (+1) is not as valuable as a steal (also +1), and a missed field goal or free throw (both -1) is not as bad as a turnover (-1). Why not? Because only about 70% of missed shots are rebounded by the other team. If a player misses a shot, his team still has a 30% chance of getting the ball. If he commits a turnover, his team's chance of having the ball is 0%. A steal always turns a possession for your opponent into a possession for your team.
Heeren is right that an offensive rebound cancels out a missed shot — it's appropriate for those to be equal — but the real value is plus or minus 7/10 of a possession. And he's right that a steal cancels out a turnover, since those are opposite sides of the same coin. But a missed shot doesn't create a turnover — it creates a loose ball. With that in mind, the formula for BSP is:
PTS - .5*FTA - FG - .7*FGM + .7*ORB + .3*DRB + .5*AST + STL - TOV + .5*BLK
As in other systems, everything is scaled to points. A missed free throw is a half-point deduction. A successful free-throw is a half-point addition. A successful field goal which gives the other team possession is a full-point deduction, since it ends the possession. Thus, a regular two-point basket gives a player +1: 2 PTS - 1 FG. A missed field goal (which might be rebounded by the shooter's team) is -0.7, while an offensive rebound is +0.7. A defensive rebound is valued at +0.3. In this system, a player must shoot at least 41.2% on two-pointers, 26.0% from the arc, and 50% from the line in order to score positive points as a shooter. Anything below those levels will lower his score.
Take that 41.2% shooter. In 1000 shots, he will score 824 points and miss 588 times. About 412 of those will result in defensive rebounds, so his team loses the ball. But there will also be about 176 offensive rebounds. So that's 824 points and 176 offensive boards. 824 + 176 = 1000. This is a zero-value offensive player, and a zero-value scorer in BSP. Someone can shoot 42% or 43% and get a positive BSP rating from that, but his value will still be very close to zero-level. BSP is compared to zero, not to replacement level, so zero-value is a very poor player. In the 2024-25 season no one had negative BSP in more than 45 minutes of game time. Most players with negative scores played fewer than 10 minutes all season. Not only are these marginal NBA players, barely able to get any floor time, but their low BSP scores are flukey due to their limited minutes.
BSP values assists at half a point, steals as plus-one, and turnovers as minus-one. Blocked shots (on defense) are worth half a point. Fouls, which may be good or bad, are not part of the system. A foul which turns an opponent's breakaway into an in-bound pass, or an easy layup into a pair of free throws, is a good foul. A defensive foul near the end of a close game is often helpful, even a deliberate strategy. Fouls can also be associated with aggressive defense, which we would not wish to punish.
The system is logically consistent. A missed shot (-0.7) and an offensive rebound (+0.7) cancel each other out. A turnover (-1) and a steal (+1) cancel each other out. The missed shot is less harmful (-0.7) than a turnover (-1), because a turnover definitely goes to the other team, but a missed shot creates a loose ball that the shooter's team might get back. A missed shot (-0.7 for the shooting team) and a defensive rebound (+0.3 for the other team) — effectively resulting in a turnover — are worth the same amount (1) as a turnover. The formula is in harmony.
There is one variable which may represent an exception to this harmony: Free Throw Attempts, scored as minus-½. Two successful free throws are worth the same (+1) as a successful two-point field goal. That makes sense. But three successful free throws are worth less (+1.5) than a successful three-pointer (+2). A two-point basket plus a free throw is also worth +1.5. That's not fair. If a player gets fouled while attempting a three-pointer and makes all three shots, that should be the same value as a successful three. If a player drives and gets fouled, but his shot goes in and he makes the free throw, that should be the same value as a successful three. There's a similar problem regarding missed free throws, which are over-penalized.
Having recognized this problem, why not fix it? Because it's unclear how to design a solution. We could lower the deduction for free throw attempts, say, from 0.5 to 0.4. But then a pair of free throws would be worth more (1.2) than a two-point basket. Values with a free throw attempt set at -0.4:
| 2-pt FG | +1.0 |
| 2 FT | +1.2 |
| FG + FT | +1.6 |
| 3 FT | +1.8 |
| 3-pt FG | +2.0 |
That seems just as bad, and unnecessarily complicated to boot. So why not just penalize missed foul shots, and let successful ones stand? But that would overvalue free throws. Sink them both, and now that's worth twice as much as a two-point field goal, equal to a three-pointer. Besides, a lot of free throws are at the end of the game when the other team is trying to foul, wants you shooting free throws. If you go 1/2, that's not neutral: your opponent is happy.
This element of the formula is imperfect, but Wins Produced estimated the value of a free throw attempt at -0.47, and in the interest of saving some decimal points, -0.50 seems close enough. If we believe that free throws are slightly undervalued, we can make subjective adjustments for this. Some fans may even appreciate that this slight undercounting of foul shot value brings the ratings of "free throw merchants" — players who bait defenders into fouls — back into line with their perceptions of the player's true talent.
Moving on from free throws, here's an example of the system in action: Tyrese Haliburton's 2024-25 season. Haliburton scored 1,359 points. That's +1359. He made 476 field goals (-476) and missed 530 (-371), bringing his score to +512. Remember, a missed shot is -0.7, a two-point field goal is +1.0 (+2 points, -1 possession), and a three-pointer is +2.0 (+3 pts, -1 poss). Haliburton also shot 222 free throws (-111), so his BSP from shooting is +401. Another way of looking at this is as 258 two-point field goals (+258), 218 three-point field goals (+436), 530 missed field goals (-371), 189 free throws (+95), and 33 missed free throws (-17). So 258 + 436 - 371 + 95 - 17 = 401.
Haliburton grabbed 42 offensive rebounds (+29) and 216 defensive rebounds (+65), raising his score to +495. Add 673 assists (+336.5) and 49 blocks (+24.5), he's at +856. Finally, give him +105 for his steals and -120 for turnovers: +841. That's the system.
PTS - .5*FTA - FG - .7*FGM + .7*ORB +.3*DRB +.5*AST + STL - TOV + .5*BLK
Raw BSP will provide a good sense of the best players, but it is heavily dependent on playing time, with no per-game or per-minute adjustments. Those are easy to calculate, but the system is most accurate when it accounts for per-minute efficiency but also rewards playing time. To do this, we compare players to replacement level. Box Score Production Over Replacement (BSPOR) — pronounce that "bee-spore" — can account for disparities in playing time while still rewarding players who are consistently available for their teams.
You can tally BSP in your head if you're handy with numbers, but you'll probably want a spreadsheet to calculate BSPOR:
[ (BSP/MP * game pace) - (positional value) ] * (MP/100)
BSP/MP is just BSP per minute played, and we'll come back to positional value. The first step is to adjust for game pace. The easiest way to illustrate the importance of game pace is through an example. Let's say we have a team that averages 110 points per game, gives up 110 points per game, and goes 41-41. We'll call that Team A. Another team, Team B, averages 90 points per game, allows 90 points per game, and goes 41-41. Which team is better? Neither of them, obviously: they're equal. Team A has good offense but poor defense, and plays at a fast pace. Team B has strong defense but limited offense and prefers to slow things down. Stylistic differences notwithstanding, at the end of the day, they're both average teams.
Now, let's say the center for Team A averages 22 points and 11 rebounds, while the center for Team B averages 18 points and 9 rebounds. Who's better? Again, they're equal. But if you don't adjust for game pace, you will assume that Center A is significantly better than Center B — about 22% better.
For instance, in 2024-25, the Memphis Grizzlies had a game pace of 103.3, while the Boston Celtics had a 95.7 game pace. The Grizzlies averaged almost 8 possessions per game more than the Celtics, leading to many more opportunities for points, rebounds, etc. When comparing different eras, the differences can be extreme. The 1960-61 Celtics had a 134.4 game pace. The 1995-96 Cleveland Cavaliers checked in at 82.6. Averaging 16 ppg for the '96 Cavs was just as impactful as averaging 26 ppg for the '61 Celts.
Adjusting for game pace is easy. The data is available at basketball-reference.com, and the math is simple. BSPOR uses a baseline of 100 possessions per team per game. That's about average historically, though the number has fluctuated dramatically. Anyway, multiply the player's BSP times 100 divided by his team's game pace. In 2024-25, the Indiana Pacers averaged 99.9 possessions per game, so for Haliburton, it's a very small adjustment: 841 * (100 / 99.9).
Again, this is how we calculate BSPOR:
[ (BSP/MP * game pace) - (positional value) ] * (MP/100)
So now that we know about game pace, figure a player's BSP/MP. Continuing to use Tyrese Haliburton as an example, he played 2,451 minutes in 2024-25, so his BSP/MP was 0.3431. That's just his BSP (841) divided by his minutes played (2,451). Multiplying that by the Pacers' game pace, 0.3431 * (100 / 99.9) = .3434.
We calculate positional value because, while players at any position can excel in BSP, centers and power forwards — and in today's game, point guards — tend to accrue more statistics than shooting guards and small forwards. Point guards have always had better stats than shooting guards.
In all cases, BSPOR evaluates a player at the position listed by Basketball Reference.
The positional value approximates replacement level. BSPOR uses 50% of league-average BSP/MP at that position. The chart below shows each position's average BSP/MP and replacement level value for 2024-25:
| Pos | Average | Replacement |
|---|---|---|
| PG | .2318 | .1159 |
| SG | .2116 | .1058 |
| SF | .2146 | .1073 |
| PF | .2370 | .1185 |
| C | .2943 | .1471 |
The positional adjustment helps us avoid comparing a player like Haliburton directly to someone like Giannis Antetokounmpo or Nikola Jokic. While it may be generally true that centers are more important than guards, there's a reason teams don't use three centers. Your emergency backup at point guard will probably produce about .116 BSP/MP, and your third center will probably manage more like .147 BSP/MP. So if a guard like Haliburton (.343) is +.227 above replacement level, he's just as valuable as a center who produces +.227 above replacement (.374). The difference between Haliburton and his backups is larger than the difference between Domantas Sabonis and his backups.
We estimate that a replacement-level point guard — a G League player or a free agent — would average .1159 BSP per minute. Tyrese Haliburton exceeded that by .2275. We can plug these positional value numbers into the BSPOR formula:
[ (BSP/MP * game pace) - (positional value) ] * (MP/100)
For Haliburton, that looks like this:
[(0.3431 * (100 / 99.9)) - 0.1159] * (2451/100)
Which becomes:
(.3434 - .1159) * 24.51
So for Haliburton , we multiply .2275 by his minutes played (2,451), then divide by 100. Haliburton's BSPOR for 2024-25 is 5.58.
BSPOR is also adjusted for the number of games in the season. For instance, the strike-shortened 1998-99 season is prorated to 82 games. Thus, Shaquille O'Neal scores 6.18 BSPOR that year, rather than 3.86. Seasons shortened by injury or suspension are not adjusted. If your team played 82 games and you only took the floor in 60 of them, we're not going to imagine what you might have done if you'd been out there for every game. BSP per game and BSP per minute can be helpful for putting those seasons into context, but it would be deeply unfair for BSP to project Shaq's '02 season from 67 games to 82, when Tim Duncan (to choose one example) really did play all 82 games that year.
Nonetheless, raw BSP places too much emphasis on floor time, and underrates great players who miss time. You'd rather have Victor Wembanyama (0.37 BSP/MP) for half a season than 80 games from 2025 Brook Lopez (0.23 BSP/MP). Under the BSPOR system, a center who averages 0.37 BSP/MP for 1,500 minutes will score dramatically better (3.38) than a center who averages 0.23 BSP/MP for 2,500 minutes (2.19). A great player can help you win a lot of games even in limited appearances, while an average player is just ... average.
In the modern game (roughly the Jordan Era to present), the following BSPOR scores denote this quality of player:
| BSPOR | Quality of player | 2025 example |
|---|---|---|
| 0 | Replacement level (G Leaguer, street free agent) | AJ Johnson, Maxi Kleber, lots of guys you've never heard of |
| 1 | Back-of-rotation contributor (below-average and/or limited playing time) | Tim Hardaway Jr., Steven Adams, Dean Wade |
| 2 | League average | Bobby Portis, Cason Wallace, Mike Conley |
| 3 | Sub-All-Star (good players) | Julius Randle, Tyrese Maxey, Mikal Bridges |
| 4 | All-Star | Kevin Durant, Michael Porter Jr., Damian Lillard |
| 5 | All-NBA | Anthony Edwards, Josh Hart |
| 6 | First-Team All-NBA (at this level, a player normally receives MVP votes) | Tyrese Haliburton |
| 7 | Marginal MVP season | Giannis Antetokounmpo |
| 8 | Strong MVP season | Shai Gilgeous-Alexander |
| 9 | Legendary season | Nikola Jokic |
Wilt Chamberlain, Michael Jordan, and Jokic are the only players ever to record a 9-BSPOR season. No one has ever reached 10. However, box stats were depressed in the 1970s (see below), and Kareem Abdul-Jabbar probably had 3-4 seasons just as dominant as anything produced by Chamberlain, Jordan, or Jokic.
In the early '80s, BSPOR scores are roughly 10-15% lower for the top players, so 3.5 is an All-Star quality season, 7.0 is a strong MVP, etc.
Prior to 1980 (introduction of the three-point line in the NBA), BSPOR scores are about 25% lower than today, so 3.0 is the All-Star standard, and Abdul-Jabbar's 8.54 in 1972, when Wilt Chamberlain was second with 5.12, should be considered a legendary season. So should his 8.07 in 1976 (Julius Erving 2nd, 6.74), his 7.95 in 1977 (Artis Gilmore, 4.89), and his 7.72 in 1971 (Chamberlain, 5.26). Erving's '74, incidentally, would normally be a strong MVP-caliber season. From 1971-79, there were only 25 seasons of 5+ BSPOR: Abdul-Jabbar every year, and 16 by everyone else combined. In the '70s, we might call 3 the All-Star standard, 3.75 All-NBA, 4.5 First-Team All-NBA, 5.25 marginal MVP, 6 strong MVP, and 7 legendary.
Prior to the ABA and expansion (1967-68 season), the 30th-best player would typically score between 1.50-1.75 BSPOR, though this is a little higher in the early '50s (1.75-2.00). Wilt Chamberlain and Oscar Robertson skew the MVP standard in the 1960s — both players consistently scored 6-9 BSPOR, with others only rarely reaching the lower end of that range — but 4.5-5.0 could be considered the First-Team All-NBA standard, while in the 1950s, 5.0 represents a marginal MVP season.
Keep in mind that BSPOR should be considered the beginning, not the end, of a thorough analysis. Box scores are very limited in what they tell us, especially about defense. There are several limitations of BSPOR so important that they merit specific notice.
1. BSP and BSPOR are regular-season metrics.
This is a feature, not a bug, because postseason stats are not equally accessible to all players, and there is no consensus about how to weigh different rounds of the playoffs. How much more valuable is an NBA Finals game than a first-round playoff game? How much more important is a first-round game than a regular-season game? In today's NBA, how much do we care about the play-in game? Is Game 4 of the Finals, when you're up 3-0, more important than Game 7 in an earlier round? Those are essentially moral questions; they have no place in a math formula. BSP is derived from quantifiable values. The impact of performance in postseason games can not be similarly quantified, and would not be fairly distributed even if it could be.
The result of this, however, is that if Shai Gilgeous-Alexander has 29 points and 12 assists in a regular season game, he'll earn about 10 BSP. But if he does the same thing in Game 7 of the NBA Finals, he scores zero. Excellent postseason players like Bill Russell, Jerry West, Michael Jordan, and Tim Duncan are underrated by this system.
2. Major leagues of the 1940s (BAA and NBL) are largely unrepresented.
The NBA began tracking minutes in the 1951-52 season. They began tracking rebounds the year before. In the 1940s, the NBL recorded field goals made but not field goals missed, so it is impossible to calculate shooting percentage. They also didn't keep track of rebounds or assists. Because of the difficulty of performing any meaningful statistical evaluation of these seasons, they aren't included in most of the BSP charts. That's probably just as well, because shooting percentages were so low that a possession was worth significantly less than a point, throwing the formula out of whack.
George Mikan, the greatest player of the late 1940s and early 1950s, is the only historically significant NBA player affected for more than a season, but Mikan is severely underrated by BSP. This stat is not a useful tool for evaluating Mikan.
3. Good defensive players are underrated, especially prior to 1974.
Box stats have never accurately captured defensive contributions, and consequently BSP and BSPOR underrate excellent defensive players. Players like Michael Cooper and Draymond Green, for instance, rate much lower than their reputations would suggest. This is even more true prior to 1974, when steals and blocks became official statistics. Bill Russell, John Havlicek, Dave DeBusschere, and Nate Thurmond are among the noteworthy players affected. For exceptional defenders, in most cases their popular reputations are closer to the truth than BSP is.
4. Players with high-quality teammates have lower scores.
When the Chicago Bulls started winning championships, Michael Jordan's BSPORs dropped. Steph Curry's box stats declined when the Warriors acquired Kevin Durant. Tim Duncan's scores are lower than those of Dirk Nowitzki, and much lower than Kevin Garnett's. Cooper, Green, Russell, and Havlicek get caught here, too, while a player like Walt Bellamy or Elton Brand benefits. Bellamy was an All-Star center for the Bullets when they were an expansion team. When they went 18-62, Bellamy had a 6.46 BSPOR, trailing only Wilt Chamberlain and Oscar Robertson. Overall, Bellamy's BSPOR in the 1960s is slightly higher than Bill Russell's. This is not an accurate reflection of their contributions. Bellamy was the Bullets' only good player, so everything went through him and his box stats were overwhelming. Russell was surrounded by Hall of Famers, so many of the team's contributions were made by teammates like Bob Cousy, Sam Jones, and John Havlicek. Bellamy and Brand were very good players, but not quite as outstanding as their box stats would suggest. Similarly, players on dynasties often rate lower than we might expect.
This is impossible to quantify, but at a guess, the player who is most underrated by BSP (besides Mikan) is probably Bill Russell. He was the most successful postseason player of all time, he was probably the greatest defensive player of all time, and he was surrounded by Hall of Fame teammates.
There's one final note.
When evaluating multiple seasons, apply one extra step to BSPOR: applying a ^1.5 exponent to each individual season and dividing by 10. Raising a number to the 1.5 power is relatively straightforward: multiply the number by its own square root. The following chart shows how the math works:
| BSPOR | Sq Rt | Exp |
|---|---|---|
| 0 | 0.00 | 0.00 |
| 1 | 1.00 | 0.10 |
| 2 | 1.41 | 0.28 |
| 3 | 1.73 | 0.52 |
| 4 | 2.00 | 0.80 |
| 5 | 2.24 | 1.12 |
| 6 | 2.45 | 1.47 |
| 7 | 2.65 | 1.85 |
| 8 | 2.83 | 2.26 |
| 9 | 3.00 | 2.70 |
This step rewards great seasons rather than compiling. One season with 8 BSPOR does more to establish a player's greatness than two seasons of 4 BSPOR. But two seasons of 4 BSPOR are more meaningful than four seasons with 2 BSPOR. The first player, even if he has a short career, was briefly the best player in basketball, or at least very close to it. The second player was a multiple-time All-Star, or at least could have been depending on the many factors that influence voting. The third player was average for several years, which has value, but doesn't do much to establish a historical legacy. Respectively, the Exp (short for exponent) for these players is 2.26, 1.60, and 1.12. In this system, it takes eight average seasons (2 BSPOR) to equal one strong MVP-caliber season (8 BSPOR).
This extra step is unnecessary and unwieldly when scoring individual seasons, but it is very helpful in evaluating careers, or the best performers of a decade, etc. Exp is the preferred rating system for any period lasting five years or longer. For instance, over the five seasons from 2020-2025, Haliburton's BSPORs each year are: 2.58, 4.49, 4.52, 5.33, 5.58. His Exp each season is: 0.4, 1.0, 1.0, 1.2, 1.3. His five-year score is 4.9. This is a good score, tenth-highest over those five seasons, indicating consistent All-Star caliber performance from Haliburton in this time frame.
This exponent-based system helps to recognize truly outstanding players and high peaks, but it is harsh on partial seasons, so players like Bill Walton, Yao Ming, and Joel Embiid rate lower than we might expect. The system views one 80-game season as being better than two 40-game seasons. While this is accurate from a value standpoint, it can significantly understate the year-by-year talent of players like Walton and Embiid.