NSBA Draft Analyticsembargoed · 2026-06-06

22_pick_value.md

22 — Snake-Draft Pick-Value Chart (Jimmy-Johnson analog)

22 — Snake-Draft Pick-Value Chart (Jimmy-Johnson analog)

Date: 2026-05-30 Script: scripts/pick_value.py (reproducible) Outputs: outputs/pick_value_chart.csv (84-slot tradeable table, 14-team draft) Env: /home/david/code/nsba/.venv/bin/python

READ THE CAVEATS FIRST. This is built on 3 draft seasons and ~124 picks with observed game value. The primary curve uses 144 nsba2+nsba3 picks; the single fully-clean season is nsba2 (60/60 picks matched and played). nsba1 contributes only 11 resolvable picks (its game sheets use nicknames, so most picks can't be linked to game stats) and is sensitivity-only, not in the curve. Every number below is a small-n point estimate; treat the shape as the result and the per-slot values as ± a lot (95% bootstrap bands shipped in the CSV are wide).


TL;DR

  1. The pick-value curve is steeply convex, not flat. Realized value falls off fast through round 3, then plateaus. Round 1 retains only 46% of its value into round 2; rounds 5–6 are nearly indistinguishable. An exponential value = 0.285 + 2.47·exp(−6.28·frac) fits far better than a linear chart (corr with observed WS 0.62 vs 0.38 for linear).
  2. No classic "Loser's-Curse" flattening at the top. The top pick is not worth less than linear intuition — it is worth more. The quadratic fit is convex (a₂ = +3.5), the signature steep-top/flat-tail Jimmy-Johnson shape.
  3. The real loser's-curse signal is variance, not mean. Round-1 picks are both high-value and low-risk (CV 0.78, 15% bust rate). Late picks are lottery tickets: round-5 CV 1.40 with a 69% bust rate. So the premium you pay for an early pick buys reliability as much as ceiling.
  4. Tradeable chart (pick 1 = 100 pts): R1-start 100, R2-start 42, R3-start 22, R4-start 15, R5-start 12, R6-start 11. A trade is +EV for the side receiving more total points — but see the snake-turn and 4-6-picks/team rules below.

Method

Realized value metric

Each draft pick is joined by canonical_id to the same-season game spine and scored on realized value: - win_shares (primary) — from player_win_shares.csv, summed across teams for players who switched mid-season. Integrates rate, playing time, and team success in one number. This is the "did the pick actually help you win" metric. - toss_points and pptf (secondary / robustness) — pure volume and pure rate.

All three are GAME-world stats (standard SB scoring). The combine is not used here — pick value is judged on what the player did, not their tryout.

Snake-slot normalization

Picks are ordered within each season's draft by (round, overall_pick) → a snake slot 1..N, and a pick_frac = (slot−0.5)/N ∈ (0,1) so 12- and 14-team drafts pool on a common axis. nsba3 round-1 captains (overall_pick = 0) sort to the front of round 1.

Value coding for unobserved picks (the load-bearing decision)

Smoothing & uncertainty

A 3-parameter exponential floor + a·exp(−b·frac) is fit by nonlinear least squares to the raw (pick_frac, win_shares) points (value clipped at ≥0 for the chart unit). 95% bands come from 400 bootstrap resamples of picks. The CSV ships the fitted value and its band at every slot.


Results

Realized value by round (nsba2 + nsba3, zeros imputed for matched-no-production)

round n mean WS median WS mean toss_pts mean PPTF
1 26 1.715 1.546 93.2 0.540
2 26 0.793 0.645 49.1 0.334
3 25 0.568 0.312 33.8 0.252
4 26 0.380 0.139 23.1 0.169
5 26 0.231 0.099 12.3 0.158
6 15 0.123 0.000 6.7 0.179

Monotone in every metric. PPTF (rate) decays much more gently than win_shares (0.54→0.16, ~3×) while win_shares falls ~14× — because late picks lose on both rate and playing time/role, and because many never crack the rotation (median WS hits 0 by round 6). The chart's steepness is a volume+role story, not just a skill story.

The pick-value chart (every 7th slot; full 84 in CSV)

pick round value_WS 95% lo 95% hi value_pts
1 1 2.668 1.51 3.72 100.0
8 1 1.697 1.17 2.08 63.6
15 2 1.122 0.66 1.39 42.1
22 2 0.781 0.49 1.05 29.3
29 3 0.579 0.40 0.82 21.7
36 3 0.460 0.35 0.66 17.2
43 4 0.389 0.31 0.55 14.6
50 4 0.347 0.27 0.49 13.0
57 5 0.322 0.23 0.45 12.1
64 5 0.307 0.21 0.44 11.5
71 6 0.298 0.18 0.44 11.2
78 6 0.293 0.16 0.44 11.0

value_pts rescales win_shares to pick 1 = 100 (Jimmy-Johnson convention). Note the floor ≈ 11 pts: the model says even the last pick of a 14-team, 6-round draft is worth a non-trivial baseline (a marginal rotation buzzer), so deep drafts still have a flat but positive tail.

Loser's-Curse / flattening diagnostics

(a) No top flattening — the curve is convex (classic JJ shape). - Round-to-round retention: R1→R2 0.46, R2→R3 0.72, R3→R4 0.67, R4→R5 0.61, R5→R6 0.53. The biggest single drop is off the top, the opposite of a shallow early premium. - corr(observed WS, linear-rank) = 0.381 vs corr(observed WS, exp-curve) = 0.615 — the exponential dominates a linear chart, so paying linear prices for early picks undervalues them. - Quadratic value ~ frac: coeffs (a₂, a₁, a₀) = (+3.51, −5.19, 2.10). a₂ > 0 = convex = steep top, flat tail.

(b) The genuine curse is risk, not return. Variance/bust by round:

round mean WS std CV bust rate (WS < 0.25)
1 1.715 1.35 0.78 15%
2 0.793 0.90 1.14 39%
3 0.568 0.67 1.17 44%
4 0.380 0.55 1.44 58%
5 0.231 0.32 1.40 69%
6 0.123 0.18 1.44 73%

Early picks are reliable (low CV, low bust); later picks are lottery tickets. So the early-pick premium is partly an insurance premium. If your draft strategy is risk-seeking (punting on a known star to accumulate mid picks), the chart overstates what those mid picks return in expectation and understates their variance.

Robustness (the shape holds three ways)

cut R1 R2 R3 R4 R5 note
primary (nsba2+nsba3, zeros) 1.72 0.79 0.57 0.38 0.23 the chart
nsba2-only (gold, no imputation) 2.31 1.17 0.76 0.61 0.27 steeper top, same shape
observed-only (no imputed zeros) 1.94 1.03 0.79 0.45 0.25 drops nsba3 zeros
toss_points (volume) 93 49 34 23 12 same monotone decay

All cuts agree: steep through R3, flattening after. The nsba2-only curve is steeper at the top (first-overall nsba2 pick = 4.78 WS), so the primary chart is a conservative read of the top-pick premium.

nsba1 sensitivity (11 resolvable picks only — directional)

R1 mean 2.73, R2 1.12, R3 2.42, R4 0.08, R5 0.29, R6 0.00. Same broad decay, but the R3 = 2.42 blip is one lucky late hit out of 2 observed picks — pure small-n noise. Do not read nsba1 slot values; only the direction agrees.


Using the chart to judge a trade (and the rules that constrain it)

A pick trade is +EV for the side receiving more total value_pts (or, for a more robust call, whose package's 95% bands clear the other's). Worked examples:

Constraints that override raw points: 1. 4–6 picks per team (roster rule). You cannot trade down into 7+ picks or strip a roster below 4. The chart values slots, not feasibility — check the count first. 2. Snake order is fixed by standings, so a "trade" is really swapping which slots a team owns; both sides' packages must respect that each team ends with 4–6 picks. 3. Positional/coverage scarcity is not in this chart. A late pick that fills a punted subject (finding 16: don't-leave-a-hole) or a scarce CS answerer (finding 13: CS replacement floor is lowest) can be worth more than its slot points. Use the pick chart for quantity of value and the VORP/coverage boards for which player — they answer different questions.


