This table is read-only — every number comes from the import button above, nothing is hand-typed. It pulls offensive/defensive EPA-per-play from nflverse's team stats, plus pressure rate (allowed and generated), missed-tackle rate, and rush yards-after-contact from Pro-Football-Reference's advanced stats. Starting QB is identified from
Sleeper's live depth-chart feed (free, public, updated continuously — the same field fantasy apps use) rather than "whoever played most recently," so a new signing, trade, or return-from-injury shows up before he's even played a game for that team; if Sleeper's fetch fails for any reason, it falls back to the old "last game played" heuristic (the QB note tells you which was used, plus his injury status when flagged). Sleeper's full player list also carries RB/WR/TE depth charts — those are captured and shown in the QB note for reference, but only the QB slot currently feeds the formula, since that's the only position-specific term the model has. Once a starter is identified, his
own season EPA/dropback replaces a team-wide blend for that term — and if he's thrown 15+ dropbacks against this week's specific opponent across the last 3 seasons, that head-to-head history gets blended in too. All of this together pulls player-week files for 2 prior seasons (~17MB) plus Sleeper's full player list (~15MB) — a noticeably slower, heavier import than before. Load live odds first so it knows who's playing whom this week, otherwise opponent-specific history can't be computed. Early in the season a rate stat can come from just one game (e.g. pressured on 1 of 24 dropbacks = 4%) and swing predictions hard — every rate (including QB EPA) is shrunk toward a league/season baseline by a fixed pseudo-sample-size, so small samples get damped and it fades on its own as more games accumulate. Home-field edge is a flat +2.5 for every team — no data source distinguishes it by team. Success rate isn't in any feed, so it's been dropped from the model rather than sit at a permanent, meaningless league-average. Next Gen Stats isn't wired in: nflverse only publishes it gzip-compressed and hasn't posted a file for this season yet. FTN's charting data has no team column per play, so it can't be aggregated without also pulling the full play-by-play file. Weather isn't factored into the spread model — its main effect is on scoring totals, not which team is favored, so it stays a Board-tab display/filter only.