calibrated SPORTS

Research

Findings, with
the script attached.

Every hypothesis that was registered, the verdict it came back with, and the committed script that produces it. The nulls are published with the rest.

Brier gap, model − market · positive is worse

+0.0142

The interval excludes zero, only just: its low end is +0.0007.

95% interval 0.0007 to 0.0263.

Registered
18
Edge confirmed
0
verdicts meeting the criterion
Brier gap vs market
+0.0142
[+0.0007, +0.0263]
Still open
1
With a script
18

Where the eighteen landed

0 of 18 reached edge-confirmed.

  • 13 retired
  • 2 came back null
  • 2 could not be tested on the data that exists
  • 1 still open

All 18 carry a committed script. A finding that cannot be re-run is a number someone remembers. Counts on this page are computed from the register, not written into it.

What the record cannot say

Between 85.2% and 93.1% say nothing either way (as cited 2026-09-20 and 2026-09-28).

110 of 1,588settled prop markets whose interval clears even money
110 clear · 6.9%1,478 say nothing · 93.1%

read from the record, not computed here · docs/audits/w08-track-b/scripts/even-money-split.mjs, over the published export · 2026-09-28

485 of 3,287player game-script elasticities whose interval clears zero
485 clear · 14.8%2,802 say nothing · 85.2%

read from the record, not computed here · cs-analytics/docs/F04-what-the-metrics-support.md · 2026-09-20

These two are cited rather than calculated at render time: no route on this site reads a whole population, and doing it in the browser is one read per subject. What would make them computed: for the first, a research export carrying the split as its parts (markets, how many are distinguishable from even money, and the criterion); for the second, an analytics export carrying every value with its interval.

How this is computed

Two pipelines, two populations, two nulls.

The model, scored

Brier, paired, with its interval, on 925 predictions over 14 games.

Worse than the market

Excludes zero

Brier, model − market: +0.0142 [+0.0007, +0.0263]

Model0.1845
Market0.1703

The interval excludes zero, so the model is measurably worse.

No better than a naive prior

Includes zero

Brier, model − naive: +0.0012 [−0.0101, +0.0136]

Model0.1845
Naive0.1833

The interval includes zero: indistinguishable from it on this set.

NFL week 1 2026, KXNFLREC + KXNFLRSHATT, common set n=925, 14 games. All three scores and both intervals are computed on this one set of 925 predictions.

How this is computed

Brier score, lower is better. Source: research/score.py (brief 021).

Each difference is the model’s score minus the other’s on the same predictions, so a positive difference means the model scored worse.

The register

18 rows, 11 with an estimate and its interval.

R01Do sportsbooks overprice longshot player props?+0.0898 [0.0552, 0.1429] probabilityretired

Every settled observation priced below 0.15 is a sacks over on a single-book 1-2 line ladder, and even there the priced value sits inside the Wilson interval.

brief longshot · n 167 · research/longshot.py

R02Does the model's week-1 entry beat the Kalshi close?−13.52 [−17.06, −10.4] ppretired

Mid-to-mid CLV was +0.62pp [+0.13, +1.22], but the book tightened from below; where money changes hands CLV is deeply negative.

brief S00 · n 493 · 14 games · research/clv.py

R03Held to settlement, does one crossing at the touch pay?−3 [−3.8, −2.26] ppretired

Exactly mid-to-mid minus half the 7.22c entry spread; shrinking the ticket buys back slippage and nothing else.

brief S01 · research/clv.py

R04Would a resting maker order on the model's side have earned the spread?+0.28 [−0.34, 1] ppretired

Fill rate 18.0%; the fills were worth nothing while the misses were worth everything (selection gap +4.52pp [+3.58, +5.79]).

brief M01 · n 704 · 14 games · research/maker.py

R05Does the model's side selection add value over a model-free maker control?+0.67 [0.05, 1.39] ppretired

The flipped side reads +0.07pp [-0.69, +0.93]; the weekly product peaks at ~$113/week at 250 contracts - real but small.

brief 018 · 14 games · research/maker.py

R06Do Kalshi ladder rungs violate monotonicity on the touch, tradeably?232 episodes of 892retired

95% are in-game rungs updating out of step; where depth could be checked the thinner leg carried a median of 1 contract, max 2.

brief 019 H1 · n 892 · research/structural.py

R07Do first-TD-scorer partitions sum to more or less than 1?16 events of 18not testable

13 of 16 settled week-1 events had no No Touchdown leg, so the partition sum is undefined.

brief 019 H2 · n 18 · research/structural.py

R08Does quoting both sides capture the spread, per series?−0.83 [−1.67, −0.29] ppretired

