Every number on this site can be traced back to this page.
A model you can’t interrogate is a take with a spreadsheet. This page states the arithmetic, names the data sources, admits which defaults are judgment calls, and lists what the model leaves out — so you can decide how much to trust it, and where to disagree.
The model, in full
Apron-Adjusted Surplus Value (AASV)prices a player twice. First, what he produces: his estimated impact above a replacement-level player, scaled by his minutes into net points, converted into wins, and priced at the market rate for a win. Second, what he truly costs: his cap hit, multiplied up if his team sits in the CBA’s luxury-tax aprons, where every payroll dollar carries penalties. AASV is the gap.
production = (impact − replacement level) × possessions ÷ points-per-win × $-per-wintrue cost = cap hit × apron multiplier
AASV = production − true cost
Worked example: a player with +4.0 estimated impact over 2,400 minutes clears replacement level (-2.0) by 6.0 points per 100 possessions. That’s 5,000 possessions → 300 net points → about 9.8 wins → roughly $34.4M of production. If he earns $30M on a second-apron team (×2.0), his true cost is $60M — and a “max player” becomes a net negative on the ledger. Move the sliders and that verdict moves with you.
What the impact metric actually is
The number the site labels est. impact is the NBA’s own estimated net ratingfrom stats.nba.com’s estimated-player-metrics endpoint — an estimate of the score margin per 100 possessions with the player on the floor. It is not EPM, RAPM, or any proprietary all-in-one metric, and it is noisier than the best of those: it does not fully separate a player from his lineup. Where the live feed has never run, the site falls back to a checked-in snapshot of Box Plus-Minus (BPM) approximations, and each player page says which source it is using. When two sources disagree about the same player, the model treats that disagreement as a research question, not an inconvenience — see the docket.
Where the defaults come from
Honesty first: the defaults are editorial judgment anchored to public analysis, not fitted parameters. Nobody regressed $3.5M-per-win out of a dataset; it sits in the range public estimates of the market price of a marginal win have occupied in recent CBA seasons, and the 30.5-points-per-win conversion is a standard rule of thumb from the public analytics literature. The apron multipliers (1.0× / 1.5× / 2.0×) encode a view about how much tax penalties and roster restrictions really cost a front office — a view reasonable people price differently. That is exactly why every one of them is a slider with named presets: the model refuses to pretend its calibration is a fact. If you disagree with a default, you don’t have to trust us — change it.
The data
The site currently tracks 178 contracts across 30 teams— the top of each team’s cap sheet, not full 15-man rosters. Contract figures are hand-curated from public reporting and are approximations, not licensed cap-sheet data; treat dollar figures as close, not exact. Stats refresh nightly from stats.nba.com when the feed cooperates — this deployment is still running on the snapshot.
What the model leaves out
The honest limits, in one place: team rollups cover tracked players only, so a team with more tracked contracts shows more total production — team figures compare cap-sheet tops, not full rosters. There are no player ages in the data; aging risk is proxied from contract length and multi-season trends, and says so where it appears. The trade machine checks salary matching and apron aggregation, not the full CBA — no trade exceptions, base-year rules, or signed-and-trade mechanics. And the Franchise Strategy Index is an experimental composite whose weights have not been backtested against real outcomes. Every verdict on this site should be read the way the badges now say it: under these assumptions.
When the model changes its mind as real data moves, it says so in public — that record is the Open Ledger.