About This Project
This site is a passion project by Avi Bieler and David Charlton that will hopefully eventually
expand to all sports with salary caps. The goal is to measure the value of each GM. To do so we:
- Measure the overall value of each player.
- Plot it against the percentage of the salary cap they take up.
- Draw the regression line across the league.
- Add up how far above or below that line each team's players fall, to see how efficiently each team spends its cap.
A player above the line is a bargain; a player below it is overpaid. Sum every player on a roster and you get a
single number for the GM: are they buying wins at a discount, or overpaying the market?
How we value each player (NBA)
Basketball players are scored with VORP (Value Over Replacement Player) from
Basketball-Reference. VORP starts from Box Plus/Minus, an
estimate of how many points per 100 possessions a player adds compared with an average player, measures it against a
freely-available replacement player, and scales it by how much he played. It splits into an offensive and a
defensive side, which is what the GM card shows.
Strengths
- It's a long-established, public stat anyone can look up and check.
- It's already measured against replacement level, the same idea as hockey's GAR.
- It rewards availability: playing a lot of good minutes counts more than a great but short stint.
Weaknesses
- It's built from the box score, so defense that doesn't show up as steals, blocks or rebounds is undercounted.
- The max contract caps what a superstar can earn, so the very best players almost always look like bargains.
- Rosters are small, so one star's contract can swing a team's whole number.
Where the numbers come from (NBA)
VORP, salaries and each team's lead executive come from
Basketball-Reference. "GM" here means whoever runs basketball
operations, which is often a team president rather than the person with the GM title. Cap % uses the league's
published salary cap, not the luxury-tax line.
How we value each player
Every player gets a score in Goals Above Replacement (GAR), roughly how many goals they add versus a
freely-available minor-league replacement. We build it entirely from public expected-goals data and split it into
the things a player actually does: even-strength offense, even-strength defense, power play, penalty kill,
penalties drawn and taken, and, for goalies, goals saved above expected.
Even-strength offense and defense are teammate-adjusted. Instead of crediting a player for everything that
happens while he's on the ice (which would reward a fourth-liner for sharing shifts with a superstar), we compare
how his team does with him on the ice versus with him on the bench. That "relative" difference is what he
personally brings.
Strengths
- It's built on transparent, public data anyone can check, so the whole thing is reproducible.
- It captures the full game (defense, special teams, and drawing penalties), not just goals and assists.
- The on-ice-minus-off-ice adjustment strips out most of the "he just plays with better players" effect.
- Everything is measured in goals, which converts cleanly to dollars, so it's directly comparable to a cap hit.
Weaknesses
- The teammate adjustment doesn't fully account for quality of competition or which specific linemates a player had.
- Because it compares on-ice to off-ice, it can over-credit a strong player on a weak team.
- Power play and penalty kill aren't teammate-adjusted yet, so special-teams specialists can be over- or under-valued.
- A single season is a small sample, especially for defense and goaltending; some of what we measure is genuine skill, and some is luck.
Where the numbers come from
Player production and expected goals are pulled from MoneyPuck.com. Salaries
and cap hits come from Spotrac, and cap ceilings are the league's published
figures for each season.
How we score a GM
GMAR (GM value Above the Rate) is the headline number. Add up every player's value above or below the
league market line and you get how much production a roster delivers beyond what its payroll should buy. Positive
means the GM is getting more than he's paying for; negative means the market would have given him more for the
same cap space.
GSAT: comparing seasons fairly
Raw GMAR isn't comparable across years. The spread between the best and worst rosters was much wider during the
flat-cap seasons that followed the pandemic, so a +80 season in 2025-26 can be a bigger achievement than a +200
season in 2023-24. GSAT (Greatest Season of All Time) fixes that: it measures how many standard deviations a
GM's season sits above or below the league-average GM that year. A GSAT of +1.0 means one standard deviation
better than average; 0 is exactly average. Because every season is put on the same scale, the single highest GSAT
anywhere on the site is, quite literally, the greatest cap-value season on record.
Self-Built: whose roster is it?
A GM shouldn't take full credit, or full blame, for players he inherited. Using public transaction records, we tag
every player on a roster by how the current GM came to have him: drafted, signed to his current deal,
traded for, or inherited from a predecessor. Self-Built is the share of the roster's cap on players the GM
actively chose. It sits beside the score rather than inside it, so you can see at a glance whether a great (or awful)
number belongs to the person in the chair.
Signing GMAR: value follows the contract
The Signing GMAR tab regroups the same per-player value by the GM who signed the contract, wherever the
player ends up playing. A bad deal follows the GM who committed to it even after the player is traded, and a bargain
keeps paying its signer. Entry-level deals are tracked separately, since those reflect drafting rather than a
free-agent decision.
Still a work in progress
There are still adjustments to make: the teammate model is a first pass, and special teams need the same
treatment. But it's already a genuinely interesting lens on who's getting the most out of their cap space. We'd
love feedback, which for now can be sent to
Avi Bieler's LinkedIn page.