NFL PREDICTOR — HOW IT WORKS
======================================================================================
  Every projection here is a forecast for one player in one upcoming game,
  produced by a model trained only on games that happened before that game.

READING A PROJECTION
  A typical receiving row looks like this:

    J.Jefferson (WR MIN)      ▃▅▂▇▆    78   [ 61– 95]   8.0   1.0   18.4
                              L5     YDS  [p25–p75]   REC    TD    FP

  YDS         The headline projection: the model's median (p50) estimate.
              Half the time the real result lands above it, half below.
  [p25–p75]   The confidence band. The true result falls inside this range
              about half the time. A wide band = a hard-to-call player.
  L5          Sparkline of the player's last 5 games, scaled to their own
              high/low so you see the trend, not the size of the numbers.
  REC/TD/…    Category-specific projections (receptions, touchdowns, etc.),
              each the model's median for that stat.
  BOOK        The sportsbook consensus line for that stat, when available,
              a real-world sanity check against the model. '—' if none.
  FP          Projected fantasy points under the chosen scoring (see below).

  Indented italic notes under a player are the biggest reasons the model
  landed where it did, e.g. 'avg 312 pass yds last 3' or 'soft pass D'.

THE DEFENSE SECTION
  Team defenses get their own row: projected SACK, INT, and PA (points
  allowed), plus FP from standard D/ST scoring (fewer points allowed and
  more sacks/turnovers = more fantasy points).

HOW THE NUMBERS ARE MADE
  The model is gradient-boosted decision trees (LightGBM). For each stat
  it learns three separate predictors: one for the low end (p25), one
  for the middle (p50), one for the high end (p75). That's where the
  median and the confidence band come from.

  It reads roughly 40 signals per player, all of which were known before
  kickoff (no peeking at the result it's trying to predict):

    Recent form    rolling last-3 / last-5 / season-to-date production
    Usage          snap share and target share: how involved they are
    Opponent       what that defense has allowed to the position lately
    Injuries       current-week injury + practice status, live
    Game script    Vegas spread & total → how many points/plays to expect
    Environment     home/away, dome, wind, temperature, surface, rest days
    Role           depth-chart rank and draft pedigree (matters for rookies)
    Scheme         the offense's pass/run tendencies (see next section)

THE SCHEME SIGNALS
  Built from play-by-play data to capture how a team actually plays:

  PROE        Pass-Rate-Over-Expected. Compares a team's pass rate to what
              a league-average team would do in the same situations (down,
              distance, score, time). Positive = pass-happier than the
              situation calls for; lifts passing, dampens rushing.
  Committee   The lead back's share of carries. A low share flags a
              committee backfield where touches are split, which caps any
              single running back's ceiling.
  Coach prior When a play-caller changes teams, their known tendencies nudge
              early-season volume before the new team has a track record.

ROOKIES & PLAYERS WITH NO HISTORY
  A Day-1 starter with zero NFL games has no recent form to read. The
  model falls back to the typical profile of past rookies at the same
  position and depth-chart role, then self-corrects as real games post.
  These rows are baseline estimates and carry no per-stat reason notes.

WHY THE BANDS ARE HONEST
  Raw model bands tend to be overconfident (too narrow). We measure the
  real hit-rate on held-out games and widen the band until it actually
  contains the result ~50% of the time. So a [p25–p75] band means what
  it says. That's calibration, checked on the /accuracy page.

FANTASY POINTS
  FP rolls the projected stats into one number under your chosen ruleset:
  PPR (1 pt per reception), HALF (0.5), or STD (0). Switch with ?scoring=
  ppr|half|std. Yards, TDs, and turnovers are scored the standard way.

THE DRAFT COMPANION  (/draft)
  A fantasy-draft helper built on these projections. It ranks every
  draftable player by value over replacement (VOR): not raw points, but
  points above the last starter at the position. That prices in scarcity,
  so an elite RB outranks a higher-scoring but easily-replaced QB.

  A player's base value is its projected per-game fantasy points. QBs are
  valued on a median-plus-ceiling blend (passing output is upside-driven),
  while RB/WR/TE use the plain median, which ranks those positions best.
  Backups are discounted for playing time (a strong QB2 won't see the
  snaps), and history-less rookies lean on their draft capital instead.

  Tell it your roster slots and it recommends the best pick for your
  needs, then the next-best the moment a player is taken. Give it your
  snake draft position and it also flags who won't last until your next
  pick and which positions to grab now versus safely wait on.

  Each row also shows ECR (FantasyPros expert-consensus positional rank)
  and Δ — consensus rank minus ours. A positive Δ means we rank the
  player higher than the field (a value pick); negative means a fade.
  Click any player for a DRAFT VALUE breakdown — the step-by-step math
  from raw projection to board value, the drivers, and that ECR/Δ.

  Value is projected points per game (every starter plays ~17 games, so
  per-game value tracks season value). The board is a preseason snapshot
  from Week 1 projections — last year's form plus this year's rosters.

HOW GOOD IS IT?
  Accuracy is measured walk-forward: train on past seasons only, then
  score a season the model never saw, with no hindsight. We report error
  (MAE, in the stat's own units) against a tough baseline: the player's
  own last-3-game average. Beating that consistently is the whole game.
  See it all broken down by stat and season on /accuracy.

REFRESH CADENCE
  Data refreshes daily (rosters, trades, injuries, depth charts, Vegas
  lines). The model retrains when new game stats post, and game-day
  inactives update every 30 minutes.

--------------------------------------------------------------------------------------
back to projections  ·  accuracy  ·  draft companion  ·  light mode