calibrated SPORTS
NFLLinesReceipts

Lines · Receipts · 2026

Every lean the model published, graded, none removed.

Win or lose, it’s all here. The model scores worse than the market, and this is the ledger that shows it lean by lean.

1,234
Leans graded, 2026
663–571
Cleared · missed
53.7% [50.9, 56.5]
Hit rate · n = 1,234 cleared or missed
+9.3u [−55.2, +73.8]
Units at the read price

Running units

Up 9.28 units over 1,205 leans. The interval spans zero, so the record can’t be told apart from breaking even.

Hypothetical units at the read price, lean by lean1 unit a lean · flat
0u+29u−66u
the published leans, 1u eacha coin at the same priceszero

Nobody bet this: it is the published record at the prices that stood. A cleared lean pays what its price pays on one unit; a missed lean loses the unit; a push returns it; a void is not a bet. The price is the median American price on the lean’s side across the benchmark books at the read that published it, as the ledger records it. The dashed line is the same stakes at the same prices if every lean had cleared exactly half the time: a reference, not a verdict. The interval is the total’s, 95%: n × mean ± 1.96 × √n × sd of the per-lean returns, treating leans as independent. Leans in one game are not, so the real interval is wider. 29 settled leans have no valid recorded price (missing, or between −100 and +100, where no American price lies) and are on neither line.

The ledger

One row per lean, in the order it was published. Filter it any way you like; the total never changes.

#Wk · gamePlayerMarketLineSidePriceResultUnits
8W3 · CAR @ CLEWRXavier LegetteRec1.5Over+115voidinactive—
155W3 · HOU @ INDWRDarius SlaytonRec1.5Over+162voidinactive—
219W4 · IND @ WASWRKeenan AllenRec3.5Over−131.5voidmarket pulled—
220W4 · IND @ WASWRStefon DiggsRec4.5Over+116voidmarket pulled—
389W4 · IND @ WASWRDarius SlaytonRec1.5Over+170.5voidmarket pulled—
500W4 · ATL @ NOTENoah FantRec1.5Over−165voidmarket pulled—
676W5 · LV @ NETEIan ThomasRec0.5Over+115voidmarket pulled—
852W6 · TEN @ INDRBTyjae SpearsRec2.5Over+101voidmarket pulled—
1143W7 · LA @ LVWRJordan WhittingtonRec0.5Over−189.5voidmarket pulled—
1168W7 · CLE @ TENWRCalvin RidleyRec0.5Over−182voidmarket pulled—
1171W7 · CLE @ TENRBTyjae SpearsRec2.5Over+115voidmarket pulled—
1193W7 · SF @ ATLWROlamide ZaccheausRec1.5Over+176voidmarket pulled—
Showing 12 of 1,279 leans · 2,549 rows in the ledgerSorted oldest first · filters narrow the list, never the total

Show all 1,279

All 1,279 leans this season and every event, with prices and timestamps (CSV) · the same rows (parquet). Each row is one lean as the ledger has it: published at a read, then graded once on the line it was published at, or voided with a reason. A lean whose line later moved, or whose game has not been played, is still here.

Rows in the ledger

2,549 rows in the ledger, and the hash chain, recomputed here over every one of them, holds.

Rows in the ledger, by week: a running count

400
W3
1,024
W4
1,534
W5
2,054
W6
2,540
W7
2,549
W8

Rows are events: a lean is published once and graded or voided once, so it is one row or two. Week 3: 400 rows, 200 leans published · Week 4: 624 rows, 312 leans published · Week 5: 510 rows, 255 leans published · Week 6: 520 rows, 260 leans published · Week 7: 486 rows, 243 leans published · Week 8: 9 rows, 9 leans published. A running count read from one file cannot go down and cannot show a row taken out before the file was read, so it is a count here, not a proof.

The chain head