Negative on every tight series and zero on the prop series; spread and maker fee are collinear, so the ordering cannot separate them.

brief 019 H3 · research/structural.py

R09Does Kalshi's team-market price lag the sportsbook consensus by more than it costs to cross?−0.19 [−0.39, 0.01] ppnull

Pre-kickoff gaps above 2.5pp were three claims on minority half-point lines and CLV to Kalshi's own close was -0.9pp; in-game gaps were book clock skew.

brief 020 · n 1,060 · 16 games · research/consensus.py

R10Is the model's probability better than the market's on settled outcomes?Not the band’s figure: a different set. Open for why.+0.024 [0.0089, 0.0373] Brierretired

Worse than the market, with the interval excluding zero and the estimate above the minimum detectable effect. Restated 2026-09-17 after the settlement fix: the population grew from 682 to 706 as played-with-no-stat-row outcomes began settling at 0, and the model now scores IDENTICALLY to the smoothed prior-season rate (0.1916 against 0.1916) rather than merely close to it.

brief 021 · n 706 · 14 games · research/score.py

Not the figure in the band above, and the registry says why: 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).

R11After a player reaches a receptions rung mid-game, is the winning side still offered?+1.81 [1.24, 2.47] ppopen

Passes four of five bars. The week-2 replication cannot be graded: the logger captured no order-book depth for week-2 Sunday or Monday player props, and the figure is defined on depth-confirmed prices. Awaits a week with prop depth.

brief 022 H1 · n 16 · 8 games · research/sweep/h1_settlement.py

R12Does order-book imbalance predict a move larger than the spread plus fee?—retired

The in-game slope is real and replicates on college football, but net of cost is negative in all 30 NFL and all 16 estimable CFB cells; the largest gross move is ~1.1pp against 1.5-24pp of cost.

brief 022 H2 · research/sweep/h2_imbalance.py

R13When is the Kalshi book widest and tightest?—null

Cross game lines 1-6h before kickoff; never cross a prop in-game, where REC spreads reach 16c and RSHATT 63c on 1-2 contracts.

brief 022 H3 · research/sweep/h3_lifecycle.py

R14Does an open scan of week 1 find anything that clears five pre-registered bars?0 findings of 101 candidatesretired

396 search tests, 230 at nominal p<0.05 against 16.4 expected; the replicating effects all lose to cost.

brief 022 scan · n 101 · research/sweep/summarize.py

R15Walk-forward, does the model beat the de-vigged sportsbook close?+0.0195 [0.0144, 0.0253] Brierretired

Worse in every season (2023 +0.0229, 2024 +0.0237) against an MDE of ~0.008, and in all 13 variants bracketing the model's unverified constants. Restated 2026-09-17 after the settlement fix, which grew every season's sample and collapsed the separate corrected arm into the primary one - it now reports 0 outcomes moved.

brief 023 Part 1 · n 6,031 · 284 games · research/walkforward.py

R16Do sportsbooks disagree enough for arbitrage or middles?1.09 ppretired

Arbs appear on 2.53% of receptions opportunities from slow books, fail replication, and are worth ~$5 per $500 instance before limiting; every middle loses.

brief 023 Part 2 · research/bookvbook.py

R17Do teammates' lines lag an inactive announcement?0 eventsnot testable

No source on disk timestamps an inactive; Kalshi pulled a Friday-OUT player's markets on Saturday, removing the game-day window for known outs.

brief 023 Part 3 · n 0 · research/inactives.py

R18Does the sportsbook close overprice the over on player props, by more than it costs to bet the under?−2.43 [−3.13, −1.72] ppretired

The close priced the over at 0.4880 and it cleared 0.4637 of the time; half the archive's median 1.0675 overround is 3.38c a side, which is what a sportsbook under costs. Restated 2026-09-24 from the 2026-09-10 figure (-1.40pp, n 43,209): the 2026-09-17 settlement fix now settles a player who played with no stat row at 0. Postseason games are excluded because their props are not yet settled correctly.

brief calibration · n 44,198 · 814 games · research/calibration.py

The written study

research/hypotheses.json · generated 2026-09-24T22:59:55Z

How this is computed

One row per registered hypothesis, in the order the file publishes them. The estimate column carries the interval the script produced, or an em dash where the question was not answerable on the data that exists. Each interval is drawn on the row’s own scale with zero marked: rows are in different units, so no two rows share a scale. Open a row for why it came out as it did, its brief and its script.

Market calibration · the written study

18 registered · 0 edge confirmed · all 18 with a scriptBrier · model 0.1845 · market 0.1703 · naive 0.1833 · n 925 · 14 games