calibrated SPORTS
NFLReplay

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.

Rules replayed
4
4 more listed that the engine cannot run
Seasons replayed
26
1999–2024 · 2025 held out
Priced at
Close
all 4 replayed rules · consensus close · a choice in the builder

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.

1What you’re bettingProp · under · main line
Bet typeplayer props, or the game's spread, total or moneyline
Markets5 of 5
Sidethe 4 the engine takes for a prop
Linea market can post a ladder of lines; the alternative lines are its rungs
for nearest: the rung closest to this number
2When it’s pricedat close · consensus close
Timingwhen the price is read
Price sourcewhose price each bet is graded at
De-vig and juice
De-vigfor probability conditions; every bet pays at the posted price
Multiplicative · the engine’s one method
Posted juicepay each bet at the book's own price
When juice isn’t postedthe American price assumed
3How muchflat 1u
Methodsizing changes what bets are worth, not which are made
Unit size
units a bet
4Limits and stopsplayer-week ≤1
Max bets per game
Max per player per weekthe engine's default is 1
Max bets per week

No stops: a drawdown stop, a losing-weeks stop, a per-season cap, one leg per game and a cap on live exposure are not fields of lab.strategy/1, so the engine cannot apply them and none is offered.

5What must be true2023–2024 · 0 conditions
Seasons2025 is held out and cannot be picked
to2025 · held out
Seasonregular season or postseason
Weeks
to
Venuethe catalogue's game.home
Roofthe catalogue's game.dome

Conditionseach a figure stored as of before kickoff

The feature picker: coming once the Lab export publishes its catalogue, lab/nfl/catalogue.json. Until then a condition is typed as its feature key.

6How it’s judged2,000 resamples · 1,000 draws
Bootstrapwhat the ROI interval resamples
Whole weeks · the engine’s one method
Bootstrap resamples100 to 2,000; more steadies the interval and does not move the result
Random draws for the luck check100 to 1,000 random rules of the same size
Settlement
A push is refunded · no snap voids the bet · the engine’s only rules
Reset to the rule shown

01Rules

4 rules replayed · 4 more listed that the engine cannot run · Film Room

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%.

Fade every over

prop under on receptions/receiving_yards/rush_attempts/tackles_assists/sacks, 2023-2025 REG weeks 1-18, 0 condition(s), consensus_close at close

Loses2025 held out

−3.3% ROI

13,680 bets, −3.3% ROI.

“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.

Hit rate52.5% [51.7%, 53.4%]

ROI−3.3% [−5.0%, −1.8%]

Cleared 52.5% [51.7, 53.4] of 13,656 graded, against a break-even of 53.7% at the average price paid (−116): the interval sits wholly under it. The ROI interval runs from −5.0% to −1.8%, and sits wholly under zero.

Bets
13,680
36 weeks · 24 void
Cleared
7,174
6,482 missed · 0 push
Hit rate
52.5%
95% [51.7, 53.4] · of 13,656
Break-even
53.7%
at the average price paid, −116
ROI
−3.3%
95% [−5.0, −1.8] · by week
Units
−454.6u
95% [−671.6, −254.2] · 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 block

No luck check: the rule takes every bet the universe offers at this side, so a random draw of the same size IS the rule.

Returns over time: coming once this rule’s file, lab/nfl/presets/fade_every_over.json, carries its week-block series (the returns key, a-44). Nothing is drawn from anything else in the meantime.

How this is computed
The line is cumulative units, staked 1 unit flat, counted in date order. It moves once per block of weeks, not once per bet: each block is whole weeks of one season holding at least the file's floor of cleared bets, because consecutive points of a bet-by-bet curve would give each bet’s book price back, and the file withholds those (“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.”). The band is where 90% of random rules land at the same block, the 5th to the 95th percentile of rules drawing the same number of bets, at random, from the same pool of eligible lines on the same side. Inside it, the rule did nothing a coin could not.

By season

ROI · 95% interval