Recomputed here: every row’s hash is the SHA-256 of its 25 cells and the previous row’s hash, so editing or removing a row breaks every hash after it. Rows cut from the end leave a chain that still holds; only a head recorded before the cut catches that. The head is fab2bc85f6cb4b63dc640bd548e6eeab5ee864ac33eb987845d37d180d3dc739 - keep it, and check it against the next one.

  • Week 4’s index publishes row #1,024’s hash as 85a9…1844: this file's row #1,024 carries the same.
  • Week 5’s index publishes row #1,534’s hash as c58b…5471: this file's row #1,534 carries the same.
  • Week 6’s index publishes row #2,054’s hash as f713…37c3: this file's row #2,054 carries the same.
  • Week 7’s index publishes row #2,540’s hash as 95c9…1855: this file's row #2,540 carries the same.
  • Week 8’s index publishes row #2,549’s hash as fab2…c739: this file's row #2,549 carries the same.

Pushes and voids

0 pushes and 36 voids so far. Each stays on the record; neither counts toward the hit rate.

W3 · CAR @ CLEvoid
WRXavier Legette
Rec 1.5 · over
Void: inactive
W3 · NYJ @ DETvoid
WRAdonai Mitchell
Rec 3.5 · under
Void: inactive
W3 · BAL @ DALvoid
WRChris Moore
Rec 1.5 · under
Void: market pulled
W3 · BAL @ DALvoid
WRLaJohntay Wester
Rec 2.5 · under
Void: market pulled
W3 · HOU @ INDvoid
WRDarius Slayton
Rec 1.5 · over
Void: inactive
W3 · TEN @ NYGvoid
RBDevin Singletary
Rec 1.5 · under
Void: inactive
W4 · IND @ WASvoid
WRKeenan Allen
Rec 3.5 · over
Void: market pulled
W4 · IND @ WASvoid
WRStefon Diggs
Rec 4.5 · over
Void: market pulled
W4 · IND @ WASvoid
WRTerry McLaurin
Rec 4.5 · under
Void: market pulled
W4 · IND @ WASvoid
WRAntonio Williams
Rec 1.5 · under
Void: market pulled
W4 · LA @ PHIvoid
WRDeVonta Smith
Rec 5.5 · under
Void: market pulled
W4 · KC @ LVvoid
RBMike Washington Jr.
Rush att 4.5 · under
Void: market pulled
W4 · LAC @ SEAvoid
RBJadarian Price
Rec 1.5 · under
Void: market pulled
W4 · DET @ CARvoid
WRJalen Coker
Rec 4.5 · under
Void: market pulled
W4 · IND @ WASvoid
WRDarius Slayton
Rec 1.5 · over
Void: market pulled
W4 · ATL @ NOvoid
TENoah Fant
Rec 1.5 · over
Void: market pulled
W5 · LV @ NEvoid
RBAshton Jeanty
Rec 3.5 · under
Void: market pulled
W5 · LV @ NEvoid
RBAshton Jeanty
Rush att 16.5 · under
Void: market pulled
W5 · CHI @ GBvoid
RBKyle Monangai
Rush att 11.5 · under
Void: market pulled
W5 · DET @ ARIvoid
WRMarvin Harrison Jr.
Rec 2.5 · under
Void: market pulled
W5 · BUF @ LAvoid
WRJosh Palmer
Rec 1.5 · under
Void: market pulled
W5 · LV @ NEvoid
TEIan Thomas
Rec 0.5 · over
Void: market pulled
W5 · MIN @ NOvoid
WRJordan Addison
Rec 3.5 · under
Void: market pulled
W5 · DEN @ LACvoid
WRLadd McConkey
Rec 3.5 · under
Void: market pulled
W6 · TEN @ INDvoid
RBTyjae Spears
Rec 2.5 · over
Void: market pulled
W6 · TEN @ INDvoid
TETyler Warren
Rec 5.5 · under
Void: market pulled
W6 · BUF @ LVvoid
WRDJ Moore
Rec 3.5 · under
Void: market pulled
W6 · BAL @ CLEvoid
RBQuinshon Judkins
Rec 2.5 · under
Void: market pulled
W7 · LA @ LVvoid
TETyler Higbee
Rec 4.5 · under
Void: market pulled
W7 · LA @ LVvoid
WRPuka Nacua
Rec 8.5 · under
Void: market pulled
W7 · LA @ LVvoid
WRJordan Whittington
Rec 0.5 · over
Void: market pulled
W7 · LA @ LVvoid
WRKonata Mumpfield
Rec 1.5 · under
Void: market pulled
W7 · CLE @ TENvoid
WRCalvin Ridley
Rec 0.5 · over
Void: market pulled
W7 · CLE @ TENvoid
RBTyjae Spears
Rec 2.5 · over
Void: market pulled
W7 · SF @ ATLvoid
WROlamide Zaccheaus
Rec 1.5 · over
Void: market pulled
W7 · TB @ CARvoid
RBAJ Dillon
Rush att 3.5 · under
Void: market pulled

