Fantasy Projection Accuracy
Back to ProjectionsHistorical error analysis and accuracy metrics for our fantasy projection engine
logs/cron_batch.log.
Fantasy Points (PPR)
Passing Yards
Rushing Yards
Receiving Yards
Receptions
Touchdowns
There is no segment model. These take the full-game projection and scale it by the stat's empirical segment share (passing Q1 21.4%, 1H 50.0%; rushing 24.4% / 49.2%; receiving 21.4% / 50.0%, measured over 2021–25). That makes this the baseline any real Q1/1H model has to beat, not a model itself.
Read Skill R², not MAE. Raw MAE shrinks with the segment simply because the numbers are smaller, which makes the worst segment look like the best. Skill R² compares the projection to always guessing the average: 0 or below means no skill. All covers every projected player; Played drops those who recorded nothing — the gap between them is the cost of projecting players who never take the field.
| Stat | Pos | Segment | Sample | n | Norm. MAE | Skill R² | Bias |
|---|---|---|---|---|---|---|---|
| Passing | QB | Full game | All | 1,943 | 0.28 | +0.083 | 1.00× |
| Passing | QB | Full game | Played | 1,924 | 0.27 | +0.065 | 0.99× |
| Passing | QB | 1st half | All | 1,943 | 0.35 | +0.077 | 0.98× |
| Passing | QB | 1st half | Played | 1,912 | 0.33 | +0.055 | 0.97× |
| Passing | QB | 1st quarter | All | 1,943 | 0.49 | +0.037 | 0.98× |
| Passing | QB | 1st quarter | Played | 1,886 | 0.46 | +0.017 | 0.95× |
| Receiving | RB | Full game | All | 3,928 | 0.83 | +0.062 | 0.87× |
| Receiving | RB | Full game | Played | 2,795 | 0.64 | -0.116 | 0.69× |
| Receiving | RB | 1st half | All | 3,928 | 1.02 | +0.054 | 0.87× |
| Receiving | RB | 1st half | Played | 2,083 | 0.67 | -0.260 | 0.54× |
| Receiving | RB | 1st quarter | All | 3,928 | 1.30 | +0.029 | 0.86× |
| Receiving | RB | 1st quarter | Played | 1,247 | 0.74 | -0.494 | 0.33× |
| Receiving | TE | Full game | All | 3,454 | 0.63 | +0.229 | 0.94× |
| Receiving | TE | Full game | Played | 2,995 | 0.55 | +0.167 | 0.85× |
| Receiving | TE | 1st half | All | 3,454 | 0.81 | +0.158 | 0.93× |
| Receiving | TE | 1st half | Played | 2,337 | 0.59 | -0.017 | 0.71× |
| Receiving | TE | 1st quarter | All | 3,454 | 1.13 | +0.081 | 0.93× |
| Receiving | TE | 1st quarter | Played | 1,432 | 0.66 | -0.388 | 0.46× |
| Receiving | WR | Full game | All | 5,910 | 0.58 | +0.220 | 0.98× |
| Receiving | WR | Full game | Played | 5,312 | 0.52 | +0.159 | 0.92× |
| Receiving | WR | 1st half | All | 5,910 | 0.74 | +0.161 | 0.97× |
| Receiving | WR | 1st half | Played | 4,459 | 0.57 | +0.028 | 0.80× |
| Receiving | WR | 1st quarter | All | 5,910 | 1.04 | +0.097 | 0.97× |
| Receiving | WR | 1st quarter | Played | 2,903 | 0.61 | -0.254 | 0.55× |
| Rushing | QB | Full game | All | 1,943 | 0.72 | +0.334 | 1.00× |
| Rushing | QB | Full game | Played | 1,527 | 0.58 | +0.266 | 0.86× |
| Rushing | QB | 1st half | All | 1,943 | 0.88 | +0.249 | 0.96× |
| Rushing | QB | 1st half | Played | 1,236 | 0.62 | +0.114 | 0.71× |
| Rushing | QB | 1st quarter | All | 1,943 | 1.20 | +0.134 | 1.09× |
| Rushing | QB | 1st quarter | Played | 779 | 0.66 | -0.087 | 0.55× |
| Rushing | RB | Full game | All | 3,934 | 0.55 | +0.255 | 0.93× |
| Rushing | RB | Full game | Played | 3,683 | 0.52 | +0.212 | 0.90× |
| Rushing | RB | 1st half | All | 3,934 | 0.63 | +0.216 | 0.91× |
| Rushing | RB | 1st half | Played | 3,413 | 0.56 | +0.127 | 0.85× |
| Rushing | RB | 1st quarter | All | 3,934 | 0.77 | +0.170 | 0.88× |
| Rushing | RB | 1st quarter | Played | 2,844 | 0.61 | -0.003 | 0.72× |
Every position carries positive skill, and it degrades smoothly rather than collapsing: first half keeps roughly 75–90% of full-game skill, first quarter 40–65%. So scaling by the segment share is a legitimate baseline — a dedicated 1H model has a real bar to clear, and a Q1 model has a lower one on much noisier ground. Built 2026-09-15T01:00:52+00:00.
Understanding These Metrics
Mean Absolute Error (MAE): The average difference between projected and actual values. Lower is better.
Root Mean Square Error (RMSE): Similar to MAE but gives more weight to larger errors. Lower is better.
Accuracy Percentages: The percentage of projections that fell within a specific tolerance range of the actual result.
What These Numbers Mean
- Fantasy Points: projections land within 5 points 59% of the time and within 10 points 87% of the time
- Yardage Stats: Generally more predictable than touchdown-dependent stats
- Touchdowns: Inherently volatile - even small errors in projection can significantly impact fantasy points
- Receptions: Relatively stable for target share leaders, more variable for boom/bust players