active

Draft Cost vs. Reality

datanflfantasyastro

Fantasy drafts run on a shared fiction: that the market knows roughly what a player is worth, and that where he goes in the draft is a decent estimate of what you’ll get. This plots that fiction against the record. Every drafted skill player from 2016 to 2025 sits at his preseason ADP on the x-axis and his realized finish on the y-axis. The dashed diagonal is breaking even.

Seasons
2025

Projected ADP vs. end-of-season finish

Biggest swings in view

* did not finish the season — missed more than five games. These are excluded from the plot and every statistic above while “Full seasons only” is on, but you can still search one up: a player you pick is drawn and listed even when the filter is holding him back.

What the picture says

Average draft position is a weak predictor, and it is weakest precisely where drafts are won and lost. Pooled across ten years of full-PPR data, running backs taken in the first round finish two or more rounds below their cost 55% of the time. The rank correlation between where a player is drafted and where he ends up sits around 0.5 for running backs and receivers, and closer to 0.37 for quarterbacks and tight ends. The average player misses his draft slot by something like three rounds.

That is not an argument that drafting is pointless. It is an argument that a draft board built on point estimates is throwing away most of what it knows, and that the interesting question is not “where should this player go” but “what is the shape of the distribution he’s drawn from.”

The experience filter earns its place here. Pooled over ten years of full-PPR drafts, rookies bust least — 18% fall two or more rounds short of their draft cost, against 31% for players in year four and beyond — and they carry the most positive median swing, around +11 picks. The market prices experience as safety and gets paid for that less often than it thinks. Search highlights rather than filters, for the same reason the chart exists at all: a lone dot on an empty plot tells you nothing, so a matched player is drawn large and labelled while the rest of the field fades back behind him.

Reading the y-axis

There is no such thing as an end-of-season ADP — nobody runs drafts in January. The y-axis is the standard reconstruction: take the same drafted player pool, re-rank it by what those players actually produced, and lay them back onto the very same draft slots that pool occupied. Both axes then carry identical units, pick numbers, so the 45° line means exactly “returned what he cost.” The plot is drawn square so that line really is 45°.

The re-ranking uses points above positional replacement, not raw points. Ranking positions against each other by raw total would put every quarterback in round one — a QB1 outscores an RB1 by a hundred points and always has. Replacement level here is the 12th QB, 24th RB, 36th WR and 12th TE of a given season, roughly the last starter each position fills in a twelve-team lineup.

Where the numbers come from

ADP is preseason, from three platforms that publish a free, unauthenticated archive of real drafts: Fantasy Football Calculator covers 2016–2025 in all three scoring formats, MyFantasyLeague covers 2019–2025 in standard and full PPR on much larger samples, and Yahoo covers 2022–2025 through its public read-only API. Within a season they agree at ρ 0.92–0.96, about what you’d expect between genuine draft pools. Outcomes are regular-season production from nflverse. Players who were drafted but never played — Le’Veon Bell’s 2018 holdout, Andrew Luck’s 2017 shoulder — stay in at zero. That outcome is the entire point.

Yahoo is the only feed here that publishes an explicitly frozen preseason_average_pick next to its live one, which is what makes it safe. Its number is a single blend across all Yahoo leagues rather than a per-format series — for 2023 it correlates 0.950 / 0.956 / 0.960 with FFC standard / half / full PPR, near-identical, so it’s genuinely a blend and not secretly one format. It’s shown unchanged under every scoring selection, with only the finish axis moving.

What got rejected, and why

Several obvious sources were checked and excluded, for three genuinely different reasons. This is the part worth writing down, because “just add ESPN” is the first thing anyone asks.

ESPN — the data exists but isn’t preseason. Its public endpoint does expose an average draft position, and for healthy players it looks right: 2023 gives Christian McCaffrey 2.07 and Tyreek Hill 2.89, both correct. The tell is the injured. That same pull puts Justin Jefferson at 49.2 and Nick Chubb at 167.7, against true preseason ADPs of roughly 1 and 3 — Jefferson missed seven games, Chubb tore his knee in week 2. The figure keeps moving all season, so it correlates only 0.70 with FFC and every large gap belongs to a player who got hurt. ESPN’s editorial draftRanksByRankType is contaminated the same way: it lists Chubb’s 2023 PPR rank as 1716. Charting either as preseason ADP would leak the outcome into the predictor, and unlike Yahoo, ESPN publishes no frozen preseason field to fall back on.

Sleeper — the data doesn’t exist publicly. Its API documents six endpoint families (user, avatars, leagues, drafts, players, errors) and none is ADP. Draft endpoints exist, but each requires a draft_id, league_id or user_id you already know; there’s no way to enumerate public drafts, so ADP can’t even be computed by aggregation. Sleeper ADP you see elsewhere is somebody else’s panel, not Sleeper’s.

The Fantasy Footballers and Establish The Run — the data is the product. The Footballers’ ADP Platform Comparison tool is exactly what would fill the Sleeper gap: it covers Sleeper, ESPN, Yahoo and Underdog, and even exports CSV. It also sits behind the paid Ultimate Draft Kit. Establish The Run is subscription-only with rankings, projections and a dynasty ADP report, and offers no API. Both are selling this analysis for a living, so scraping either into a public page is a licensing problem before it’s a technical one. FantasyPros is the same story.

MyFantasyLeague’s own endpoint has a quieter version of the same trap: it blends dynasty and keeper drafts in unless you explicitly exclude them. Those boards price young players on career value, which in 2023 put rookie QB Bryce Young at 61.9 against a redraft ADP of 96.5 — nearly three rounds early — while veterans like Travis Kelce moved 0.3 picks. Left in, it would have made every rookie class look like a systematic bust. Filtering to redraft-only is what lifted cross-platform agreement from 0.81 to 0.92 at the low end.

Why the platforms carry different player counts

Each publishes a different length of board, and nothing can be done about it. FFC reports a fixed twelve-team, fifteen-round draft and stops dead at pick 180. Yahoo only publishes draft analysis down to about pick 135 — confirmed across three different sort orders and by paging its entire player universe, so that’s Yahoo’s limit rather than an artifact of how I fetched it. MFL imposes no cap and runs past pick 300.

That difference is not cosmetic, because the finish axis is pool-relative: players are re-ranked against the pool they were drafted from, so a shallower board leaves less room to fall and mechanically reports fewer busts. Take everyone drafted in the top 130 picks between 2022 and 2025 and ask how often they finished outside the top 130:

PlatformPool depthFell out of top 130ρ
Yahoo13810%0.50
FFC17817%0.45
MFL30327%0.49

Ordered exactly by pool depth. Yahoo’s entire pool is only about 138 deep, so falling out of the top 130 is nearly impossible by construction — that column is measuring the board, not the drafters.

So compare within a platform, not across. Bust rate, average miss and median swing all scale with board depth; the rank correlation is the one headline number that is scale-free, and it barely moves.