Making Sense of the Cap

Why are the rules around NBA free agents and trades so complex? Understanding the what and why of all the terms thrown around this time of year.

Last week I debuted the Cap Calculator, a tool designed to help fans calculate a team’s available cap room, accounting for elements of the NBA’s Collective Bargaining Agreement (CBA) like cap holds stemming from Bird rights and incomplete roster charges. It’s worth wondering, though, why a specific tool has to be built to deal with all of the minutiae of the cap. Why is it so complicated? Why are terms like “cap hold,” “Bird rights,” and “incomplete roster charges” part of the normal parlance of hardcore NBA fans?

Even for many fans who are familiar with the terms and understand their implications on a basic level, the CBA is an arcane text, requiring the diviners known as “capologists” to interpret its mystical secrets. Part of that is because the CBA is a labyrinth of rules, easy to get lost in unless you’ve become incredibly familiar with it. But some of it is because, I believe, we are missing an overarching framework for why the cap works the way it does.

The salary cap exists in the first place to try to level the competitive playing field. Teams have massively different resources available to them (based on the depth of ownership’s pockets or location-based factors like market size) and without some kind of spending constraint teams with fewer resources would have a much harder time competing.

A cap on spending, though, helps solve that problem1, in theory allowing all of the teams to have equal resources to pay players. In practice, however, the NBA’s salary cap has not fully accomplished that goal. There has still been a large resource disparity amongst teams, because the NBA didn’t implement a standard salary cap, what would be called a hard cap. Instead they created a system with a soft cap, a cap that can be exceeded in specific circumstances. These circumstances are built into the rules, and are called exceptions.

That soft cap is responsible for almost all of the complexity around cap management. By creating ways that teams can exceed the cap, it opens the door for ways that teams can exploit those openings to circumvent the spirit of the cap. That, in turn, has necessitated further rules and procedures to stop the circumvention, rules that continue to need refinement as time goes, inevitably resulting in an explosion in complexity. That means the best CBA explainer out there, Larry Coon’s CBA FAQ, is hundreds of pages long. Imagine that: the simplification of the CBA is still hundreds of pages.

Why did the NBA end up with a soft cap in the first place? First, because of a desire to make the cap less punitive for teams that jam themselves up against the cap, allowing them avenues for improvement. But mostly it was about allowing teams to keep their own players.2 That’s why the most significant exceptions to the salary cap are the so-called Bird exceptions.3 To quote from an article I wrote around the trade deadline, Missing Mirotic:

A team can go over the cap without limit to re-sign one of their own players if they have his Bird rights. The rule was created to allow teams to keep their iconic stars even in the face of cap trouble (a notion that perhaps seems quaint in today’s culture of star movement) — that’s one theory for how the nickname originated, since in 1983, when the exception was introduced, the Celtics keeping Larry Bird would have been the perfect example of the need for such an exception to the cap.

Originally this Bird exception applied to all free agents. If the player ended the season on a team, that team had the right to exceed the salary cap to re-sign him. But teams found the loophole in this: sign another team’s player for a small contract that can fit under the cap for one season and then, when the season is over, use the Bird rights to re-sign them for much more money.

So the CBA was amended to close the loophole. To have full Bird rights on a player, a team must have had the player on their roster at some point in three consecutive seasons without that player changing teams as a free agent.

The changes to close the Bird rights loophole spawned a few other Bird exceptions: what are called “Early Bird” and “Non-Bird.” The Early Bird exception applies to players who have been with their team for two consecutive seasons, not three. Whereas the full Bird exception allows a team to exceed the cap without limit (besides the player’s max salary) to re-sign him, the Early Bird exception still allows teams to exceed the cap to re-sign a player who has been with them for two years, but only up to a point: specifically, 175% of the player’s previous salary or 105% of what the CBA calls the “average salary” ($8.8M this year), whichever is higher. So this gives teams the chance to go over the cap to keep their Early Bird free agents as long as the increase between the previous contract and the next contract is reasonable. That helps close the loophole where a team without cap room can sign a player to a small deal for a short time with the promise of a huge raise when he is a free agent.

