This page documents the projection engine behind the numbers on the NFL Projections tab — what it is, how it was rebuilt and validated, and the one thing we want to be unmissable: these are context, not bets. Our own backtests show the betting market prices these stats efficiently.
Every player line on the Projections tab comes out of nflsim, a market-anchored usage × efficiency model. It starts from the betting market's game total and spread (the best public estimate of game environment), converts them to implied team points and play volume, splits that volume into official pass attempts and designed rushes, distributes the attempts/targets/carries across the roster using trailing usage shares gated by the current depth chart, and finally applies per-player efficiency rates (yards per target/carry/attempt, catch rate, TD rates) blended toward league priors. Because the anchor is the market line, the projections inherit the market's view of each game — by design. They answer "who gets the volume and what does it turn into?", not "is the line wrong?".
| Feed | Source |
|---|---|
| Play-by-play, weekly player stats, snap counts | nflverse (2016–present) |
| Depth charts | Weekly snapshots; current-season charts refreshed year-round |
| Market lines (total, spread), cross-book | TheOddsAPI capture — featured markets 2020+, props 2023+ |
| Game results + schedule spine | nflverse schedules/results |
A full accuracy audit (2026-07-01) of the first shipped engine found the share layer was fine but the team-volume level was not: pass-side volume ran ~+23–26% hot because dropbacks were being treated as official attempts and every rostered player diluted the usage pool. The rebuild that followed was run as a pre-registered variant ladder — every change was specified with pass/fail gates before implementation, graded on held-out seasons (2024–2025, constants fit on 2023 only), and every gate-decisive number was independently re-derived by an adversarial verifier with fresh data pulls.
| Stat | Previous engine bias | 0.2.2 held-out bias |
|---|---|---|
| Targets | +26.5% | +3.0% |
| Receptions | +24.3% | +1.3% |
| Receiving yards | +24.7% | +2.1% |
| Carries | −5.4% | −1.8% |
| Rushing yards | −10.4% | −2.6% |
| Pass attempts | +25.0% | +3.7% |
| Passing yards | +22.3% | +1.7% |
Held-out pooled bias, 2024–2025, matched player-games; aggregate bias = (mean projected − mean actual) / mean actual. All seven stats sit inside ±5% — the pre-registered ship bar. Level accuracy is the claim here, not market-beating ranking: the closing line still out-ranks the engine on every stat it prices (that finding is exactly why these are labeled context, not bets).
Two honest caveats on that table. First, the same 2024–2025 seasons were reused across several rounds of model selection, so ±5% is a selection-conditioned upper bound, not an unbiased forecast — the 2026 live scorecard below is the first truly untouched test. Second, the table grades the retrospective regime (players who actually dressed). We re-ran 2024–2025 under the live forward regime — depth-chart active sets, no knowledge of who dresses — and receiving/pass biases re-inflate to roughly +10–16% (targets +14%, receptions +12%, receiving yards +12%, pass attempts +13%) while the ground game stays near budget (carries +4%, rushing yards +2%).
The mechanism is participation, not skill: about 30% of forward-regime rows are charted players who end up not dressing, and they hold ~21% of projected volume. Expect early-season 2026 weekly bias to look more like the forward numbers than the table above — that is the honest baseline the drift alarm watches.
Every season on the Projections tab carries one of two labels, and they are not interchangeable:
Seasons 2023–2025. Rebuilt after the fact: anchored to closing lines and graded on players who actually dressed. That removes two real-world uncertainties (line movement, inactives), so accuracy on these seasons is an upper bound on what the live model can do.
2026 onward. Written before kickoff from current depth charts and the freshest market line, then graded as-is — no re-runs, no hindsight. The live scorecard era starts with 2026 week 1; judge the model on these seasons.
Projections are context, not bets — our own backtests show the market prices these stats efficiently. We tested it three separate ways before and after the rebuild: model vs closing prop lines across five markets, a dedicated rush/receiving-yards battery, and a full re-test under the de-biased 0.2.2 engine including open-line and line-movement plays. Every one came back no-edge: the closing line ranks player outcomes better than the engine on every market it prices, and the engine adds under half a percent of incremental information over the line.
That result is the norm, not a failure — prop markets are efficient at the level a volume-and-efficiency model operates on. Publishing the projections anyway, with their misses visible next to the actuals, is the point: they explain how a game is expected to distribute, and the report card shows how well that expectation held up.
These numbers come straight from the accuracy API that powers the Projections tab's report card — recomputed from stored projections vs official stats, not hand-curated. Per-week breakdowns and best/worst calls are on the Projections tab.