Replay · NFL
Test a rule against real closing prices.
Each rule here was replayed against every settled line it would have bet, at the closing price, with how sure the result is. Choose one to read it.
00Build a rule
Six groups, the common choice open and the rest one click away. Every control is a field the engine takes; nothing on this page runs a rule.
01Rules
4 rules replayed · 4 more listed that the engine cannot run · Film Room
- Loses01Fade every over13,680 bets · −3.3% ROI · open in the builder
- Unclear02Rush attempts unders2,256 bets · −1.8% ROI · open in the builder
- Loses03Chase the streak1,150 bets · −13.2% ROI · open in the builder
- Cannot run04Follow the model's leansWaiting for walk-forward model predictions persisted for the historical seasons.
- Cannot run05Buy the middleWaiting for a rule language with two legs: lab.strategy/1 bets one side at one price.
- Cannot run06Arbitrage between booksWaiting for a rule language with two legs: lab.strategy/1 bets one side at one price.
- Loses07Home underdogs of 3 to 71,400 bets · −5.6% ROI · open in the builder
- Cannot run08Unders in the windWaiting for forecast weather joined to the replayed games.
4 rules replayed on this site so far. The more rules are tried, the more likely one clears zero by chance alone: with 4 tried, a 95% interval that allows for it spans about ±2.50 standard errors (Bonferroni), not ±1.96. The intervals on this page are the plain 95%.
Home underdogs of 3 to 7
spread underdog on spread, 1999-2025 REG weeks 1-18, 2 condition(s), consensus_close at close
−5.6% ROI
1,400 bets, −5.6% ROI. Under the 5th percentile of random rules its size.
“Loses” is set by a fixed rule, not a judgement: the ROI interval lies wholly under zero. Re-checked on this page from the file’s own interval and luck check.
Hit rate48.8% [46.1%, 51.4%]
ROI−5.6% [−10.7%, −0.4%]
Cleared 48.8% [46.1, 51.4] of 1,343 graded, against a break-even of 51.8% at the average price paid (−107): the interval sits wholly under it. The ROI interval runs from −10.7% to −0.4%, and sits wholly under zero.
Not every price here is a close: 24 of 27 seasons (1999–2022) are priced from nflverse games line, which the file does not label a close.
- Bets
- 1,400
- 434 weeks · 0 void
- Cleared
- 655
- 688 missed · 57 push
- Hit rate
- 48.8%
- 95% [46.1, 51.4] · of 1,343
- Break-even
- 51.8%
- at the average price paid, −107
- ROI
- −5.6%
- 95% [−10.7, −0.4] · by week
- Units
- −77.7u
- 95% [−150.4, −5.8] · 1u flat
- Worst drawdown: coming once the rule’s file carries its drawdown key (a-44).
- CLV: none to publish. Every bet here is taken at the close, which is the price CLV is measured against.
Returns over time
units · by week blockThis rule's ROI sits at percentile 2.4 among 1,000 random rules of 1,400 bets drawn from the same pool of 6,671: under the 5th percentile: fewer than 1 in 20 random rules this size did as badly.
Returns over time: coming once this rule’s file, lab/nfl/presets/home_underdogs_3_to_7.json, carries its week-block series (the returns key, a-44). Nothing is drawn from anything else in the meantime.
How this is computed
By season
ROI · 95% interval24 of 26 seasons' ROI intervals include zero; 2 sit wholly under it; 0 sit wholly over it.
| Season | Bets | Cleared | 95% | ROI | 95% | Against zero |
|---|---|---|---|---|---|---|
| 1999under 100 bets | 53 | 56.0% | [42.3, 68.8] | +6.5% | [−21.7, +30.8] | |
| 2000under 100 bets | 47 | 46.8% | [33.3, 60.8] | −10.6% | [−31.5, +13.5] | |
| 2001under 100 bets | 53 | 54.2% | [40.3, 67.4] | +3.1% | [−22.6, +23.0] | |
| 2002under 100 bets | 54 | 51.9% | [38.7, 64.9] | −0.8% | [−18.4, +16.1] | |
| 2003under 100 bets | 59 | 45.6% | [33.4, 58.4] | −12.5% | [−47.4, +18.3] | |
| 2004under 100 bets | 50 | 47.9% | [34.5, 61.7] | −8.2% | [−39.0, +19.9] | |
| 2005under 100 bets | 53 | 34.0% | [22.4, 47.8] | −33.1% | [−58.3, −4.4] | |
| 2006under 100 bets | 54 | 59.6% | [46.1, 71.8] | +15.5% | [−5.0, +39.0] | |
| 2007under 100 bets | 51 | 51.0% | [37.7, 64.1] | −0.5% | [−31.1, +26.9] | |
| 2008under 100 bets | 48 | 44.4% | [30.9, 58.8] | −12.7% | [−36.0, +7.9] | |
| 2009under 100 bets | 47 | 36.2% | [24.0, 50.5] | −30.2% | [−56.3, −3.8] | |
| 2010under 100 bets | 61 | 46.6% | [34.3, 59.2] | −9.1% | [−30.0, +11.5] | |
| 2011under 100 bets | 57 | 44.4% | [32.0, 57.6] | −13.4% | [−37.9, +10.7] | |
| 2012under 100 bets | 57 | 47.3% | [34.7, 60.2] | −6.3% | [−42.4, +27.8] | |
| 2013under 100 bets | 46 | 54.5% | [40.1, 68.3] | +6.8% | [−13.7, +27.9] | |
| 2014under 100 bets | 53 | 52.8% | [39.7, 65.6] | +1.9% | [−24.6, +29.0] | |
| 2015under 100 bets | 48 | 50.0% | [36.1, 63.9] | −2.0% | [−25.5, +24.6] | |
| 2016under 100 bets | 43 | 47.6% | [33.4, 62.3] | −7.5% | [−24.7, +16.3] | |
| 2017under 100 bets | 58 | 50.0% | [37.1, 62.9] | −2.6% | [−24.7, +20.1] | |
| 2018under 100 bets | 45 | 58.1% | [43.3, 71.6] | +12.1% | [−20.0, +41.3] | |
| 2019under 100 bets | 60 | 44.8% | [32.7, 57.5] | −12.8% | [−40.5, +15.4] | |
| 2020under 100 bets | 65 | 53.8% | [41.9, 65.4] | +4.5% | [−16.0, +23.2] | |
| 2021under 100 bets | 60 | 50.0% | [37.7, 62.3] | −4.1% | [−25.1, +19.1] | |
| 2022under 100 bets | 51 | 56.3% | [42.3, 69.3] | +9.3% | [−10.6, +31.0] | |
| 2023under 100 bets | 55 | 47.9% | [34.5, 61.7] | −7.8% | [−33.1, +17.9] | |
| 2024under 100 bets | 72 | 39.7% | [28.9, 51.6] | −23.1% | [−49.1, +3.9] |
How this is computed
2025 is held out
The file: “held out: no figure in this result includes the 2025 season”. The season is kept back so the rule can be tested once, on games it was never shaped by. Looking is done once, when the rule has stopped changing: the job that replays it reveals the season and writes that into the file, and from then on 2025 is marked as seen on this rule.
Not revealed · no 2025 figure anywhere on this page
Where it won and lost
95% intervals · under 100 bets greyed6 segments in 4 cuts; 0 under 100 bets, greyed.
Market
| Segment | Bets | Cleared | 95% | ROI | 95% | Against zero |
|---|---|---|---|---|---|---|
| Spread | 1,400 | 48.8% | [46.1, 51.4] | −5.6% | [−10.7, −0.4] |
Home or away
| Segment | Bets | Cleared | 95% | ROI | 95% | Against zero |
|---|---|---|---|---|---|---|
| Home | 1,400 | 48.8% | [46.1, 51.4] | −5.6% | [−10.7, −0.4] |
Roof
| Segment | Bets | Cleared | 95% | ROI | 95% | Against zero |
|---|---|---|---|---|---|---|
| Open air | 1,076 | 48.4% | [45.4, 51.5] | −6.1% | [−11.9, −0.2] | |
| Dome | 324 | 49.8% | [44.3, 55.3] | −3.7% | [−13.8, +7.2] |
De-vigged price
| Segment | Bets | Cleared | 95% | ROI | 95% | Against zero |
|---|---|---|---|---|---|---|
| 0.40–0.50 | 359 | 49.3% | [44.0, 54.5] | −1.0% | [−12.0, +9.7] | |
| 0.50–0.60 | 1,041 | 48.6% | [45.5, 51.7] | −7.1% | [−12.9, −1.6] |
How this is computed
The rule, as the engine approved it
spread underdog on spread, 1999-2025 REG weeks 1-18, 2 condition(s), consensus_close at close
- Bet type
- spread
- Markets
- Spread
- Side
- underdog
- Seasons
- 1999–2025 · REG · weeks 1–18
- Conditions
- game.home is true · price.line is between 3 and 7
- Line
- main
- Price
- consensus_close · draftkings, fanduel, betmgm · de-vig multiplicative · at the book's posted juice · -110 where none is posted
- Timing
- close
- Staking
- flat · 1u
- Limits
- per game no limit · per player week 1 · per week no limit
- Settlement
- push: refund · no snap: void
Where the prices came from
- 1999–2022 · nflverse games line · not labelled a close · one line per game, provider not verified per season; not labelled a close. Juice from nflverse odds where present, else assumed -110
- 2023–2025 · The Odds API historical close, draftkings, fanduel, betmgm · a close · last snapshot at or before kickoff
strategy 528680058834c4d316cf3265bfb44b6e0eaaf30bf0d089bfb2132c17fd2bbd18 · AUDIT-2026-09-24, the Lab library launch set
How this is computed
Every bet it made
50 shown of 1,400 bets, newest first; page 4 of 28. Filters narrow the list; nothing is removed.
| Date · wk | Bet | De-vig | Result | Actual |
|---|---|---|---|---|
| 2022-10-312022 · wk 8 | CLESpread 3 homeCLE v CIN | 48.4% | cleared | 19 |
| 2022-10-302022 · wk 8 | DETSpread 3.5 homeDET v MIA | 48.4% | missed | −4 |
| 2022-10-302022 · wk 8 | NYJSpread 3 homeNYJ v NE | 50.5% | missed | −5 |
| 2022-10-232022 · wk 7 | WASSpread 4 homeWAS v GB | 50.7% | cleared | 2 |
| 2022-10-162022 · wk 6 | MIASpread 3 homeMIA v MIN | 46.7% | missed | −8 |
| 2022-10-162022 · wk 6 | ATLSpread 3.5 homeATL v SF | 51.2% | cleared | 14 |
| 2022-10-162022 · wk 6 | NOSpread 3 homeNO v CIN | 48.8% | missed | −4 |
| 2022-10-162022 · wk 6 | NYGSpread 5.5 homeNYG v BAL | 49.5% | cleared | 4 |
| 2022-10-092022 · wk 5 | ARISpread 5.5 homeARI v PHI | 51.4% | cleared | −3 |
| 2022-10-092022 · wk 5 | CARSpread 6 homeCAR v SF | 50.8% | missed | −22 |
| 2022-10-092022 · wk 5 | NYJSpread 3 homeNYJ v MIA | 48.8% | cleared | 23 |
| 2022-10-022022 · wk 4 | BALSpread 3 homeBAL v BUF | 47.4% | push | −3 |
| 2022-10-022022 · wk 4 | HOUSpread 5.5 homeHOU v LAC | 49.8% | missed | −10 |
| 2022-10-022022 · wk 4 | NOSpread 4 homeNO v MIN | 50.5% | cleared | −3 |
| 2022-09-252022 · wk 3 | ARISpread 3.5 homeARI v LA | 52.2% | missed | −8 |
| 2022-09-252022 · wk 3 | NYJSpread 6.5 homeNYJ v CIN | 52.2% | missed | −15 |
| 2022-09-252022 · wk 3 | INDSpread 4.5 homeIND v KC | 52.0% | cleared | 3 |
| 2022-09-252022 · wk 3 | WASSpread 6 homeWAS v PHI | 51.6% | missed | −16 |
| 2022-09-252022 · wk 3 | MIASpread 4 homeMIA v BUF | 50.2% | cleared | 2 |
| 2022-09-182022 · wk 2 | PITSpread 3 homePIT v NE | 50.8% | push | −3 |
| 2022-09-182022 · wk 2 | JAXSpread 3 homeJAX v IND | 49.5% | cleared | 24 |
| 2022-09-122022 · wk 1 | SEASpread 6 homeSEA v DEN | 49.5% | cleared | 1 |
| 2022-09-112022 · wk 1 | ARISpread 6 homeARI v KC | 49.6% | missed | −23 |
| 2022-09-112022 · wk 1 | CHISpread 6.5 homeCHI v SF | 51.3% | cleared | 9 |
| 2022-09-112022 · wk 1 | DETSpread 6 homeDET v PHI | 48.8% | cleared | −3 |
| 2022-09-112022 · wk 1 | ATLSpread 6 homeATL v NO | 50.5% | cleared | −1 |
| 2022-09-112022 · wk 1 | HOUSpread 7 homeHOU v IND | 50.5% | cleared | 0 |
| 2022-09-112022 · wk 1 | NYJSpread 6.5 homeNYJ v BAL | 50.5% | missed | −15 |
| 2022-01-092021 · wk 18 | LVSpread 3.5 homeLV v LAC | 50.0% | cleared | 3 |
| 2022-01-092021 · wk 18 | ATLSpread 4.5 homeATL v NO | 48.7% | missed | −10 |
| 2022-01-092021 · wk 18 | MIASpread 6 homeMIA v NE | 50.0% | cleared | 9 |
| 2022-01-092021 · wk 18 | NYGSpread 6 homeNYG v WAS | 50.8% | missed | −15 |
| 2022-01-092021 · wk 18 | DETSpread 4 homeDET v GB | 50.0% | cleared | 7 |
| 2022-01-082021 · wk 18 | PHISpread 6.5 homePHI v DAL | 50.0% | missed | −25 |
| 2022-01-022021 · wk 17 | WASSpread 6.5 homeWAS v PHI | 52.1% | cleared | −4 |
| 2022-01-022021 · wk 17 | BALSpread 7 homeBAL v LA | 49.0% | cleared | −1 |
| 2022-01-022021 · wk 17 | CINSpread 3.5 homeCIN v KC | 50.6% | cleared | 3 |
| 2021-12-272021 · wk 16 | NOSpread 3 homeNO v MIA | 49.0% | missed | −17 |
| 2021-12-262021 · wk 16 | MINSpread 3.5 homeMIN v LA | 50.6% | missed | −7 |
| 2021-12-232021 · wk 16 | TENSpread 3.5 homeTEN v SF | 53.1% | cleared | 3 |
| 2021-12-202021 · wk 15 | CHISpread 7 homeCHI v MIN | 48.2% | missed | −8 |
| 2021-12-202021 · wk 15 | CLESpread 3 homeCLE v LV | 50.8% | cleared | −2 |
| 2021-12-162021 · wk 15 | LACSpread 3 homeLAC v KC | 47.5% | missed | −6 |
| 2021-12-122021 · wk 14 | WASSpread 6.5 homeWAS v DAL | 47.9% | missed | −7 |
| 2021-12-122021 · wk 14 | NYJSpread 4.5 homeNYJ v NO | 52.0% | missed | −21 |
| 2021-12-052021 · wk 13 | SEASpread 3 homeSEA v SF | 53.1% | cleared | 7 |
| 2021-12-052021 · wk 13 | PITSpread 4 homePIT v BAL | 50.3% | cleared | 1 |
| 2021-12-052021 · wk 13 | NYJSpread 5 homeNYJ v PHI | 51.7% | missed | −15 |
| 2021-12-052021 · wk 13 | DETSpread 7 homeDET v MIN | 50.3% | cleared | 2 |
| 2021-12-022021 · wk 13 | NOSpread 6 homeNO v DAL | 48.8% | missed | −10 |
All 1,400 bets in the rule’s file (JSON) · no price, book, stake or profit per bet, by the file’s restriction
How this is computed
Hypothetical results · nothing here was bet · not advice · lab/nfl/presets/home_underdogs_3_to_7.json, written Sun, Sep 27, 2:14 AM ET · universe built Sun, Sep 27, 2:14 AM ET · strategy 528680058834