THE THURSDAY SHEET
GET THE SHEET
contract 95562a9f417f7c5b · 8a503de
scorecard auto-updates

THE METHOD

WHAT IT DOES

Every Thursday, the model ingests the week that just happened, retrains, and projects the coming slate. Two engines — a Bayesian model and a gradient-boosted quantile model — are blended by how well each has been calibrated recently. The output is a projection and, on three of the five props, an honest range.

WHAT DRIVES IT

Recent usage and opportunity. Snap share, target share, role, and the situation in front of the player.

We tested the alternatives. Player tracking data — speed, separation, reaction times, measured ten times a second — adds nothing measurable once you know how a player is being used. We tested it, pre-registered the bar first, and found no signal worth paying for. We published that result too.

WHY THE RANGES ARE HONEST

We measured the ceiling. A predictor that knows each player's true season average in advance still misses receiving yards by a wide margin every week. The gap between that predictor and ours is all the room any model has. The rest is football.

THEORETICAL FLOOR
16.93
US
18.44
STANDARD APPROACH
20.37

Average miss on receiving yards, in yards per game. When our 80% range on receiving yards spans sixty yards, that is not sloppiness — that is what a calibrated range looks like in a sport this volatile. Anyone showing you a tight yardage range isn't calibrated; they just haven't checked.

WHY YOU CAN TRUST THE SCORECARD

The 2025 season was held out of fitting and tuning. The model never saw it while it was being built, so when we walked it forward through the season one week at a time — projecting each week from what was knowable that Thursday — the results were a test, not a description.

And every bar was committed to git before the number that would be measured against it. You can check the order in the repo: the standard is timestamped earlier than the result, so it could not be moved to fit what came back.

The grading harness runs automatically and its writes are append-only. There is no manual override path. Bad weeks get published the same as good ones.

contract  95562a9f417f7c5b
commit    8a503de
derived   git show output-contract-v1-signed:docs/specs/OUTPUT_CONTRACT.md | sha256sum | cut -c1-16
harness   append-only · no manual override path
What that does not mean: these bars were not registered before the 2025 season was played. They could not have been — this work began in 2026, after the season finished. Anyone claiming a pre-season lock on 2025 results, us included, would be claiming something that does not exist. What we have is held-out data and a bar that predates its own measurement.
SEE THE RECEIPTS