Surplus Value Calculator: Contract Cost vs. Draft Slot Production

ANALife Services AuthorityNational Calculator Authority›Surplus Value Calculator: Contract Cost vs. Draft Slot Production

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Surplus Value Calculator: Contract Cost vs. Draft Slot Production

Compare a player's actual contract cost against the expected production value from their draft slot to determine surplus or deficit value.

Draft Pick Number (1–260)

Player's Annual Contract Value (AAV) in $M

Player's Actual WAR per Season

Market Rate: $ per WAR (in $M, default 8.0)

Years of Pre-Arb / Arb Control Remaining

Calculate Surplus Value Results will appear here.

function surCalc() { var pickRaw = document.getElementById('sur-draft-pick').value.trim(); var aavRaw = document.getElementById('sur-contract-aav').value.trim(); var warRaw = document.getElementById('sur-war-per-season').value.trim(); var dpwRaw = document.getElementById('sur-dollars-per-war').value.trim(); var yearsRaw = document.getElementById('sur-service-years').value.trim(); var resultDiv = document.getElementById('sur-result');

// Validation if (pickRaw === '' || aavRaw === '' || warRaw === '' || yearsRaw === '') { resultDiv.innerHTML = 'Please fill in all required fields.'; return; } var pick = parseFloat(pickRaw); var aav = parseFloat(aavRaw); var war = parseFloat(warRaw); var dpw = dpwRaw === '' ? 8.0 : parseFloat(dpwRaw); var years = parseInt(yearsRaw);

if (isNaN(pick) || pick 260) { resultDiv.innerHTML = 'Draft pick must be between 1 and 260.'; return; } if (isNaN(aav) || aav AAV must be a non-negative number.'; return; } if (isNaN(war) || war 15) { resultDiv.innerHTML = 'WAR per season must be between -5 and 15.'; return; } if (isNaN(dpw) || dpw Dollars per WAR must be a positive number.'; return; } if (isNaN(years) || years 6) { resultDiv.innerHTML = 'Service years must be between 1 and 6.'; return; }

// --- Core Formulas ---

// 1. Expected WAR from draft slot using logarithmic decay model // Based on empirical draft value curves: top picks produce ~3–4 WAR/yr, late picks ~0.5 // Formula: expectedWAR = A * exp(-B * (pick - 1)) // Calibrated constants: A = 3.8 (1st overall WAR/yr), B = 0.018 (decay rate) var A = 3.8; var B = 0.018; var expectedWARperSeason = A * Math.exp(-B * (pick - 1)); expectedWARperSeason = Math.max(0.1, expectedWARperSeason); // floor at 0.1

// 2. Slot signing bonus amortized value (approximate, based on MLB slot values) // Slot bonus ≈ 10.0 * exp(-0.016 * (pick - 1)) in $M var slotBonus = 10.0 * Math.exp(-0.016 * (pick - 1)); slotBonus = Math.max(0.1, slotBonus); // Amortized over 6 years of control var amortizedSlotCostPerYear = slotBonus / 6.0;

// 3. Pre-arb / arb salary scale (approximate MLB averages) // Pre-arb years 1-3: ~$0.72M/yr (league minimum ~$720k) // Arb years 4-6: scale up 40%, 60%, 80% of market value var leagueMin = 0.72; // $M var totalControlCost = 0; for (var y = 1; y 0 ? actualMarketValuePerYear / totalCostPerYear : 0; var sviContract = aav > 0 ? actualMarketValuePerYear / aav : 0;

// 8. Expected vs Actual WAR delta var warDelta = war - expectedWARperSeason;

// Formatting helpers function fmt(v, d) { return v.toFixed(d !== undefined ? d : 2); } function fmtM(v) { var s = v >= 0 ? '+$' : '-$'; return s + Math.abs(v).toFixed(2) + 'M'; } function surplusLabel(v) { if (v > 2) return 'Strong Surplus'; if (v > 0) return 'Modest Surplus'; if (v === 0) return 'Break-Even'; if (v > -2) return 'Modest Deficit'; return 'Significant Deficit'; }

var html = '### Surplus Value Results '; html += ''; html += 'MetricValue';

html += 'Draft Pick #' + pick + ' — Expected WAR/Season' + fmt(expectedWARperSeason) + ' WAR'; html += 'Player Actual WAR/Season' + fmt(war) + ' WAR'; html += 'WAR vs. Draft Slot Expectation' + (warDelta >= 0 ? '+' : '') + fmt(warDelta) + ' WAR';

html += '— Draft Control Scenario —'; html += 'Estimated Slot Bonus$' + fmt(slotBonus) + 'M'; html += 'Amortized Slot Cost/Year$' + fmt(amortizedSlotCostPerYear) + 'M'; html += 'Avg Control Salary/Year (' + years + ' yrs)$' + fmt(avgControlCostPerYear) + 'M'; html += 'Total Cost/Year (Slot + Salary)$' + fmt(totalCostPerYear) + 'M'; html += 'Surplus vs. Draft Cost/Year' + fmtM(surplusVsDraftCost) + '/yr  ' + surplusLabel(surplusVsDraftCost) + ''; html += 'Total Surplus vs. Draft Cost (' + years + ' yrs)' + fmtM(totalSurplusDraft) + ''; html += 'Surplus Value Index (Draft)' + fmt(sviDraft) + 'x';

html += '— Contract AAV Scenario —'; html += 'Player Market Value/Year$' + fmt(actualMarketValuePerYear) + 'M'; html += 'Contract AAV$' + fmt(aav) + 'M'; html += 'Surplus vs. Contract AAV/Year' + fmtM(surplusVsContractAAV) + '/yr  ' + surplusLabel(surplusVsContractAAV) + ''; html += 'Total Surplus vs. Contract (' + years + ' yrs)' + fmtM(totalSurplusContract) + ''; html += 'Surplus Value Index (Contract)' + fmt(sviContract) + 'x';

html += '';

// Interpretation html += ''; html += 'Interpretation: '; if (surplusVsDraftCost > 0 && surplusVsContractAAV > 0) { html += 'This player generates surplus value under both the draft control cost and the contract AAV scenarios — a strong asset.'; } else if (surplusVsDraftCost > 0 && surplusVsContractAAV 0) { html += 'The player underperforms their draft slot expectation but the contract is team-friendly relative to market value.'; } else { html += 'The player generates a deficit under both scenarios. Production does not justify either the draft investment or the contract cost.'; } html += '';

resultDiv.innerHTML = html; }

#### Formulas Used

1. Expected WAR from Draft Slot: Expected WAR/Season = 3.8 × e−0.018 × (pick − 1) Logarithmic decay model calibrated so pick #1 ≈ 3.8 WAR/yr and pick #260 ≈ 0.15 WAR/yr.

2. Slot Bonus Estimate: Slot Bonus ($M) = 10.0 × e−0.016 × (pick − 1) Approximates MLB slot values; amortized over 6 years of team control.

3. Control Salary Scale: Pre-arb years (1–3): $0.72M/yr (league minimum). Arb year 4: 40% of market value; Year 5: 60%; Year 6: 80%.

4. Market Value of Production: Market Value/Year ($M) = WAR/Season × $/WAR

5. Surplus Value (Draft Control): Surplus/Year = Market Value/Year − (Amortized Slot Cost/Year + Avg Control Salary/Year)

6. Surplus Value (Contract AAV): Surplus/Year = Market Value/Year − AAV

7. Surplus Value Index (SVI): SVI = Market Value/Year ÷ Total Cost/Year SVI > 1.0 = surplus; SVI < 1.0 = deficit.

#### Assumptions & References

More Calculators

Read Next

Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...

References