The risk of those kinds of machinations is even higher for one-year deals. So for players on those deals teams only have what are called “Non-Bird” rights, with a limit of 120% of their previous salary. Again, this stops teams from circumventing the cap by getting a player on a low salary for one year, only to give him a massive raise over the cap the following season.

The league, meanwhile, anticipated an easy way for teams to use these exceptions to get around the cap: use cap room to sign new players, then use the Bird exceptions to go over the cap. That would allow teams, in essence, to double-dip from their cap room. Imagine if you have a full Bird free agent who you are going to re-sign for $20M per year, and $10M in cap room. If you have him sign the contract immediately, you’ll end up $10M over the cap — which is fine since you can go over the cap to re-sign him because of your Bird rights. But then you can’t add anyone else. If, however, you use the $10M in cap room first, you can sign another free agent and then use the Bird exception to go $20M over the cap.

That is why the league created cap holds known as free agent amounts. A certain amount of a team’s cap room is held for each free agent they have Bird rights on until the player is signed or his rights are renounced. If his rights are renounced, of course, the team can’t go over the cap to sign the player4, which solves the problem. But cap holds are themselves very tricky to calculate (it took a ton of time to get them right while programming the cap calculator), with lots of rules designed to accurately gauge the player’s worth in an objective fashion and therefore stop teams from being able to get around the cap.

These formulas still have holes, of course, and teams often will time the order of their free agent signings to take advantage of times when the cap hold formulas are off (either too high, so they want the player to sign first and create more room for them, or too low, so they want the player to sign last and double-dip, as mentioned above). As Larry Coon points out in his FAQ:

In 2015 Kawhi Leonard’s free agent amount was just $7.2 million, even though his value as a basketball player was much higher. By waiting to sign Leonard last, the Spurs also were able to sign LaMarcus Aldridge away from the Trail Blazers. Had they instead signed Leonard first, they would not have had enough cap room to sign Aldridge. They eventually signed Leonard for a starting salary of $16.4 million.

Similarly, there are cap holds for all of the exceptions, including trade exceptions, mid-level exceptions, and even roster spots. A minimum salary roster charge is added to a team’s salary total calculation for every player they have below 12, ensuring that they always maintain the cap room to fill out their roster with minimum players without going over the cap. All of these holds, with all of the details of their rules, are designed to keep teams from abusing the soft cap.

So you can see how just allowing teams to exceed the cap to keep their own players created rules that are quite complex. The complexity gets layered on top of itself as teams discover more loopholes and the league and players union endeavor to close them. Rarely do they scrap a mechanism and start over — rather, like a child building a tower out of misshapen blocks, they keep delicately balancing even more pieces atop a rickety foundation, making small adjustments just to keep the whole thing standing.

Take the subject of my article around the trade deadline, the no-trade clause that players with full or Early Bird rights receive. Normally it takes a lot for a player to get a no-trade clause: it’s a matter of negotiation and can only be given to players who have been in the NBA for eight seasons and who have played at least four seasons with the team they are signing with. But there’s another time a player has a no-trade clause: when his team has full or Early Bird rights and he’s on a one-year deal. Why does this seemingly random rule exist?

Once again, it’s to close a loophole opened up by the soft cap. The no-trade clause is needed because a player on a one-year deal who is traded loses his Bird rights, and becomes a Non-Bird free agent on his new team. Why? Otherwise teams could get around the cap by having the prior team with Bird Rights re-sign the player to a small deal, then trade for him, and the next year give him a huge raise while still over the cap.

There’s another problem caused by this solution, though. As I wrote in February:

But that puts the player in an unfair position: his earning power could be severely curtailed…If a player on a one-year deal was traded and went from Bird rights to Non-Bird rights it might take away the ability of one of his biggest suitors to pay him market value.

A solution was developed: players in this situation would have the right to veto a deal that would cause them to lose their Bird rights. A team couldn’t forcibly trade them and strip them of those rights.

