What is WARP? WARP stands for Wins Above Replacement Player. The term and concept are borrowed from sabermetrics and, specifically, Baseball Prospectus. Conceptually, the WARP system seeks to evaluate players in the context of a team made up of them and four completely average players. The performance of this team is then compared to that of a team made up of four average players and one replacementlevel player. The method draws heavily on the work of Dean Oliver.
What are the benefits of this method?
What are the limitations?
What is replacement level? Why use it? Players create value for their team by playing better than replacement level. This appropriately awards credit to average players, because they are still an upgrade on freelyavailable replacements, while not rewarding players simply for being on the court without any level of production. It also allows us to estimate the value of players with varying playing time and productivity and account for durability. Beginning in 2019, my NBA WARP utilizes different replacement levels by position based on big men and point guards rating better than their wing counterparts. A painstakingly detailed explanation of how WARP is calculated and its assumptions follows.
Offense: FYI: Before the term "plays" was standardized, they were sometimes called "minor possessions" as contrasted against "major possessions," and that terminology is still used in some of my formulas. For points, we start with points. To this, we add some credit for assists. Valuing assists is one question statistical analysis remains unable to answer with any degree of certainty, leaving us to use an estimate. I use a value of 0.75 for each assist. This is the same used by Oliver and not dissimilar from the value used by John Hollinger (.66). We also have to take away 0.75 points for each assisted field goal made to balance the ledger. For the NBA in the playbyplay era (since 199697) and the WNBA, I utilize actual assisted field goals. For past players and players in other leagues, assisted field goals are estimated using the share of his team's assists the player distributes, the team's assisted field goal percentage, the player's share of the offense, his offensive rebound rate and the percentage of his shot attempts that are threepointers. The complete formula for percentage of field goals assisted is: TmAst/TmFGM * (1.53  1.442 * [Ast/Min / (TmAst/(TmMin/5))] 0.041 * ((OReb/Min)*48)  0.787*Plays% + 0.014*(3A/FGA)^2*(1/Plays%)^2) This estimate is multiplied by field goals made and by 0.75 and subtracted from the prior point total to give us an estimate of offensive points created.
PC = Points + (.75*Ast)  (.75*Afgm) The WARP version of plays is similar. We begin with the general formula for individual plays  FGA+ (.44*FTA) + TO. To this, we add .375 for each assist and subtract .375 for each estimated assisted field goal. I use onehalf the assist value so that assists do have a significant impact on overall rating. If we didn't do this, ratings would go largely unchanged.
Plays = FGA + (.44*FTA) + TO + (.375*Ast)  (.375*Afgm) A player's individual rating is simply points created divided by possessions used (multiplied by 100, as I strictly work in points per 100 possessions, on a team or individual level). Offensive Rating = (PC/Pos)*100 The next step is placing the player in a team context. The first part of this is to figure out how large the player's role in his offense is. This is determined by finding the percentage of his team's plays he uses: Plays% = (Pos/Min)/((TmFGA + (.44*TmFTA) + TmTO)/(TmMin/5)) The Offensive Rating for a team made up of the player and four average teammates, then, is his Individual Rating multiplied by his usage rate, along with the league Offensive Rating multiplied by the remaining possessions. However, there is one slight adjustment I make to reflect the tradeoff between usage and efficiency. By extension, the more possessions a player uses, the more efficient his teammates are. Therefore, I add .25 points * (Pos%  0.2) to the league average offensive rating. TmOffRatMinor = OffRat*Pos% + ((1Pos%)*(LgOffRatMinor + (25*(Pos%  0.2)))) In practice, this means that on average the team ratings improve 0.2 points per 100 possessions for each additional percentage of usage for the individual player. This is very similar to research conducted by Eli Witus, which found that at the lineup level each additional percent of usage was worth 0.25 points per 100 possessions. It's also in the same ballpark as the pioneering usage/efficiency research by Oliver, which found each percent of usage to be worth 0.6 points to the individual player, or 0.12 points at the team level. This explicit acknowledgment of the relationship between usage and efficiency is relatively unique to the WARP system. We now have an estimate of the performance of the imaginary team on plays. To get to possessions, we must incorporate offensive rebounds, which becomes a little complicated in terms of the actual formulas. The relatively easy part is estimating the team's offensive rebound percentage. The one thing that needs to be considered is that each rebound grabbed by the player makes one less available for his imaginary teammates. So the teammates' percentage is calculated out of the remaining rebounds by the following formula. TmOReb% = OReb% + (4*LgOReb%)/(5LgOReb%)*(1  OReb%) The more challenging aspect is figuring out how many rebound opportunities are available to the imaginary team. This requires us to estimate the percentage of plays that end in missed shots for both the player and his teammates, which is complicated by the usage adjustment made earlier. For the player himself, the calculation is relatively straightforward: PlayerRebOpp% = ((FGA  FGM) + .56*(FTA  FTM)) / (FGA + (.44*FTA) + TO) Note that .56 is used as the multiplier on missed free throws because we estimate that 44 percent of free throws are shot as part of a series of two. This is a slight overestimation due to some free throws that are not the first of two but are still not available for rebounds (technical/flagrant foul shots and threeshot fouls). For the teammates, we must start with their Offensive Rating. From this, we subtract the league average for points from free throws per possession for points from shots from the field. In the denominator, we must take out possessions that end in turnovers (which is affected by the usage rate) and those that end in freethrow attempts. This gives us points from shot attempts  effective fieldgoal percentage. We then divide by the leaguewide ratio of eFG% to fieldgoal percentage to get the estimated fieldgoal percentage of the teammates. As part of this process, we've estimated how frequently these teammates are shooting from the field, so we can multiply this by 1FG% and add .56*league average missed FTs to get the percentage of teammate possessions that end in a rebound opportunity. This is probably best expressed as a series of equations:
LgPossMinor = LgFGA + (0.44 * LgFTA) + LgTO
LgOffRatMinor = 100 * (LgPts / LgPossMinor)
LgPossMajor = LgFGA + (0.44 * LgFTA)  LgOReb + LgTO
LgOffRatMajor = 100 * (LgPts / LgPossMajor)
TeammateOffRat = LgOffRatMinor + 100*(.25*(Pos%  0.2)) The total percentage of available rebounds for the team, then, is again a weighted average of the player and his teammates by possessions: TmRebOpp% = PlayerRebOpp%*Usage + TeammateRebOpp%*(1  Usage) Naturally, we next multiply rebound percentage by the percentage of possessions that end in available rebounds. However, we also must make a couple of adjustments before adding this in to get the final team Offensive Rating. One adjustment accounts for the fact that not every missed shot results in a rebound because of team rebounds (plays when the ball goes out of bounds or a looseball foul is called). The other accounts for possessions that include more than one second chance.
RebFactor1 = LgReb / ((LgFGA  LgFGM) + .56*(LgFTALgFTM)) TmOffRat = TmOffRatMinor + (TmOReb%*TmRebOpp%*RebFactor1*RebFactor2*TmOffRatMinor) In 2010, an adjustment to account for floor spacing was added to WARP, as explained here. Specifically, the formula is: TmOffRat3 = (TmOffRat + 7 * (3A%  Tm3A%)), where 3A% is 3PA / (FGA + (.44*FTA) + TO)
Defense:
That's it. So what we have to do is estimate how often each of those things occur, and how many points result on average (from field goal and free throw attempts; obviously no points result from the others) and then factor in rebounding. The NBA is nice enough to track two of these five things for us, steals and blocks. To evaluate these, we need to first estimate defensive possessions: Pos = Min*((TmOppFGA + (.44 * TmOppFTA) + TmOppTO)/(TmMin/5)). We add the player's blocks and steals and divide by estimated defensive positions, to come up with what percentage of possessions he ends himself with a recorded defensive play, then add to that 80 percent of the league average of blocks + steals per possession (which the other four imaginary teammates are theoretically generating). TmBSPos = (Blk + Stl)/Pos + .8*((LgBlk + LgStl)/LgPos) That step is done. Next we need to look at fouls. We can estimate how many possessions each foul results in by the formula: LgFTARate = (.44*LgFTA)/LgPF This ratio is multiplied by the player's personal fouls (PF) divided by the estimated defensive possessions the player has participated in. To this, again we add 80 percent of the league average for what percentage of possessions end in freethrow attempts. TmFTAPos = LgFTARate*(PF/Pos) + .8*((.44*LgFTA)/LgPos) These are the purely individual categories. The other two reflect team defense, and are not individually counted in the statistics. The two general schools of thought on team defense are to assign all of the credit to individuals, or none of it, and rate every player at league average. I've found a happy medium between the two. What I've done is create what I call a "team defense factor" (TDF), which is simply Min/TmMin. If a player was on the court every minute of every game, this ratio would be 20 percent (TmMin includes minutes for all five players on the court, which is why you repeatedly see it divided by five in previous calculations). Selfexplanatorily, this determines how much of the team's defense the player gets credit for. What we're assuming is that each player is equally responsible for the team defense his team plays while he's on the floor. That's not true, of course, but it's a reasonable compromise. TDF = Min/TmMin A forced turnover shows up in the statistics as an opponent turnover that is not a team steal. Thus, the formula is: TmFTOPos = TDF*((TmOppTOTmStl)/TmOppPos) + (1TDF)*((LgTOLgStl)/LgPos) In the same manner we can evaluate how many points each nonblocked field goal attempt results in. This is again weighted by the team defense factor, with the other percentage accounted for by the league's average points per nonblocked field goal attempt. TmFGRat = TDF*((TmOppPts  TmOppFTM)/(TmOppFGA  TmBlk)) + (1TDF)*((LgPts  LgFTM)/(LgOppFGA  LgBlk)) We now have percentages of how often the player's imaginary team does not allow the opposition to score through either a steal, a block, or a forced turnover. We also have the percentage of the time they send the opposition to the line. If we add these and subtract from 100 percent, we estimate how often the imaginary opposition gets off a shot from the field. We then add in the estimated points per attempt to get points allowed per play: TmDefRatMinor = 100* ((TmFTAPos * ((LgFTM)/(LgFTA*.44))) + (1  TmFTAPos  TmBSPos  TmFTOPos) * TmFGRat) Again, we need to take rebounding into account to get to possessions, starting with the defensive rebounding percentage. TmDReb% = DReb% + .8*LgDReb%*(1  DReb%) Available rebound opportunities are easier at the defensive end because we already know how frequently the opposing team is getting to the free throw line and attempting shots from the field. We merely need to estimate the opposition's fieldgoal percentage based on its FG Rating (TmFGRat). OppFG% = (TmFGRat/2) / (Lg eFG%/LgFG%) Then we add up the possible ways a defensive rebound becomes available: A missed (nonblocked) shot, a missed second free throw or a blocked shot. OppRebOpp% = (1  OppFG%)*(1  TmFTAPos  TmBSPos  TmFTOPos) + .56*((LgFTA  LgFTM)/LgPos) + TmBlk% + Blk/Pos + .8*LgBlk/LgPos We then bring back the two rebound factors introduced in the offense section to come up with our final team Defensive Rating. TmDefRat = TmDefRatMinor + (1TmDReb%)*OppRebOpp%*RebFactor1*RebFactor2*TmDefRatMinor
Putting it Together: Win% = TmOffRat^14 / (TmOffRat^14 + TmDefRat^14) The last step is critical: introducing replacement level to the equation. I define replacement level on a theoretical basis, starting with the theory that a team comprised of replacementlevel players would win 10 games. (This figure is borrowed from my work adjusting the late Doug Pappas' Marginal Wins/Marginal Payroll measure to the NBA.) Therefore, I adjust replacement level (using the Goal Seek function in Excel) to match the total marginal wins produced by the entire league above 10 wins per game (adjusted for the percentage of the schedule complete during the season). In practice, this generally produces a replacementlevel winning percentage of around .415, or 83 percent of league average. This is similar to the 80 percent figure used by Baseball Prospectus and often used by Football Outsiders in other sports. The formula itself is simple: WARP = (Win%  RL) * (Min/48) Generally speaking, a team's total WARP plus the 10 replacementlevel wins will be similar to its final win total. These tend to differ more for teams that are very good or very bad on defense, because not all of the team's defensive performance is credited to its individual players. Some is assumed to be the function of the coaching staff and some we simply cannot fairly apportion to the individual players using boxscore stats. Team WARP totals also differ from its record in the case of teams that outperform their Pythagorean projections.
