Fantasy Football
Outsiders

The model should
show its work.

FFO keeps distinct signals separate, versions every artifact, reports holdout performance, and publishes limitations next to the output they qualify.

See the current output
Blocky claymation-style 3D receiver completing a contested catch

Six signals, kept legible.

A neighboring ranking site can copy a single score. It cannot copy the reasoning unless the inputs stay visible.

  1. 01

    Football

    Production history and performance-derived features describe what a player has demonstrated.

  2. 02

    Opportunity

    Targets, snaps, role, and team context estimate how much usable volume may exist.

  3. 03

    Projection

    Quantile models produce a median and a wide outcome range instead of a single certain number.

  4. 04

    Market

    External value signals remain separate from on-field ability so price and performance are not confused.

  5. 05

    Matchup

    Schedule and defensive context can move a weekly view without rewriting the long-term player grade.

  6. 06

    Roster fit

    Scoring, positional need, competitive window, and counterparties make advice specific to a league.

What the current evaluation supports.

These figures come directly from the checked-in artifact manifest.

Holdout season
2024
Holdout rows
371
Model MAE
44.42
Naive baseline MAE
46.63
Recorded result
4.8% lower MAE than baseline

One historical holdout is evidence, not a universal accuracy guarantee. Future model versions should preserve comparable evaluations and publish changes.

Freshness is a product state.

The website never needs a hand-edited “live” claim. Its status is generated from the same artifact timestamp as the model output.

Current model build0 days since the current data build
v1.0.0-2026-08-19

Build rule: 0–7 days is current, 8–30 days is due soon, and more than 30 days is overdue. The future admin portal can use the same state for alerts, editorial review, and social publishing approval.

Recorded inputs and model modules.

The current manifest records 16 source endpoints and the codebase contains 10 specialized model modules.

acceptanceagingarchetypecontenderfootballliquiditymarketprojectionprospectroster fit

Source URLs, generation timestamps, schema version, validation errors, and artifact counts live in data/artifacts_manifest.json.

Known limitations

These are published because they materially change how a projection should be used.

  • Rookie projections are draft-capital priors ONLY — no NFL production data. Bands are intentionally wide (±50-70%). These are not true projections.
  • Training data: 2018-2025 nflverse seasonal aggregates. No play-level data.
  • Age in nflverse seasonal data is not always available (some years lack player_age column); aging curves may default to domain-knowledge priors for thin positions.
  • SoS adjustment is team-level, not position-specific (±5% max). Noisy signal.
  • Model trained on total season PPR points (not per-game); players with fewer games are scaled but not injury-adjusted.
  • GBR quantile regression: p10/p90 bands are model-estimated, not calibrated coverage. Actual 10th/90th percentile coverage not verified on holdout.
  • No team offensive quality features (OL quality, QB talent) — opportunity proxied by target_share/snap_pct from prior season only.

Use the model with its context attached.

Open rankings