Limitations (lead with these)

  1. n is tiny. 3 draft seasons; the curve rests on 144 picks, only 60 of them in a fully-clean season. Bootstrap bands are wide (pick 1: 1.5–3.7 WS). Slot-level numbers are indicative, not precise.
  2. Imputed zeros drive the nsba3 tail. Coding 31 matched-no-production nsba3 picks as 0 is defensible (they returned nothing observable) but it (a) assumes the master captured all their games and (b) is dented by the 4 team-only nsba3 R1 games. The observed-only and nsba2-only cuts (which avoid this) show the same shape, which is the reassurance — but the level of the late tail is sensitive to it.
  3. win_shares embeds team context. A pick's win_shares depends on its team's wins, so a great player on a bad team scores low. This is appropriate for a "did the pick help you win" chart but means the metric is not a pure player rating (use VORP, F13, for that).
  4. No era/difficulty adjustment. PPTF and win_shares are pooled across seasons with no difficulty normalization (F20 shows nsba3 was the easiest packet set). The chart is a cross-season average shape, not a season-specific price.
  5. Survivorship in matching. nsba1's nickname problem means we observe its resolved picks, which may skew toward players who also showed up in the combine/canonical roster — another reason it is sensitivity-only.
  6. The chart prices slots, not feasibility or fit. The 4–6 picks/team rule, snake order, and subject-coverage scarcity all sit outside it (see above).

Reproduce

/home/david/code/nsba/.venv/bin/python scripts/pick_value.py

Writes outputs/pick_value_chart.csv and prints the per-round table, the chart, the loser's-curse diagnostics, all robustness cuts, and the trade examples above.


NSBA Draft Analytics · embargoed until after the SSB draft · ← hub