A solution stacked on top of a solution, a block on top of another block.

It’s no wonder that every front office has an employee tasked with understanding the CBA, inside and out. Even then, teams will frequently call up the league office and ask questions to make sure they understand specific points.

The soft cap is also why tools like the ESPN Trade Machine exist in the first place. Why are NBA trade rules so complicated that there has to be a specific piece of software created in order to verify if the trade is legal? Because of the Traded Player exception — yet another exception for teams over the cap. There are actually no salary matching restrictions in trades for teams under the cap: if two teams make a trade that leaves them both under the cap, it’s not complicated. Salary matching is required, though, for teams over the cap, to stop them from making severely lopsided deals that add significant salary.

Of course, the league didn’t want to make those salary-matching restrictions so onerous that teams couldn’t make trades at all. So a buffer was created: as long as the salaries were close enough, the trade was legal. But that wiggle room has been taken advantage of, with teams that are willing to spend money taking on more and more salary through trades. The same thing has happened with the other exceptions. The mid-level and bi-annual exceptions, carved out to help teams continue to add new players even when they are capped out, have resulted in deep-pocketed teams continuously adding new players and more salary even while over the cap.

That’s where the luxury tax came in. The league recognized the cap wasn’t constraining enough, so they pushed to implement a tax that added extra financial penalties for exceeding the cap by a certain amount. Initially, the penalties had an effect, but weren’t punitive enough. Paul Allen’s Blazers, for example, went deep into the tax and simply footed the bill.

So in subsequent CBA negotiations the league added more teeth to the tax. Penalties increased the further into the tax a team went, a repeater multiplier was implemented that makes the tax bill skyrocket if teams are in the tax too often, and constraints were placed on the use of exceptions for teams in the tax. For example, the mid-level expedition gives teams over the cap a pool of money around the average salary every year to spend on free agents for contracts that can be up to four years in length. This year the mid-level exception is $8.6M. But in this CBA, teams who pay the tax don’t get access to that money. Instead they get a reduced exception, totaling $5.3M this season, which can only be used for contracts up to three years in length.

These constrained exceptions are where the only actual hard cap in the CBA comes in. In order to stop teams from utilizing a non-taxpayer exception and then going into the tax, the CBA says if you use a non-taxpayer exception then you have a hard cap placed on your spending in that year: you cannot go over an apron, a certain point roughly $6M above the tax.5

So if a team uses one of those exceptions, they get hard capped at the apron. No move they make can take them above it, full stop. Of course to get there requires even more rules, even more layers of complexity. Yet more blocks atop the tower.

With all of these additions, teams are loath to operate in the tax, certainly for multiple seasons. The tax, then, has become something closer to a hard cap now. The penalties are steep enough that even the richest owners think about how to cut player salaries to avoid the tax.

Which makes you wonder if, at some point, the league isn’t better served by taking a few steps back, and applying all of the lessons learned over the years about how the league works and how teams operate within these rules. Maybe the complexity isn’t worth it. Maybe the cap should be done away with altogether, and there should simply be a severe tax. Maybe it’s worth skimming some of these blocks off the top and thinking about how to build a sturdier foundation.

I owe a big debt to Larry Coon’s CBA FAQ for help on this article and the cap calculator. Seriously, if you’re interested in diving into the weeds of the CBA, there’s no better place to start.


  1. As long as it’s set at a number that is attainable by all teams in the league. 
  2. In recent years reports suggested the NBA did try to get a hard cap implemented, but the NBA Players Association fought it, thinking it would constrain spending. That never fully made sense to me because, historically, the CBA guarantees players a percentage of the league’s basketball income as a group. So even if the owners all spend less the players don’t make less — there are mechanisms in place to make sure the players get their full percentage. 
  3. Though the term “Bird” is never used in the actual CBA. 
  4. At least using one of the Bird exceptions. 
  5. Last year that point was $6M above the tax, and each year of this CBA it will increase at half the rate the cap does. 
Get notified when I publish something new: