← About DARKO

How DARKO Calculates Fair Salary

On the Active Leaderboard, Fair Salary is labeled $ Value. The underlying field is sal_market_fixed. It is an annualized estimate of a player's projected on-court value, not a prediction of what contract the player will sign.

The calculation

  1. Estimate value above replacement. DARKO combines DPM with its time-decayed minutes estimate (tr_minutes):
    Game value = (DPM + 2.0) × (tr_minutes ÷ 48)
    The 2.0 comes from a replacement level of −2.0 DPM. Both impact and workload therefore affect the result. After the regular season, the current snapshot uses each player's same-season regular-season MPG in place of tr_minutes.
  2. Set one dollar rate for the season. The estimated league-wide payroll per regular-season game is divided by the average league-wide game value per game. Using one fixed seasonal exchange rate keeps a player's estimate from moving merely because the other players in a single daily snapshot changed.
  3. Annualize and smooth.
    Raw fair salary = game value × seasonal dollar rate × 82
    Historical daily values are Kalman-smoothed for each player, with higher-minute observations carrying more weight, so one game does not whipsaw the running estimate. After the regular season, the current snapshot shows the raw fixed-rate value described above.

Related fields

Salary actual_salary
Reported salary expressed in 2025–26 cap dollars by preserving the player's salary as a share of that season's cap.
Surplus surplus_value
sal_market_fixed - actual_salary. A positive number means DARKO's fair-salary estimate is above the player's Salary; a negative number means it is below.

Fair Salary is deliberately an on-court value estimate. It does not apply the NBA's minimum- or maximum-salary rules, and it does not price age, contract length, options, negotiating leverage, roster fit, or positional scarcity. Below-replacement estimates can therefore be negative.