Replay · Film Room
Every rule the engine has replayed, and the 4 it cannot run.
Replayed rules
4 rules replayed (verdicts: Loses 3, Unclear 1); 0 with an ROI interval wholly over zero. 4 more are listed that the engine cannot run.
prop under on receptions/receiving_yards/rush_attempts/tackles_assists/sacks, 2023-2025 REG weeks 1-18, 0 condition(s), consensus_close at close
ROI −3.3% [−5.0, −1.8]Hit 52.5%
prop under on rush_attempts, 2023-2025 REG weeks 1-18, 0 condition(s), consensus_close at close
ROI −1.8% [−5.0, +1.0]Hit 52.4%
prop over on receptions/receiving_yards/rush_attempts/sacks, 2023-2025 REG weeks 1-18, 1 condition(s), consensus_close at close
ROI −13.2% [−18.2, −8.5]Hit 47.0%
spread underdog on spread, 1999-2025 REG weeks 1-18, 2 condition(s), consensus_close at close
ROI −5.6% [−10.7, −0.4]Hit 48.8%
AUDIT-2026-09-24, the Lab library launch set · lab index written Sun, Sep 27, 2:14 AM ET · universe built Sun, Sep 27, 2:14 AM ET
How this is computed
Side by side
Any two rules, the same five figures, on the same terms.
| Figure | Fade every over | Chase the streak |
|---|---|---|
| Verdict | Loses | Loses |
| Bets | 13,680 | 1,150 |
| Hit rate | 52.5% [51.7, 53.4] | 47.0% [44.1, 49.8] |
| ROI · 95% | −3.3% [−5.0, −1.8] | −13.2% [−18.2, −8.5] |
| Rule | prop under on receptions/receiving_yards/rush_attempts/tackles_assists/sacks, 2023-2025 REG weeks 1-18, 0 condition(s), consensus_close at close | prop over on receptions/receiving_yards/rush_attempts/sacks, 2023-2025 REG weeks 1-18, 1 condition(s), consensus_close at close |
Rules it cannot run
4 rules are in the library that the engine cannot run, each with its reason, shown rather than hidden.
Follow the model's leans
- refused by lab.strategy.check: side 'model_lean' needs walk-forward model predictions, and none are persisted for the historical seasons (the stored predictions are the live model, in-sample on history)
Buy the middle
- not expressible in lab.strategy/1: a middle is TWO legs at two books at two thresholds; lab.strategy/1 is a single-leg language (one side, one price source), and the register figure is taken over every fresh pre-kickoff snapshot of the raw archive, where the universe holds one close per claim. No strategy in this schema expresses it, so no run of this engine can reproduce it - the library card must cite the R16 script, or the schema must grow a
legsfield (a lab.strategy/2).
Measured elsewhere: R16 / brief 023 Part 2, research/bookvbook.py: spreads middle mean EV -2.54pp empirical, -2.65pp realized, n=10,860 over 848 games (data/repairs/bookvbook-2026-09-17.txt)
Arbitrage between books
- not expressible in lab.strategy/1: the same two-leg shape as the middle
Measured elsewhere: R16: receptions arbitrage mean size +1.09pp
Unders in the wind
- refused by lab.strategy.check: condition on 'weather.wind_forecast': unavailable - no forecast weather is joined to the universe; observed weather would be look-ahead for a pre-kickoff rule
Conditions no rule can use yet
The engine’s catalogue of conditions (lab/nfl/catalogue.json) is not published, so the conditions it marks unavailable, and its reasons, are not listed here. None is written in their place.
Held out
2025 has not been revealed for any of the 4 replayed rules.
- PendingFade every overheld out: no figure in this result includes the 2025 season
- PendingRush attempts undersheld out: no figure in this result includes the 2025 season
- PendingChase the streakheld out: no figure in this result includes the 2025 season
- PendingHome underdogs of 3 to 7held out: no figure in this result includes the 2025 season
How this is computed
Hypothetical results · nothing here was bet · not advice · Deliberately restricted: no bet carries its book price, its book, its stake or its profit, and the file has no equity curve. The prices are The Odds API's, whose terms (read 2026-09-24, updated 31 Aug 2026) say nothing either way about displaying historical odds, so they stay on the server and only aggregates leave it. A winning flat bet's profit is its price minus one, and consecutive points of a cumulative curve difference back to it, so those are withheld for the same reason. ROI and units appear only where they average at least 10 cleared bets' prices. Do not add these fields back without a decision that the terms allow it.