Projecting a prospect

The useful question about a draft pick is rarely how good a player will be. It is how wide the range is, and how bad the bottom of it gets. The model therefore estimates a distribution, not a number.

What is predicted

Three fixed horizons, each anchored to the draft year and each measured in the same impact units the value board uses:

Peak is a maximum over up to seven noisy draws, so it is upward-biased by construction: even a player whose true level never changes will post a best season above his mean. That is a property of the target, not an error in the model — but it means peak should be read as "how high did this player ever get", not "how good was he at his best", and the two are not the same quantity when seasons are measured with error.

Fixed horizons rather than career averages, deliberately. A career mean is an artifact of when a player happened to be drafted: players from older classes have longer careers to average over, so a career-based target would encode era rather than ability.

Censoring, and why busts must count

This is the design choice that most affects what the model learns. Train only on prospects who made it and the model learns that draft picks reliably become NBA players, because in its training data they always did. Every projection is then conditioned on survival, and the bottom of the fan — the part a general manager is actually buying insurance against — is missing.

The fix is a two-part (hurdle) model rather than a flooring rule. The extensive margin is its own head: a propensity that the prospect ever becomes an NBA player at all, fit on every drafted and undrafted prospect in the class. The intensive margin — availability and on-court quality — is fit conditional on playing, so the quality heads are never asked to explain a zero that means "was not there" rather than "was there and was bad".

The two are recombined at scoring time. Realized value is a propensity-weighted mixture of a floor set below the worst player who plays and the played-case availability × quality distribution. So a prospect the model thinks probably never sticks ranks beneath a mediocre-but-real rotation piece, which is the ordering a team wants, and the never-play mass shows up in the fan as genuine downside instead of being averaged away.

This replaced an earlier Heckman inverse-Mills selection correction. Seasons that simply have not happened yet remain genuinely missing and are excluded from the relevant target — unobserved is not the same as zero.

What the board ranks on: value to the drafting club

