Model nfl-1.1.0
How our fantasy football projections work
A player's fantasy day is team volume × his share of it × what he does with each opportunity. We estimate each piece from games already played, shrink the noisy pieces toward sensible defaults, adjust for the betting line, and simulate the game 2,000 times. Then we test it the honest way: every past week projected only from the games before it.
1. Team volume
For each game we predict a team's targets, carries, offensive touchdowns and field-goal attempts from its recent per-game volume, what the opponent allows, both teams' neutral-situation pace and pass rate, and the Vegas implied team total and spread. Favourites run more and underdogs throw more; four ridge regressions refit every week on every earlier team-game learn by how much. Team features are recency-weighted (6-week half-life) and shrunk toward the league mean.
2. Player share
Each player's snap %, target share, carry share, red-zone shares and goal-line share are pooled over the games he played (8-week half-life; a missed game is skipped, not counted as zero), with air yards blended into target share. Every share is shrunk toward the league average for his position and depth-chart slot: lightly for targets, heavily for goal-line work, which is mostly noise.
When a teammate is out or doubtful, his expected targets and carries are handed to the players who remain, partly within his position group. Each player's share is computed as if he plays, so his projection only moves when teammates are out.
3. Efficiency, touchdowns and matchup
Catch rate, yards per target and per carry, and a QB's completion %, yards per attempt and interception rate are empirical-Bayes rates, shrunk toward position means (a QB's own yards per attempt barely predicts next week, so it is almost pure league average plus team context). Touchdowns are allocated, not extrapolated: the team's expected touchdowns are split by red-zone, goal-line and overall shares.
Defense vs position is opponent-adjusted and shrunk, but in testing it was neutral to slightly harmful as a multiplier, so it carries almost no weight. We still show the matchup rank as context, muted when it is unreliable.
4. Chance to play
Projections are if he plays. The chance he plays is calibrated each week from the previous three seasons: about 70% for Questionable, about 7% for Doubtful, about 98% for a healthy regular, and 35–45% for a player who missed last week with no status yet. Players ruled out, on injured reserve or on bye are not projected. Rankings use expected points: chance to play × projection.
For quarterbacks the chance to play is the chance to start. An injured starter who is back gets his job back first; next comes a starter who left last week's game early (he usually got hurt, so his chance is capped until the injury report clears him); then whoever took most of last week's snaps; then the rest by recent snaps and the depth chart. Each one starts if he is available and everyone ahead of him is not. The injury report, waiver wire and these projections all use this same rule, so they name the same starter.
5. Simulation, ranges and scoring formats
Every player gets 2,000 seeded simulated games with team-volume, role and touchdown variability. Each simulation is scored in PPR, half-PPR, standard, DraftKings and FanDuel, so bonuses and defense points-allowed tiers are correct per game. We publish the mean, median and the 10th–90th percentile range (floor and ceiling). Kickers and defenses are simulated from attempts, distance mix, accuracy, wind and roof (indoor kicks are 3 points of accuracy safer), and the opponent's expected scoring, sacks and turnovers. These are the same numbers the DST and kicker streamer pages rank by.
Rest of season sums the current week and every remaining regular-season week, skipping byes and weighting each week by the chance he plays.
How accurate is it?
The model was tuned on 2024 weeks 1-18 and tested on the 2025 weeks 1-18 holdout. For every week, it was rebuilt from earlier games only, using that week's closing lines and final injury report. The table compares it with two naive baselines on the same players: season-to-date average and the last three games. Lower is better.
| Pos | Players | Model MAE | Season avg | Last 3 | Model ρ |
|---|---|---|---|---|---|
| QB | 523 | 6.30 | 7.08 | 7.22 | 0.27 |
| RB | 1,583 | 4.22 | 4.27 | 4.59 | 0.46 |
| WR | 2,568 | 4.29 | 4.35 | 4.50 | 0.31 |
| TE | 1,619 | 2.94 | 3.01 | 3.20 | 0.29 |
| K | 526 | 3.78 | 4.02 | 4.25 | 0.06 |
| DST | 544 | 3.74 | 4.12 | 4.38 | 0.18 |
The model beats both baselines at every position. The gain is largest in ranking startable players: WR rank correlation is 0.31 against 0.14 for season averages. Kickers are the exception: nobody ranks kickers well.
Ranges: on the holdout, 80.3% of RB, 79.9% of WR and 79.4% of TE outcomes for players projected at 8+ PPR points landed inside the 80% range (target 80%). QBs land below their floor a little too often (13.8% vs 10%), mostly starters hurt or benched mid-game, so read QB floors as slightly optimistic.
We also compare against a leading commercial projection set, curated by analysts with the week's news. On players both systems projected:
| Pos | Players | Edgehalla | Commercial set |
|---|---|---|---|
| QB | 517 | 6.18 | 6.27 |
| RB | 1,439 | 4.52 | 4.36 |
| WR | 2,374 | 4.49 | 4.29 |
| TE | 1,402 | 3.26 | 3.25 |
| K | 512 | 3.75 | 3.77 |
We are level at QB, TE and K and about 0.2 points (4%) behind at RB and WR. The gap is mostly news the box score doesn't know yet: a back losing his job, starters resting in Week 18, a backup named the starter on Friday. Availability is the other gap: the commercial set effectively knows who is active, while our chance-to-play is a probability until Sunday. We rerun daily as injury reports land.
| Pos | Players | Model MAE | Season avg |
|---|---|---|---|
| QB | 92 | 5.79 | 7.42 |
| RB | 290 | 3.85 | 4.44 |
| WR | 453 | 4.45 | 5.10 |
| TE | 301 | 3.26 | 3.70 |
| K | 96 | 3.80 | 4.64 |
| DST | 96 | 3.26 | 4.44 |
Known limitations
- No news or coaching intent: a back losing his job shows up only once the snaps do.
- Before Friday's injury report, the chance to play comes from missed-game streaks only.
- No route data for 2026, so snap % and air yards stand in for routes run.
- Rookies and new signings start from the role average for their depth-chart slot.
Use the weekly projections or compare players in Who Should I Start.
Frequently asked questions
How are these fantasy football projections made?
Each player-week is team volume × his share of it × his efficiency. Team targets, carries and touchdowns come from pace, pass rate and the Vegas line; shares come from recent snap, target, carry and red-zone usage, shrunk toward role averages; efficiency is shrunk hard toward position means. We then simulate the game 2,000 times and score every simulation in each format.
What do floor and ceiling mean here?
Floor is the 10th percentile and ceiling the 90th percentile of the simulated games: in about 8 of 10 weeks a player should land between them. The tick on the bar is the median. On our 2025 holdout, 77–84% of outcomes for players projected at 8+ PPR points landed inside that range.
Why are some projections higher than the expected points?
Projected points assume he plays. The Play column is the chance he suits up, from the injury report and missed-game history, and rankings use expected points (chance to play × projection). Players ruled out, on injured reserve or on bye are not listed for the week.
How accurate are the projections?
On the 2025 holdout season (each week projected only from earlier games), PPR mean absolute error was 6.3 points at QB, 4.22 at RB, 4.29 at WR and 2.94 at TE, better than season-average and last-three-game baselines at every position. Full tables are on the methodology page.
When do the projections update?
Daily from Tuesday to Sunday morning: injury reports land Wednesday to Friday and lines move all week. A Tuesday projection has no injury report yet, so availability is less certain early in the week.