1 of 2 seasons' ROI intervals include zero; 1 sits wholly under it; 0 sit wholly over it.

SeasonBetsCleared95%ROI95%Against zero
20236,00550.1%[48.8, 51.3]−5.6%[−8.2, −3.1]
20247,67554.5%[53.3, 55.6]−1.5%[−3.2, +0.1]
How this is computed
A real effect shows up every year; one good season inside a run of intervals that include zero is what chance looks like. The ROI interval resamples whole weeks, so bets in the same week move together. Seasons under 100 bets are greyed: their intervals are wide enough that the row should not be read on its own.

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 greyed

32 segments in 5 cuts; 6 under 100 bets, greyed.

Market

SegmentBetsCleared95%ROI95%Against zero
Receiving yards6,37851.1%[49.9, 52.4]−3.3%[−5.5, −1.1]
Receptionsunder 100 bets9444.7%[35.0, 54.7]−17.7%[−36.5, +1.1]
Rush attempts97451.9%[48.8, 55.0]−3.1%[−8.7, +2.4]
Sacks1,16665.8%[63.0, 68.4]−2.3%[−6.8, +2.3]
Tackles + assists5,06851.5%[50.1, 52.9]−3.4%[−6.1, −1.0]

Home or away

SegmentBetsCleared95%ROI95%Against zero
Away6,75353.2%[52.0, 54.4]−2.1%[−4.4, +0.2]
Home6,70651.8%[50.6, 53.0]−4.8%[−6.8, −2.9]

Roof

SegmentBetsCleared95%ROI95%Against zero
Open air9,17853.0%[52.0, 54.0]−2.5%[−4.6, −0.3]
Dome4,28151.4%[49.9, 52.9]−5.3%[−7.7, −3.1]

Position

SegmentBetsCleared95%ROI95%Against zero
CB1,34849.3%[46.6, 51.9]−8.5%[−14.3, −2.7]
DB18847.9%[40.8, 55.0]−10.4%[−28.8, +5.9]
DE66461.1%[57.4, 64.8]−2.0%[−7.4, +3.8]
DLunder 100 bets1070.0%[39.7, 89.2]ROI and units withheld: they would average 7 cleared bet prices, fewer than 10, and could be read back to a book price
DT41867.9%[63.3, 72.2]+1.8%[−5.0, +8.3]
FBunder 100 bets2055.0%[34.2, 74.2]+3.8%[−34.5, +42.0]
FS36253.9%[48.7, 59.0]+1.8%[−5.6, +9.7]
ILB11552.2%[43.1, 61.1]−2.1%[−19.4, +14.5]
LB1,48354.2%[51.6, 56.7]−2.6%[−6.2, +0.9]
MLB19153.4%[46.3, 60.3]−0.7%[−14.3, +12.2]
NTunder 100 bets3979.5%[64.5, 89.2]+27.2%[+2.0, +48.7]
OLB28453.5%[47.7, 59.2]−1.9%[−13.1, +9.2]
QB80152.4%[49.0, 55.9]−2.0%[−7.9, +3.7]
RB1,69051.4%[49.0, 53.8]−3.1%[−7.1, +1.2]
S14351.0%[42.9, 59.1]−3.4%[−17.3, +10.2]
S96751.1%[48.0, 54.3]−3.5%[−9.9, +2.9]
SSunder 100 bets1369.2%[42.4, 87.3]ROI and units withheld: they would average 9 cleared bet prices, fewer than 10, and could be read back to a book price
TE1,47549.6%[47.1, 52.2]−6.1%[−12.0, −0.4]
WR3,41851.6%[49.9, 53.2]−2.5%[−5.5, +0.6]

De-vigged price

