Fantasy Draft Model & Backtests

A value model, coaching/player tendencies, and out-of-sample draft-strategy backtests off nflverse play-by-play. Generated 2026-07-01. Edges are modest, tiebreaker-sized, and relative to ADP — reading, not gospel.

WR buys6ascending role + freed targets
RB buys10pass-catchers at a discount
QB leans9mobility tiebreaker (no edge)

Top value, cross-positionall positions

One board across positions: each buy's within-position score scaled by its long-run edge (WR ×3, RB ×27, QB ×1) — the simple 2013–24 average separation, which beat era/recency weighting in a walk-forward. So RB value plays top the board (sturdiest edge); WR is real but boom/bust; QB is noise. Vol = weekly floor–ceiling shape (roster-balance lens, not a value edge). Context = the prior-season injury/O-line caveat the rating is blind to — verify names.

PosPlayerTeamADPValue Vol (floor–ceil)Prior-yr context
RBRico DowdlePIT74.017.4BOOM 5–23OL sack-3.6
RBAaron Jones Sr.MIN84.611.0bal 7–1512g hip (recurs), season-ending -> AVOID / QB hurt / OL sack+2.8
RBRJ HarveyDEN84.911.0BOOM 6–22
RBRachaad WhiteWAS98.610.5bal 5–13QB hurt
RBKenneth GainwellTB98.08.3BOOM 6–23
RBChuba HubbardCAR80.66.4BOOM 4–17
RBWoody MarksHOU141.86.4BOOM 5–16QB hurt / OL sack-3.6
RBAlvin KamaraNO145.76.2bal 6–1411g knee (re-tear risk), season-ending -> AVOID / QB hurt
RBRhamondre StevensonNE75.75.9BOOM 5–22
RBTyrone Tracy Jr.NYG152.35.1BOOM 6–18QB hurt
WRTerry McLaurinWAS35.53.1steady 9–1510g quadricep (recurs ~17%) -> AVOID / QB hurt
WRRicky PearsallSF104.12.6BOOM 3–159g knee (re-tear risk) -> buy-low / QB hurt / OL sack-1.9
WRChristian WatsonGB61.22.4BOOM 7–2210g knee (re-tear risk) -> buy-low
WRParker WashingtonJAX73.62.3BOOM 6–19
WRRashee RiceKC26.52.2steady 12–258g concussion (repeat-risk) -> buy-low
WRAlec PierceIND65.51.7bal 6–18QB hurt

WR buysvalidated edge · +9.6 / 59%

Ascending returning WR (5–22% prior role) on a high-vacancy team (league median 22%). A new QB resets the role-trend. TE = a target-hog tight end shrinks the WR pie (×0.8, or ×0.6 on a bad offense).

WRTeamADPPos#Role ΔroleVacancyQBTEScore
Terry McLaurinWAS35.5WR1414%reset43%new96
Ricky PearsallSF104.1WR4610%reset31%new80
Christian WatsonGB61.2WR2712%+0%34%?74
Parker WashingtonJAX73.6WR3518%+8%24%same71
Rashee RiceKC26.5WR1114%+9%31%sameTE 27%69
Alec PierceIND65.5WR3116%+2%28%?TE 26%53

RB buysfloor play · +4.5

Backfield opportunity is priced for RBs — the pulse is a discounted RB (RB25+) with a pass-catching role × backfield clarity (clear lead +18.3 vs committee +2.1). +GL = owns the goal line (volatile TD ceiling, not a floor).

RBTeamADPPos#Recv role BackfieldScore
Rico DowdlePIT74.0RB2654%lead65
Aaron Jones Sr.MIN84.6RB3053%committee41
RJ HarveyDEN84.9RB3150%committee +GL41
Rachaad WhiteWAS98.6RB3449%committee +GL39
Kenneth GainwellTB98.0RB3364%backup31
Chuba HubbardCAR80.6RB2942%committee24
Woody MarksHOU141.8RB4047%backup +GL24
Alvin KamaraNO145.7RB4251%backup23
Rhamondre StevensonNE75.7RB2845%backup +GL22
Tyrone Tracy Jr.NYG152.3RB4348%backup19

QB leansefficient market · no edge

QB has no value edge (prior production & rushing both priced). The only tilt: among startable QBs (QB1–12), runners return cost (+7.3) vs pocket passers (−2.6). A tiebreaker — and see the Backtests tab: streaming keeps pace with drafting one.

QBTeamADPPos#Rush yds/g TierScore
Josh AllenBUF31.0QB137elite-run37
Lamar JacksonBAL52.0QB328dual-threat28
Patrick MahomesKC79.6QB531elite-run31
Drake MayeNE80.8QB628dual-threat28
Justin HerbertLAC83.0QB732elite-run32
Jayden DanielsWAS84.9QB840elite-run40
Jalen HurtsPHI91.1QB927dual-threat27
Trevor LawrenceJAX99.1QB1122dual-threat22
Brock PurdySF99.1QB1217dual-threat17

Coach pass-rate by game script2025 · all 32

