Model Simulator
No black box. Pick any player, choose a stat, pick the opponent and watch the projection build step by step - the blend of season and recent form, the opponent matchup factor, then the edge against the bookmaker line. The same maths that generates every NFL pick on the slate.
Market-by-market
Pre-launch state. The right-most column will fill with graded hit rates once Sept 4 picks start landing. The backtest column shows the v2 weights' HC hit rate against 916 real bookmaker lines - that's the ground we're standing on, not a marketing claim.
Pre-launch. No NFL picks have published yet. TE receiving HC hit 63.6% across 916 real bookmaker lines in 2024 walk-forward validation - we don't market live numbers until at least 50 picks are graded.
The four model factors
Beyond the base projection, four factors shape how a pick is built. Each is documented end-to-end below.
Game Script Engine
Open pageVegas spreads and totals tell you the implied script before kickoff. A 9-point favourite runs out the clock; a 50+ total lifts every receiver; a 38 total buries volume on both sides. We classify every game into one of five buckets: Blowout Favourite, Blowout Underdog, Shootout, Grind, or Competitive.
Each bucket carries a position-specific modifier. Blowout favourite RBs get a +15% touch boost (clock-eating); blowout underdog WRs get +15% on receiving yards (garbage-time pass volume). The modifier surfaces on every pick card on this week's picks and tints rows where the script favours the projection.
Thresholds: |spread| ≥ 7 splits blowout from competitive; total ≥ 50 promotes a competitive game to shootout; total ≤ 41 demotes it to grind. Source of truth: classify_game_script() in NFL/nfl_pick_selector.py.
TD Probability Model
Open pageAnytime touchdown is a Poisson process - the probability of scoring at least one TD is P(TD ≥ 1) = 1 − e−λwhere λ is the expected TD count for the game. We shrink each player's observed TD rate toward a position-and-role-aware prior (k = 8), then multiply by a game-total adjustment and an opponent TD-defence factor.
Role priors are calibrated from 2020-24 actual hit rates: WR1 (target share ≥ 0.22) sits at 28%; WR2 (≥ 0.15) at 20%; RB1 (feature back) at 40%; TE1 (target share ≥ 0.18) at 22%.
A.1 Honest calibration (2026-06-10). Per-role isotonic regression calibration now fit on 2023 only; 2024 is the permanent untouched holdout. Fallback chain: role → position → ALL. Calibration version stamped on every pick. Official 2024 holdout numbers (real bookmaker lines, n=261): HC 19.5% hit rate, +28.7% EV at avg +559 odds. Positive EV roles on 2024: RB (+86% EV), TE (+65% EV), WR3 (+30% EV). WR1/WR2 demoted to BET until out-of-sample WR calibration stabilises. These are the published launch figures - not the pooled in-sample numbers. Full data in NFL/data/nfl_td_real_line_brier.json.
Position Intelligence Matrix
Open pageFor every (team, position, market) we compute the average yards (or TDs) allowed per game. The league average across all 32 teams is the comparison anchor. Each cell's defense_factor = team_avg / league_avg: above 1.0 means the defence allows more than average (favourable for the offence); below 1.0 means tougher than average.
The factor multiplies into every projection that involves that defence. A WR facing a defence with a 1.20 receiving_yards factor gets a 20% baseline lift; facing a 0.85 factor takes a 15% haircut. The full table renders on /nfl/defencewith heat-map cells; clicking any team opens this week's picks targeting that slice - the same data, two surfaces.
Source: nfl_team_defense table, rebuilt daily by nfl_daily_refresh.py from nfl_game_logs. Read live at /api/nfl/dvp.
Stack Builder
Open pageDFS and same-game-parlay players don't bet props in isolation - they bet correlated combinations. When a QB throws for 300 yards, their WR1 almost certainly cleared their receiving line too (historical r ≈ 0.82). Stack Builder surfaces the model's highest-correlation pre-built stacks each week, with a combined edge and EV score that accounts for the joint distribution rather than treating the props as independent.
Pre-built stack types: QB+WR1 (correlation ~0.82), QB+WR2 (~0.61), RB+opp-WR (~0.55, the "blowout flip" stack), and game-stack (both teams' pass-catchers, ~0.48 in shootout environments).
Backing analysis lives in NFL/nfl_triple_stacks.py. The Stack Builder is available on the All-Access plan.