SegmentBetsCleared95%ROI95%Against zero
0.40–0.503,67447.1%[45.5, 48.8]−4.8%[−7.7, −2.0]
0.50–0.609,19553.3%[52.2, 54.3]−2.7%[−4.7, −0.6]
<0.40under 100 bets4744.7%[31.4, 58.8]+9.4%[−23.4, +40.0]
>=0.6076470.2%[66.9, 73.4]−5.3%[−9.2, −1.4]
How this is computed
The same bets, cut by what was known before kickoff. A segment is not a new rule: with this many cuts, some will sit away from the rest by chance, so a single segment’s interval is not evidence on its own. ROI and units are withheld where they would average fewer than 10 cleared bets’ prices, and the file says so on the row.

The rule, as the engine approved it

prop under on receptions/receiving_yards/rush_attempts/tackles_assists/sacks, 2023-2025 REG weeks 1-18, 0 condition(s), consensus_close at close

Bet type
prop
Markets
Receptions, Receiving yards, Rush attempts, Tackles + assists, Sacks
Side
under
Seasons
2023–2025 · REG · weeks 1–18
Conditions
none
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

  • 2023–2025 · The Odds API historical close, draftkings, fanduel, betmgm · a close · last snapshot at or before kickoff

strategy 204883ce9388d6c1614c6ac733dc235cae92e1a897948c4bbcffb2dc11df0698 · AUDIT-2026-09-24, the Lab library launch set

How this is computed
The strategy is stored exactly as the engine approved it, defaults filled, and hashed; the same rule always hashes the same. Every condition is a figure stored as of before kickoff, so nothing known after the game can decide a bet.

Every bet it made

50 shown of 13,680 bets, newest first; page 9 of 274. Filters narrow the list; nothing is removed.