Each coach's expected pass rate % as the game script shifts from big favorite → pick'em → underdog (spread is the pre-game script proxy). A wide spread across the row = script-sensitive; PROE@even = pass-over-expected at a coin-flip game = the genuine pass-lean regardless of script. Recency-weighted, shrunk to the league for thin histories. Reading is a scheme identity, not a value edge (coach PROE is priced into ADP).

TeamCoachfav −7pick'em dog +7PROE@even
CINZac Taylor59%62%66%+2.4
KCAndy Reid58%61%64%+3.7
LASean McVay55%59%63%-0.8
HOUDeMeco Ryans54%59%64%-1.3
LACJim Harbaugh53%59%65%-0.4
DENSean Payton55%59%62%-0.6
JAXLiam Coen53%58%63%-0.7
DETDan Campbell53%58%62%-4.0
TBTodd Bowles52%58%63%-1.9
MIN*Kevin O'Connell53%58%62%-1.8
ARI*Jonathan Gannon53%58%62%-1.9
LV*Pete Carroll53%57%62%-2.0
SEA*Mike Macdonald52%57%62%-2.3
SF*Kyle Shanahan52%57%62%-2.1
DAL*Brian Schottenheimer53%57%62%-2.2
CLE*Kevin Stefanski52%57%62%-2.5
PIT*Mike Tomlin53%57%62%-2.4
NO*Kellen Moore52%57%62%-2.3
IND*Shane Steichen53%57%62%-2.5
TEN*Brian Callahan52%57%62%-2.7
NEMike Vrabel52%57%62%-1.3
MIAMike McDaniel52%57%62%-3.3
ATL*Raheem Morris52%57%62%-3.0
NYG*Brian Daboll52%57%61%-2.6
CHIBen Johnson52%56%61%-2.9
NYJ*Aaron Glenn52%56%61%-3.0
WAS*Dan Quinn52%56%60%-2.5
PHINick Sirianni50%56%61%-2.9
CARDave Canales50%55%61%-3.9
GBMatt LaFleur50%55%59%-4.1
BUFSean McDermott50%55%59%-1.9
BALJohn Harbaugh47%52%57%-6.5

* = new primary QB for 2025 (15 teams) — the coach's learned tendency is discounted toward league average (it doesn't carry across a QB change: same-QB PROE carries at +0.44, new-QB at −0.14).

QB throw-location profiles2025

Where each QB lives, from play-by-play (≥200 attempts). aDOT = mean air yards; deepOut% = deep & to a sideline (gunslinger pole); shortMid% = short & middle (rhythm pole). A QB's air profile is a stable identity (aDOT persists +0.47 y/y) — useful context (a deep-outside QB drives his WRs boom/bust), but priced, not an edge.

QBAttaDOTdeep%mid% deepOut%shortMid%comp%
M.Mariota22510.231%18%25%13%62%
M.Stafford5949.127%21%22%16%65%
D.Maye4929.125%23%19%17%72%
J.Hurts4529.023%16%18%12%65%
J.Love4388.824%20%16%12%66%
L.Jackson3008.826%24%21%19%64%
J.McCarthy2438.827%18%23%14%58%
T.Lawrence5578.825%22%20%18%61%
C.Williams5668.725%22%19%16%58%
T.Shough3248.421%20%19%19%68%
M.Penix2768.324%11%21%8%60%
J.Dart3388.221%25%17%21%64%
B.Mayfield5428.122%20%18%16%63%
C.Stroud4208.119%18%16%15%65%
P.Mahomes5008.122%18%18%14%63%
D.Prescott5978.121%19%15%14%68%
D.Jones3828.021%19%17%15%68%
S.Rattler2548.020%21%17%18%69%
S.Darnold4737.919%22%16%20%68%
J.Herbert5127.819%22%16%20%66%
J.Brissett4847.620%21%15%16%65%
B.Purdy2847.618%26%12%19%69%
M.Jones2867.419%27%14%22%70%
J.Flacco4127.421%30%17%26%61%
B.Nix6117.320%16%17%14%64%
J.Allen4597.321%21%17%16%69%
C.Ward5377.320%20%15%16%60%
J.Burrow2597.216%19%13%15%67%

Offense personnel & formation2025

Per-team snap rates from NGS participation charting. 11=1RB/1TE/3WR, 12=1RB/2TE/2WR, heavy=2+ backs/3+ TE; shotgun/under-center formation rates; light box=defense showed ≤6 in the box (a run-friendly look). Scheme context for a player's usage environment.

Team11 pers12 persheavyshotgun under-Clight box
TEN71%17%8%71%27%72%
TB70%20%4%62%34%75%
HOU70%8%10%62%38%68%
NO68%12%11%77%20%74%
JAX68%19%5%59%38%73%
NYJ68%17%8%70%26%64%
CAR67%20%10%60%32%65%
DAL66%16%5%62%36%68%
CIN65%30%1%80%17%77%
IND64%25%10%69%27%70%
DEN63%11%15%61%35%71%
MIN63%20%7%56%44%72%
BUF63%11%18%50%48%59%
PHI62%26%8%71%22%63%
NYG62%33%5%71%22%70%
LAC61%6%13%67%29%66%
DET60%23%7%52%48%66%
LA60%9%31%42%57%62%
LV58%34%8%64%33%75%
WAS58%22%13%72%11%71%
KC58%28%9%78%18%79%
CHI53%31%12%52%46%67%
NE52%19%11%57%43%60%
GB52%30%4%57%36%67%
ARI48%29%17%70%28%72%
ATL45%38%7%48%19%70%
CLE45%42%9%66%32%67%
SF44%11%8%53%45%70%
SEA43%29%12%44%53%57%
PIT41%25%22%66%32%64%
MIA35%10%15%53%28%67%
BAL31%36%14%61%34%50%