By market

Receptions carry most of the leans: 943 of 1,279.

MarketLeansCleared · missedHit rate · 95%Against 52.4%
Receptions943478–42552.9% 49.7–56.2contains 52.4%
Rush attempts336185–14655.9% 50.5–61.1contains 52.4%

By market and lean size

5 of 5 intervals contain 52.4%, the break-even at −110; 0 sit wholly under it; 0 sit wholly over it. 1 cell has no interval: fewer than 30 leans that cleared or missed.

MarketGapnCleared95%Against 52.4%
Receptions4–6 pp12246%37%–55%
Receptions6–8 pp8346%35%–56%
Receptions8+ pp69855%51%–59%
Rush attempts4–6 pp3639%25%–55%
Rush attempts6–8 pp20—pending
Rush attempts8+ pp27558%52%–64%

The size is the producer’s own band on each lean: the gap between the model’s probability and the market’s, in probability points, when the lean was published. A rate is shown where a market, or a market and size, has at least 30 leans that cleared or missed; a push is neither and is counted apart. The interval is Wilson’s, 95%, and it treats every lean as independent. Leans in one game are not, so the real uncertainty is wider than the interval drawn.

How the model scores against the market

Walk-forward Brier(model) - Brier(close), 2025

0.0195

95% 0.0144 to 0.0253 · n 6,031 outcomes

The model scored worse than the de-vigged sportsbook close, over 284 games (the board index’s copy, which agrees with the registry).

research/hypotheses.json · hypotheses[id=R15].estimate

Brier(model) - Brier(Kalshi mid), week 1

0.0142

95% 0.0007 to 0.0263 · n 925 predictions · 14 games

The model scored worse than the Kalshi mid.

research/calibration.json · brier.model_minus_market.estimate

Restatement note, from the metric registry

R10 is the 2026-09-17 restatement on n=706 (229 books one-sided at entry); research/calibration.json now scores n=935 because the Kalshi candle backfill supplies a two-sided entry quote for every prediction. Unresolved: which entry quote is correct (a-36). (research/hypotheses.json · hypotheses[id=R10].estimate, not printed here)

What a lean is

The side the model’s probability sits on, when it differs from the market’s de-vigged price by 4 points or more at the read that publishes it. In the board’s own words: over at gap >= +T, under at gap <= -T.

What it is not

A recommendation, or a claim that the model knows something the market does not. It is published so it can be graded, not because disagreeing has paid. Walk-forward, the model scored worse than the de-vigged sportsbook close (95% interval for the Brier difference 0.0144 to 0.0253).

What would change the verdict

A season whose walk-forward interval for Brier(model) − Brier(close) lies wholly under zero. On this page, a record whose 95% interval lies wholly over the −110 break-even. Each is where an interval sits, computed from the files, so either sentence above would change on its own.

Not a sportsbook · no wagers accepted · nothing here is advice · board/nfl/ledger.csv and board/nfl/ledger.parquet: 2,549 rows each, identical row for row · board indexes for week 3, 4, 5, 6, 7, 8 of 2026 · model baseline-usage-0.4+03571d4710af