Date · wkBetDe-vigResultActual
2024-12-292024 · wk 1700-0036418Tackles + assists 8.5 underPHI v DAL44.6%cleared7
2024-12-292024 · wk 1700-0037130Tackles + assists 5.5 underPHI v DAL55.4%cleared3
2024-12-292024 · wk 17Mason RudolphRush attempts 3.5 underTEN v JAX55.4%missed5
2024-12-292024 · wk 1700-0033393Tackles + assists 4.5 underIND v NYG55.4%cleared3
2024-12-292024 · wk 1700-0029607Tackles + assists 9.5 underNO v LV54.9%missed13
2024-12-292024 · wk 17Bryce YoungRush attempts 3.5 underCAR v TB54.7%cleared2
2024-12-292024 · wk 17Raheem BlackshearReceiving yards 12.5 underCAR v TB45.9%cleared0
2024-12-292024 · wk 1700-0034413Tackles + assists 8.5 underJAX v TEN54.1%missed11
2024-12-292024 · wk 1700-0037616Tackles + assists 6.5 underIND v NYG53.9%missed8
2024-12-292024 · wk 1700-0035301Tackles + assists 5.5 underDAL v PHI46.5%cleared1
2024-12-292024 · wk 17Jourdan LewisTackles + assists 5.5 underDAL v PHI53.3%cleared5
2024-12-292024 · wk 1700-0037235Sacks 0.25 underJAX v TEN53.1%missed1
2024-12-292024 · wk 1700-0036286Sacks 0.25 underLV v NO53.1%missed1
2024-12-292024 · wk 17Josh AllenRush attempts 6.5 underBUF v NYJ46.9%cleared5
2024-12-292024 · wk 1700-0038121Tackles + assists 4.5 underNO v LV52.5%cleared2
2024-12-292024 · wk 1700-0035663Tackles + assists 5.5 underBUF v NYJ47.5%cleared4
2024-12-292024 · wk 1700-0039846Tackles + assists 4.5 underTB v CAR52.0%cleared3
2024-12-292024 · wk 1700-0039829Tackles + assists 7.5 underNYG v IND52.0%missed8
2024-12-292024 · wk 1700-0038407Tackles + assists 4.5 underIND v NYG52.0%missed6
2024-12-292024 · wk 1700-0037268Tackles + assists 4.5 underTB v CAR52.0%missed6
2024-12-292024 · wk 1700-0036500Tackles + assists 8.5 underNYJ v BUF52.0%missed10
2024-12-292024 · wk 1700-0036479Sacks 0.25 underIND v NYG52.0%cleared0
2024-12-292024 · wk 1700-0035655Tackles + assists 5.5 underNO v LV52.0%missed8
2024-12-292024 · wk 1700-0035253Tackles + assists 4.5 underPHI v DAL52.0%cleared1
2024-12-292024 · wk 1700-0029562Tackles + assists 7.5 underTB v CAR52.0%cleared1
2024-12-292024 · wk 1700-0035680Tackles + assists 6.5 underNYJ v BUF51.5%missed10
2024-12-292024 · wk 17Terrace Marshall Jr.Receiving yards 3.5 underLV v NO48.5%missed28
2024-12-292024 · wk 1700-0036253Tackles + assists 4.5 underIND v NYG48.5%cleared4
2024-12-292024 · wk 1700-0034431Tackles + assists 8.5 underIND v NYG48.5%missed14
2024-12-292024 · wk 1700-0030459Tackles + assists 4.5 underNO v LV48.5%cleared3
2024-12-292024 · wk 1700-0039860Tackles + assists 3.5 underNO v LV51.0%cleared3
2024-12-292024 · wk 17Spencer RattlerRush attempts 4.5 underNO v LV51.0%cleared3
2024-12-292024 · wk 1700-0039372Tackles + assists 4.5 underTEN v JAX51.0%missed6
2024-12-292024 · wk 17Breece HallReceptions 3.5 underNYJ v BUF51.0%cleared1
2024-12-292024 · wk 17Jeremy RuckertReceiving yards 6.5 underNYJ v BUF51.0%cleared0
2024-12-292024 · wk 1700-0036974Tackles + assists 4.5 underJAX v TEN51.0%missed5
2024-12-292024 · wk 1700-0035713Tackles + assists 3.5 underNYG v IND51.0%missed6
2024-12-292024 · wk 1700-0035699Tackles + assists 4.5 underTB v CAR51.0%cleared1
2024-12-292024 · wk 17Darius SlaytonReceiving yards 19.5 underNYG v IND51.0%missed32
2024-12-292024 · wk 1700-0033294Tackles + assists 7.5 underNYJ v BUF51.0%missed8
2024-12-292024 · wk 1700-0039888Tackles + assists 2.5 underPHI v DAL49.0%missed5
2024-12-292024 · wk 1700-0036932Sacks 0.25 underDAL v PHI49.0%cleared0
2024-12-292024 · wk 17Devin DuvernayReceiving yards 7.5 underJAX v TEN49.0%cleared4
2024-12-292024 · wk 17Juwan JohnsonReceiving yards 26.5 underNO v LV49.0%missed66
2024-12-292024 · wk 1700-0035413Tackles + assists 8.5 underTEN v JAX49.0%cleared8
2024-12-292024 · wk 17David MooreReceiving yards 13.5 underCAR v TB49.0%missed17
2024-12-292024 · wk 17Devin SingletaryRush attempts 6.5 underNYG v IND49.2%cleared5
2024-12-292024 · wk 1700-0034384Tackles + assists 4.5 underNYJ v BUF50.7%missed5
2024-12-292024 · wk 17Baker MayfieldRush attempts 3.5 underTB v CAR49.4%cleared1
2024-12-292024 · wk 1700-0036927Tackles + assists 7.5 underNO v LV49.5%missed13

All 13,680 bets in the rule’s file (JSON) · no price, book, stake or profit per bet, by the file’s restriction

How this is computed
One row per bet as the file lists it: the line, the side, the de-vigged probability of that side at the close, and how it settled. A void is a player with no snap: not a bet, and not a win.

Hypothetical results · nothing here was bet · not advice · lab/nfl/presets/fade_every_over.json, written Sun, Sep 27, 2:14 AM ET · universe built Sun, Sep 27, 2:14 AM ET · strategy 204883ce9388