The one principle

LEVEL is priced, CHANGE is the edge. A standing stat is already baked into ADP and a player's own prior-year numbers, so modeling it double-counts — it shows ~no edge. Only a forward change not yet in the prior outcomes is exploitable. That's why the draft is largely efficient (the surviving strategies are consensus) and the real edge is in-season. Every number below is out-of-sample 2014–2024, PPR, relative-to-ADP; edges are modest.

Quarterback — stream itqb_streaming.py

Starting the biggest pre-game favorite among QBs you didn't draft in the top 50 keeps pace with an early-drafted QB — and it survives a streaming-heavy league.

strategypts/wkQB1-week%note
stream biggest favorite18.852%the cheap play
— if 2 rivals stream (3rd-best)18.150%barely dented
avg drafted QB (ADP≤50)20.4~1.5/wk more, for a pick

When to draft one: only a genuine top-3 QB (going ~picks 20–38) beats streaming, and only by ~1.3–1.7/game. QB4–7 are a wash; QB8+ is worse than streaming. Favoredness predicts QB points (corr +0.22; favorite 18 vs underdog 14).

Running back — one Hero, then WRdraft_strategy_sim.py · rb_scarcity.py

Draft archetypes land within ~1% on total points, but front-loading RB is the worst and the trend has moved against it. Edge vs best-available, by era:

strategy2014–172018–20 2021–24
Robust-RB (RB rds 1–2)+2−30−3
Hero-RB (1 RB, then WR)−1+13+0
Zero-RB (no RB early)−1+12+8

RB scarcity is mostly a myth: the elite-to-replacement (VBD) premium is identical for RB and WR (+7.1 ppg). It's real only at RB1 (25.2 ppg, the single best asset → take one elite back) and via injury (40% of top-24 RBs miss time vs 26% for WRs). Drafting your first 3 picks all-RB costs ~30 points vs all-WR. So: lock one elite RB, then go WR-heavy, and be the mid-season buyer of RBs, not the one who overpaid to draft fragile ones.

Roster construction — steady early, boom lateroster_volatility_sim.py

You win weeks, not points, so the volatility shape matters. Holding mean constant (only the variance mix varies):

buildas favorite (win%)as underdog (win%) smash-week%
all steady69%39%7%
all boom-bust61%39%14%
floor-early / ceiling-late66%39%11%
steady + 1–2 boom67%39%9%

At even strength the mix is ~neutral (variance doesn't beat a coin flip). Its value is directional: favorites want steady (lock in the edge); underdogs & the playoffs want ceiling (smash weeks beat elite teams). Best structure: anchor your studs steady, take boom-bust swings in the late/replaceable slots. Boom-bust in your stud slots is the worst build.

The in-season edge — waivers & the opportunity triggerwaiver_timing.py · opportunity_trigger.py

The draft is efficient; the waiver wire is not — it rewards speed and activity, not information ADP already has. This is the one genuinely unpriced edge.

Confirmation curve — given a waiver player's last weeks were startable, odds his next game is startable:

after…P(next startable)next-game pts
any waiver game (base)15%6.0
1 startable week33%10.5
2 startable weeks42%12.4
3 startable weeks46%13.3

One startable week doubles the odds; confirmation has steep diminishing returns. ~28 flex / ~13 solid-starter breakouts surface off waivers each season, most by week 4. React fast and churn — a wrong dart costs nothing (drop him), but waiting loses you the player and 50+ points. Waiting for confirmation is the trap.

Opportunity trigger — when a drafted starter is ruled Out (known pre-game), grab his backup on the news. Measured leak-free (the predictable prior-weeks #2):

positionbackup ptslift vs baselinestartable% grabbable off waivers%
RB handcuff11.1+4.746%67%
WR (a dart)10.7+1.135%59%

The RB handcuff on an injury is the highest-confidence claim in fantasy — grab it the moment the starter is Out, no confirmation needed. WR triggers are a dart (vacated targets scatter, so you can't tell which WR benefits).

What did NOT work (the graveyard — all priced or null)

Coach PROE · raw target share / WOPR · RB goal-line volume · RB game-script (every form) · TE blocking · TE→RB and QB→RB vulturing · early-down run/pass mix · new-play-caller reset · front-zone explosiveness · explosive-play rate · rushing-TD funnel · team EPA/quality · WR target-location mix · QB air profile · prior production / "proven-discounted WR" · a cheap WR on a good-QB team · aggregate-total gains from any draft archetype or stack. The pattern: team environment and standing production are priced; only player-level opportunity changes (vacated targets, ascending role, QB change, committee shift) survive.