The quality and availability heads describe a player. A draft pick is bought by a club, and what the club gets is not the same thing: it holds the player on a cheap rookie deal, may lose him before it ends, may re-sign him, and if he becomes a star pays him the maximum, which is far below what he produces. The board therefore ranks each prospect on the expected value of his whole career to the club that drafts him, in draft-night dollars (every season priced at the draft season's cap), and shows it season by season beneath each prospect.

The career, season by season

There is one projection per season through season 20. Careers run that long: top-five picks still averaged about 40% of their peak value in season 12 and reach roughly zero by season 20. Seasons 1–7 each have their own quality and availability heads. Few careers are long enough to fit a head for each later season — 564 players have a quality label in season 8, 71 in season 16 and 7 in season 20 — so seasons 8–20 come from one gradient-boosted model per quantile, fit on every player-season from 8 on with the season as a feature. It borrows across neighbouring seasons and keeps the arc smooth. Out of fold, the realized season falls inside its 10th–90th band 80–89% of the time over seasons 8–16, and each late season ranks players at least as well as the season-4 projection does.

Widened, priced, then recalibrated

Two corrections, both on the model's own projected level and both fitted per class on the classes before it, as the projections are. Neither uses draft position: the pick is not a model input, and calibrating on it would hand the board the draft's own judgement and empty the comparison with draft order of meaning.

Spread first. The season projections were too narrow. Where a realized season falls within its own projected distribution should be uniform; instead too few landed in the middle and too many in the tails, busts above all — for lottery picks in seasons 3–6, 10.3% fell below the projection's 5th percentile and 17.9% in its 50th–75th band, against 5% and 25%. Each distribution's levels are remapped (quantile recalibration): an outcome at level u is read at the level where realized seasons of prospects projected alike actually fell, by projected level and season group. Out of sample, on classes the remap never saw, those shares become 8.6% and 23.8%. The bust tail is only partly closed: projected level separates mid-lottery picks from the rest less cleanly than the pick would.

Then level, in dollars. Priced at the open-market rate, the widened projections were still too flat: over every prospect-season, with never-played prospects at $0, top-five picks returned more than projected and second-rounders less (the table below shows the result after the fix, by pick range). An isotonic map from a prospect-season's projected price to what prospect-seasons projected at that price actually returned corrects it. Each outcome's price that season is scaled to match, so the outcomes keep their order. The map is convex — a season projected at 33% of the cap maps to 47%, one at 10% to 13%, one at 1% to 0.6% — and it applies to dollars; the career-trajectory chart shows the model's wins before either correction.

Held, re-signed, paid the max

Each of 40 comonotonic outcome draws carries its own path: a star draw is held, re-signed and paid the max; a fringe draw is waived or walks. The value is the mean over draws, or its certainty equivalent under the risk slider. Draft surplus is that value minus the rookie scale.

Is it right?

Scored against what each drafted player actually returned his drafting club, classes 2007–2016, on the board's own rules: realized wins at the open-market price while the club (or a club it traded him to) held him through the rookie deal, then, while still held, value minus salary in seasons paid the max — negative when the deal sank — and nothing for a non-max deal. Predictions stop at the same season as each class's record (season 10 to 19).

PicksValue to club, predictedRealized After the rookie deal, predictedRealizedKept into season 5, predictedRealized
1-5$66.5M$67.8M$24.1M$20.6M54%56%
6-14$40.0M$41.8M$12.4M$10.4M42%37%
15-30$20.4M$19.2M$4.1M$3.0M28%26%
31-60$7.7M$5.7M$1.1M$0.3M8%8%

Ranking the lottery, where the decision is and where re-signing value sits: within-class Spearman with realized value to the club is 0.420, against 0.423 for the same valuation stopped after four seasons and 0.159 for draft order (139 lottery picks). The whole career beats four seasons by -0.003 a class, a 90% class-bootstrap interval of -0.051 to +0.034 — not distinguishable from a tie — and draft order by +0.261 (+0.146 to +0.376), better in 9 of 10 classes. Over every drafted player (595) the figures are 0.516, 0.529 and 0.507. Mostly, the longer horizon gets the level right and does not yet rank better: whether a given star re-signs is close to a coin flip, and that noise dilutes a ranking as much as the extra value informs it.

What is still off: mid-lottery picks are still kept into season 5 a little too often, because the widened projections still miss some of their busts (above). The realized side is measured in this site's own units (its wins, its price curve), so this is a test of the board's internal consistency with its own record, not against an outside measure of value.

Scouting reports, and who wrote them

Most inputs here are measurements: box production, tracking, combine anthropometrics, competition strength. One is not. Each prospect who has one also carries a scouting rubric — ten dimensions scored 1–10, shown on the draft board when you open a row.

Those scores are not this site's opinion of the player, and it matters that the page says so. The underlying judgements are NBADraft.net's, taken from their pre-draft player profiles: a published attribute grid plus free-text Strengths and Weaknesses written by their scouts. A language model reads that text and scores it against a fixed rubric — shooting, defense, athleticism, feel, motor, self-creation, upside, bust risk, and two flags for injury and character concerns. The model is summarising someone else's assessment into numbers. It is not evaluating the player.

The two flagged dimensions deserve their own sentence. "Injury concern" and "character concern" are scored the same way as the rest: from what the scout wrote, with a neutral 5 where the report is silent, and no inference drawn from omission. They describe what a scouting report raised about a named, usually 18-to-22-year-old person before he was drafted. They are worth publishing because a reader deserves to see the same inputs the model saw, and worth labelling clearly because a number on a bar chart looks like a measurement no matter where it came from.

Coverage is partial and not random. 1,191 prospects have a report; the rest show "no scouting report on file" rather than an imputed score. NBADraft.net profiles the players their audience cares about, which skews toward the top of each class — so the rubric is densest exactly where the draft is most consequential, and thinnest among the undrafted, where the model relies on the measured inputs alone.

Two wrinkles worth stating because they affected the data. The site serves two attribute grids: guards and wings get "Ball Handling" and "Passing" where big men get "Post Skills" and "Rebounding". Only the guard set was parsed at first, so 404 big men carried two empty fields that were quietly filled with the population median — a seven-footer scored on a guard's ball-handling. And player URLs are built from the name, so every hyphenated name resolved to a dead address and was silently absent: Karl-Anthony Towns, Shai Gilgeous-Alexander and 20 others had no report at all until that was fixed.

Timing. The reports are pre-draft and NBADraft.net does not re-grade players after the fact, so these features carry no knowledge of what the prospect went on to do. That is what makes them usable as inputs rather than leakage.

Estimator

For quantile τ, the models minimize the pinball loss

Lτ(y, ŷ) = max{ τ(y − ŷ), (τ − 1)(y − ŷ) }

which is minimized in expectation at the τ-th conditional quantile. Fitting τ ∈ {0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95, 0.99} separately traces the predictive distribution without assuming it is symmetric or Gaussian — and prospect outcomes are neither, being bounded below by replacement level and long-tailed above.

Two model families are fit: a quantile neural network with a learned embedding for competition circuit — college conference or international league, so league strength is estimated rather than hand-assigned — and a quantile gradient-boosted tree ensemble with circuit as a categorical. Network predictions average several independently initialized seeds, since at this sample size initialization noise is not negligible.

Inputs are pre-draft only: competition-adjusted college and international production, combine measurements, published big boards, and high-school all-star events. Draft position is never an input. It is held out so that model and market can be compared honestly, which is the comparison below.

Sample: 4,741 prospects across 301 engineered features.

Validation

Evaluation is expanding-window over draft classes: fit on earlier classes, predict later ones, never the reverse. Early stopping uses an inner split of the training classes, so the outer validation fold is untouched during fitting. Every figure below is out-of-fold.

Rank correlation between predicted and realized outcome, against the draft order itself as the benchmark to beat:

HorizonNeural netGradient boostingDraft ordern
Rookie year0.3640.3730.157786
Four-year mean0.3610.4130.175973
Peak0.4180.4560.266985

Both models rank prospects substantially better than the league did, on every horizon. The margin is widest early — the draft order's correlation with rookie-year impact is close to nothing — and narrows for peak outcomes, which is intuitive: teams are drafting for upside, and are better at identifying it than at forecasting immediate contribution.

The tree ensemble outperforms the neural network on all three horizons, despite the network being the model whose predictions are shipped. On tabular data at this sample size that ordering is common, and it is reported here rather than resolved.

Are the intervals honest?

A quantile model earns trust by coverage: the share of realized outcomes falling at or below each predicted quantile should equal the nominal level.

Horizonp5p10p25p50p75p90p95p99
Rookie year0.0870.1370.3040.4940.7000.8440.8990.939
Four-year mean0.0820.1620.3440.5480.7270.8470.8810.933
Peak0.0650.1490.3360.5530.7250.8210.8530.868
nominal0.0500.1000.2500.5000.7500.9000.9500.990

Medians are well calibrated — close to 0.50 on every horizon, so the central projection is neither optimistic nor pessimistic on average. The intervals are too narrow at both tails. Around 15% of outcomes fall below the stated 10th percentile and around 16% land above the stated 90th, against 10% each.

The two outermost levels are the reason the fan was widened from five quantiles to eight. p95 and p99 are the region a draft pick's value actually lives in — one franchise player pays for a decade of misses — and reading them off a linear extrapolation past p90, which is what a five-level fan forces, is guessing at exactly the part that matters most. They are fit directly now, and they are the least well covered levels in the table: 13% of peak outcomes exceed the stated 99th percentile.

Read the fans as somewhat too confident. Real busts are worse and real stars are better than the published bands imply, and the error is symmetric rather than a directional bias. Published intervals are conformally widened to correct for this; the table above is the raw model, before that correction.

Limitations