# How fantasy projections work Apprised.news publishes deterministic season-long football estimates, not advice or promises. The current model is `usage-shrink-v2`; the initial published replay below remains the archived v1 evaluation. It uses observed weekly statistics, stored game environments and official availability reports. There are no salary optimizers, affiliate links or per-request language-model calls. A page view reads a stored snapshot. ## Sources and permission Statistical inputs are adapted from [nflverse's data releases](https://github.com/nflverse/nflverse-data) under the repository's [Creative Commons Attribution 4.0 license](https://github.com/nflverse/nflverse-data/blob/main/LICENSE.md). The specific inputs are weekly player statistics, weekly team statistics, player ID metadata, schedule metadata and the play-by-play release. We retain only the statistical fields and IDs needed for these estimates. We do not import headshots, biography details, FTN charting or participation data, or Pro Football Reference snap-count and advanced-stat releases. Those additional datasets have different provenance; their upstream permission was not established for this publication. **Attribution:** Data: nflverse contributors, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Adapted into compact weekly aggregates and deterministic projections by Apprised.news. The source material is provided as-is without warranties. No endorsement is implied. The license requires attribution, a license link and an indication of modifications; these accompany the fantasy page and public backtest data. The data license was observed directly on October 30, 2026 at 23:41:03.325 UTC. Its permission includes “reproduce and Share the Licensed Material”; its conditions include “indicate if You modified the Licensed Material.” Weekly player and team files, schedule metadata and player ID metadata returned HTTP 200 on October 30 at 23:41:31.497, 23:41:32.827, 23:41:34.214 and 23:41:35.645 UTC respectively. The [published Sleeper API documentation](https://docs.sleeper.com/) was observed directly on October 30, 2026 at 23:40:55.247 UTC. It restricts the free API to “non-commercial purposes” and directs commercial users to discuss licensing. No commercial license was established for this publication, so trending adds and drops are not collected or displayed. Waiver candidates use measured usage changes and reported teammate absences. This is a specific source exclusion, not a claim that an accessible endpoint grants republication rights. Existing stored ESPN schedules, depth charts, injury reports and lines supply current context. Consensus odds take priority over ESPN's line; every environment identifies which line supplied it. Weather comes from the existing measured weather layer. Absent observations add no displayed field or driver. Player cards show up to four observed weeks with fields appropriate to the position: quarterback passing and rushing, running-back rushing and receiving, receiver/tight-end targets and receiving, kicker field goals and extra points, and defense/special-teams points allowed, sacks and takeaways. Target share appears only when measured. Routes and snaps are excluded because permission for their separately sourced datasets has not been established. **Red-zone touches** are carries plus completed receptions on regular-season plays starting at or inside the opponent's 20-yard line (`yardline_100 <= 20`). A completed pass counts for the receiver, not the passer. Two-point attempts, deleted plays and `no_play` records are excluded; an incomplete pass is not a touch. Zero appears only when the player's game was observed in the release. This uses only nflverse's play-by-play release under the same repository CC BY 4.0 license; FTN charting and PFR-derived releases remain excluded. The season file observed October 31, 2026 was 7,433,373 bytes compressed (37,970,788 bytes as CSV). The weekly worker streams gzip with hard caps of 25 MiB compressed and 150 MiB decoded, then keeps only player/game counts and observed game identifiers. If collection fails or exceeds a cap, the red-zone field is omitted. No play descriptions are stored. ## Projection formula For season `S`, week `N`, training rows satisfy `season = S` and `week < N`. A row with an explicit availability timestamp must also precede the forecast cutoff. Current-week results never enter current-week projections. For live projections, current nflverse player-ID metadata overrides the last game's team when a player has moved; historical rows remain unchanged and replay never receives current team metadata. If that metadata is unavailable, the most recent observed team is retained with the snapshot's source-age disclosure. The most recent observed position identifies the projection; an absent official report produces no status label and never implies health. 1. **Recent volume and efficiency.** The latest four games receive weights **0.40, 0.30, 0.20, 0.10**, newest first. Missing games or fields renormalize the remaining weights. The shrinkage weight is `a = n / (n + 3)`, with `n` capped at four. Each volume estimate is `a × weighted player volume + (1 − a) × mean position volume`. Each efficiency estimate uses the same blend of the player's weighted per-attempt, per-carry or per-target efficiency and the aggregate position rate. Projected yards, touchdowns, catches and interceptions are projected volume times that shrunk efficiency. Other counting statistics use the shrunk weighted stat average. Position means come only from eligible earlier rows in the same season. 2. **Secondary measured usage.** Where present, the latest two games' red-zone touches and air yards are compared with the preceding two. Each ratio is capped to 0.8–1.2; one quarter of the mean ratio's deviation from 1 changes projected receiving statistics, bounded to 0.95–1.05. Missing secondary fields contribute nothing. Only measured secondary fields contribute. 3. **Game environment.** Spread always carries the **home team's handicap sign**. Home implied points are `total / 2 − homeSpread / 2`; away implied points are `total / 2 + homeSpread / 2`. A total of 51 and home spread of −4 imply home 27.5 and away 23.5. Offensive and kicker points are multiplied by `clamp(teamImplied / 22.5, 0.75, 1.25)`. DST instead uses `clamp(22.5 / opponentImplied, 0.75, 1.25)`. Missing totals or spreads leave the score unchanged and produce no implied-total driver. Consensus is preferred, ESPN is an identified fallback, and no line is invented. 4. **Opponent.** Sum earlier fantasy points by offense, position and week. For each game allowed by a defense, subtract that offense's average against its other observed opponents. The mean residual is divided by the league's average team-position points, shrunk by `defenseGames / (defenseGames + 6)`, then added to 1 and bounded to 0.85–1.15. This is a schedule adjustment using only training weeks. At least two opponent games are required; smaller samples leave the score unchanged and produce no driver. Kicker points follow the same position grouping. DST points are grouped against the opposing offense, so the DST driver measures fantasy points that offense conceded to opposing defenses. DST also uses the opponent's implied points when a line exists. 5. **Reported availability.** Out, IR, injured reserve, inactive, suspension and PUP produce zero. Doubtful receives a 0.25 multiplier and Questionable 0.85. These are fixed assumptions, not calibrated probabilities: there is not yet a historical archive linking pregame designations to actual participation. Bye weeks are zero. Current absence of a game is not inferred to mean a bye; the schedule must explicitly establish it. The current roster metadata is also consulted: explicit `R/Injured` or `R/PUP` text establishes injured reserve or PUP unless a newer explicit availability report supersedes it. A generic reserve code alone does not establish injury. Cut or practice-squad roster codes produce **Roster unavailable** and zero, without a medical label; they are excluded from recommendations until current roster metadata changes. This closes the gap where an older injured-reserve entry is excluded by the ordinary injury feed's 30-day report-age filter. Roster metadata carries its own observation time and is used only for live projections, never copied into historical replay. 6. **Teammate absence.** For a reported unavailable player, the next available player at the same position in the stored depth order receives half the unavailable player's estimated targets and carries, with a **35% total increase cap relative to the recipient's original estimate**. Each target/carry component scales its associated yards, catches and touchdowns. Multiple unavailable teammates cannot exceed that total cap, and repeated depth-chart rows cannot duplicate a transfer. No unobserved replacement player is invented. 7. **Weather.** Wind at least 15 mph multiplies passing and receiving statistics by 0.90 and kicker points by 0.85. Explicit heavy precipitation adds multipliers of 0.90 to each. Both effects compound. An explicitly indoor game is neutral. Unmeasured wind or precipitation is not a reported weather condition. 8. **Range.** The floor and ceiling are the projection plus or minus one sample standard deviation from up to eight earlier player scores, scaled by environment, opponent and availability. The displayed floor is bounded at zero. With fewer than two scores the range is omitted. This is a descriptive variance range, **not a calibrated confidence interval**. The model displays no negative projection, though observed negative scores remain in the backtest. The drivers show the rolling sample, implied total and source, opponent allowance and adjustment, any role redistribution, availability discounts and weather effects. No language model chooses the numbers. A projection can remain in weekly rankings after kickoff, but its status becomes started or complete and it is excluded from new start/sit, waiver, streamer and stack recommendations. ## Scoring All formats use one point per 25 passing yards, four per passing touchdown, −2 per interception, one per 10 rushing/receiving yards, six per rushing/receiving touchdown, −2 per lost fumble, and two per recorded two-point conversion. Receptions add **1 in PPR, 0.5 in half-PPR, and 0 in standard**. Individual return touchdowns are not included in offensive scoring. Kickers receive three per made field goal, one extra for 40–49 yards and two extra for 50 yards or more; missed or blocked field goals cost one. Made extra points add one; missed or blocked extra points cost one. DST receives one per sack; two per interception, opposing fumble recovery, safety or blocked kick; and six per defensive or return touchdown. The points-allowed score is 10 for zero, 7 for 1–6, 4 for 7–13, 1 for 14–20, 0 for 21–27, −1 for 28–34, and −4 for 35 or more. **Points allowed means the opponent's full scoreboard score**, including scores conceded while the offense was on the field. This is an explicit scoring convention; individual fantasy platforms may differ. The weekly source separates fumble-return touchdowns from its defensive-touchdown field. Defensive-position player rows provide those touchdowns. A special-teams recovery touchdown credited to an offensive-position player cannot be separated from an offensive recovery in these aggregates and is omitted. This narrow DST limitation applies to both projections and scored outcomes. Expected DST points-allowed scoring averages the historical bracket scores, rather than assigning a bracket to fractional expected points allowed. ## Rankings and decisions Players rank within each position. A new tier begins when a player falls more than the larger of two points or 15% below that tier's first player. Close-call start/sit comparisons use adjacent ranked players within one tier of each other and within four projected points. A maximum of one pair per offensive position produces up to four grounded calls. Fewer calls are shown if the evidence does not support them. Waiver candidates have a role opened by a reported teammate absence, or targets plus carries at least 20% and two opportunities higher in the last two games than in the preceding two. They are candidates to inspect in the reader's own league; roster availability is unknown. No rostered-percentage or ownership claim is implied. Kicker and DST streamers sort the available upcoming projections; no roster availability is assumed. A stack pairs the highest projected quarterback with the highest projected WR or TE on the same team, provided that team's implied total is at least 24. This is a season-long pairing, not a daily-fantasy salary product. Its displayed projection is the sum; covariance is not modeled and it is not a diversification recommendation. Team tables summarize observed offense production and defensive concession by position, with sample counts. Absent pace, roof or weather fields are omitted. ## Backtest and forward accuracy The published [backtest data](https://apprised.news/sports-fantasy-backtest.json) compares the exact deterministic usage/opponent core with the last-three-games average. The baseline uses the same scoring convention and eligible player-game sample. A position must improve both mean absolute error (**MAE, lower is better**) and Spearman rank correlation (**higher is better**) to be labeled as beating the baseline. Tied ranks use average ranks; a constant sample has an unavailable rank correlation. The archived v1 replay covers completed 2026 weeks through week 7. Weeks 2–3 have no scored pairs because at least three prior player games are required. The 1,238 eligible player-games are in weeks 4–7. Week `N` projections use strictly earlier weeks and freeze context at the first scheduled kickoff of week `N`. | Position | Player-games | Model MAE | Baseline MAE | Model Spearman | Baseline Spearman | Both improve? | |---|---:|---:|---:|---:|---:|---| | QB | 103 | 5.645 | 6.450 | 0.303 | 0.218 | Yes | | RB | 252 | 5.297 | 4.916 | 0.668 | 0.699 | No | | WR | 431 | 4.968 | 4.877 | 0.625 | 0.642 | No | | TE | 219 | 4.499 | 4.793 | 0.473 | 0.496 | No | | K | 115 | 4.203 | 4.429 | 0.072 | 0.087 | No | | DST | 118 | 4.067 | 4.427 | 0.040 | 0.024 | Yes | These are **reconstructed out-of-sample** results using the historical releases observed October 30, 2026, not a forward betting record. Historical releases may include corrections made after each forecast date. Original publication timestamps and prior revisions are not recoverable from these files. The absence of historical odds, injury, depth and weather snapshots means those adjustments are neutral in this replay; current conditions are never copied backward. Schedule identity is permitted, but outcomes and final scores enter only as scored labels. This validates the usage/opponent core, not every live adjustment. The small DST rank correlation is not evidence of strong discrimination. The evaluation includes only an observed final stat row and at least three prior games. Missing player rows, including many nonparticipants, are excluded; this participation-conditioned sample does not test the ability to predict a DNP. No parameter was tuned against these results. Half-PPR and standard results are in the same public data file. RB and WR lose on both metrics; TE and K improve MAE but lose rank correlation. Those failures remain visible on the page. The background worker stores pre-kickoff projections separately from reconstructed history. The latest recorded estimate before each kickoff becomes the frozen forecast. Completed weekly outcomes can grade those records. A forward entry is never created or replaced after kickoff. A missing forward sample stays unavailable; replay observations never become forward predictions. Every recorded entry retains its model version, scoring, week, forecast time and source cutoff. ## Collection and publication Collection runs in background workers using direct identified requests with `apprised.news/1.0`, paced at about one request per second per source. There are no proxies. A blocked or missing source retains the previous observation with a stale or unavailable state. Weekly usage is refreshed after Tuesday's final game, at most once in a day, with a bootstrap when no history is stored. Player ID, current team and roster-status metadata refresh separately at most once per UTC day, with no duplicate fetch on a bootstrap day; a failed attempt retains the previous observation and its age. This allows midweek roster changes to reach the next daily update without redownloading weekly statistics. Injuries are refreshed daily. The complete current NFL week is fetched from ESPN in the background once per UTC day using its observed season and week identifiers. The returned season and week are checked before accepting the lines, so every scheduled game can use its ESPN line when stored bookmaker consensus is absent. Sources are labelled ‘ESPN line’ or ‘consensus of N books’; source counts are shown only when measured. Practice-report updates Wednesday through Friday recompute the inexpensive projections from stored usage. The existing ten-minute game-day tick incorporates stored odds and checks official availability near kickoff; it does not repeatedly download the heavy weekly release. The brief and digest read the resulting compact aggregates. Forecast provenance and availability are retained when a source fails. 21+. Odds and picks are informational, not advice. Apprised.news takes no bets and has no sportsbook affiliation. Gambling problem? Call 1-800-GAMBLER.