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.
Fade every over
lab/nfl/presets/fade_every_over.json did not load (mismatch); no figure is shown for it.
Rush attempts unders
lab/nfl/presets/rush_attempts_unders.json did not load (mismatch); no figure is shown for it.
Chase the streak
lab/nfl/presets/chase_the_streak.json did not load (mismatch); no figure is shown for it.
Home underdogs of 3 to 7
lab/nfl/presets/home_underdogs_3_to_7.json did not load (mismatch); no figure is shown for it.
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
Side by side needs two replayed rules; the library has 0.
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
No rule is replayed, so no season is held out.
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.