calibratedSPORTS

Research · published including the nulls

What was tested, and what it found

Every hypothesis this project has retired, with its interval. None of them found an edge that survives costs. That is the result, and it is published as plainly as a win would be.

Retired hypotheses

IDBriefQuestionVerdictEstimate [95%]nGamesWhyScript
R01longshotDo sportsbooks overprice longshot player props?
realized rate in the 0.125-0.150 price bucket (priced 0.1388)
retired — no edge+0.0898 [0.0552, 0.1429] probability167Every 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.research/longshot.py
R02S00Does the model's week-1 entry beat the Kalshi close?
executable CLV at 1,000 contracts
retired — no edge-13.52 [-17.06, -10.4] pp49314Mid-to-mid CLV was +0.62pp [+0.13, +1.22], but the book tightened from below; where money changes hands CLV is deeply negative.research/clv.py
R03S01Held to settlement, does one crossing at the touch pay?
one-crossing CLV against the closing mid
retired — no edge-3 [-3.8, -2.26] ppExactly mid-to-mid minus half the 7.22c entry spread; shrinking the ticket buys back slippage and nothing else.research/clv.py
R04M01Would a resting maker order on the model's side have earned the spread?
maker CLV conditional on a fill
retired — no edge+0.28 [-0.34, 1] pp70414Fill rate 18.0%; the fills were worth nothing while the misses were worth everything (selection gap +4.52pp [+3.58, +5.79]).research/maker.py
R05018Does the model's side selection add value over a model-free maker control?
conditional maker CLV, model's own side, 100 contracts
retired — no edge+0.67 [0.05, 1.39] pp14The flipped side reads +0.07pp [-0.69, +0.93]; the weekly product peaks at ~$113/week at 250 contracts - real but small.research/maker.py
R06019 H1Do Kalshi ladder rungs violate monotonicity on the touch, tradeably?
violation episodes surviving taker fees on both legs
retired — no edge+232 episodes of 89289295% are in-game rungs updating out of step; where depth could be checked the thinner leg carried a median of 1 contract, max 2.research/structural.py
R07019 H2Do first-TD-scorer partitions sum to more or less than 1?
incomplete first-TD events
not testable — data does not exist+16 events of 181813 of 16 settled week-1 events had no No Touchdown leg, so the partition sum is undefined.research/structural.py
R08019 H3Does quoting both sides capture the spread, per series?
conditional maker capture, KXNFLSPREAD
retired — no edge-0.83 [-1.67, -0.29] ppNegative on every tight series and zero on the prop series; spread and maker fee are collinear, so the ordering cannot separate them.research/structural.py
R09020Does Kalshi's team-market price lag the sportsbook consensus by more than it costs to cross?
mean gap, Kalshi mid minus de-vigged consensus
null — no effect-0.19 [-0.39, 0.01] pp1,06016Pre-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.research/consensus.py
R10021Is the model's probability better than the market's on settled outcomes?
Brier(model) - Brier(market)
retired — no edge+0.0275 [0.0117, 0.041] Brier68214Worse than the market, above the 0.021 minimum detectable effect, and indistinguishable from a smoothed prior-season hit rate.research/score.py
R11022 H1After a player reaches a receptions rung mid-game, is the winning side still offered?
executable net per contract at 120s, 10 contracts, depth-confirmed
open — awaiting holdout+1.81 [1.24, 2.47] pp168Passes four of five bars and awaits week-2 replication; about $17 for the week, and final-stat determination is look-ahead against the live feed.research/sweep/h1_settlement.py
R12022 H2Does order-book imbalance predict a move larger than the spread plus fee?
top-decile move minus half-spread and fee
retired — no edgeThe 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.research/sweep/h2_imbalance.py
R13022 H3When is the Kalshi book widest and tightest?
spread lifecycle (execution map, not an edge)
null — no effectCross game lines 1-6h before kickoff; never cross a prop in-game, where REC spreads reach 16c and RSHATT 63c on 1-2 contracts.research/sweep/h3_lifecycle.py
R14022 scanDoes an open scan of week 1 find anything that clears five pre-registered bars?
findings among candidates
retired — no edge0 findings of 101 candidates101396 search tests, 230 at nominal p<0.05 against 16.4 expected; the replicating effects all lose to cost.research/sweep/summarize.py
R15023 Part 1Walk-forward, does the model beat the de-vigged sportsbook close?
Brier(model) - Brier(close), 2025
retired — no edge+0.0218 [0.0162, 0.0277] Brier5,574271Worse in every season (2023 +0.0272, 2024 +0.0265) against an MDE of ~0.008, and in all 13 variants bracketing the model's unverified constants.research/walkforward.py
R16023 Part 2Do sportsbooks disagree enough for arbitrage or middles?
historical receptions arbitrage mean size
retired — no edge+1.09 ppArbs appear on 2.53% of receptions opportunities from slow books, fail replication, and are worth ~$5 per $500 instance before limiting; every middle loses.research/bookvbook.py
R17023 Part 3Do teammates' lines lag an inactive announcement?
inactive events with an announcement timestamp
not testable — data does not exist0 events0No source on disk timestamps an inactive; Kalshi pulled a Friday-OUT player's markets on Saturday, removing the game-day window for known outs.research/inactives.py

generated Tue, Sep 15, 5:22 PM ET

Model and market calibration

NFL week 1 2026, KXNFLREC + KXNFLRSHATT, common set n=682, 14 games

0.00.00.20.20.40.40.60.60.80.81.01.0FORECAST
model (ECE 0.0764)market (ECE 0.0387) identityhollow = n < 30, not a data point
Wilson 95% intervals. Brier: model 0.1957, market 0.1682, naive 0.1924; model − market +0.0275 [0.0117, 0.041]. Source: research/score.py (brief 021).
SeriesBinnForecastRealizedWilson 95%
model0.00.11480.0490.122[0.078, 0.184]
model0.10.21070.1470.252[0.180, 0.342]
model0.20.3910.2510.264[0.184, 0.362]
model0.30.4790.3530.494[0.386, 0.602]
model0.40.5670.4440.507[0.391, 0.624]
model0.50.6610.5470.525[0.402, 0.645]
model0.60.7470.6510.596[0.453, 0.724]
model0.70.8310.7500.581[0.408, 0.736]
model0.80.9420.8330.905[0.779, 0.962]
model0.91.090.9230.778[0.453, 0.937]not a data point
market0.00.11660.0550.078[0.046, 0.129]
market0.10.2900.1370.178[0.113, 0.269]
market0.20.3620.2450.290[0.192, 0.413]
market0.30.4470.3450.404[0.276, 0.547]
market0.40.5750.4510.387[0.285, 0.500]
market0.50.6840.5480.595[0.488, 0.694]
market0.60.7610.6450.639[0.514, 0.748]
market0.70.8520.7450.808[0.681, 0.892]
market0.80.9420.8390.857[0.722, 0.933]
market0.91.030.9401.000[0.439, 1.000]not a data point

The execution map

Cross game lines 1-6h before kickoff; never cross a prop in-game.

Median quoted spread (cents) · median touch size
Series>72h24-72h6-24h1-6h0-1hin-game
KXNFLREC9¢ · —4¢ · —3¢ · —3¢ · 502¢ · —16¢ · 2
KXNFLRSHATT6¢ · —13¢ · —10¢ · —9¢ · 39¢ · —63¢ · 1
KXNFLSPREAD2¢ · —1¢ · —1¢ · —1¢ · 7,9431¢ · —1¢ · 89
KXNFLTOTAL2¢ · —1¢ · —1¢ · —1¢ · —1¢ · —1¢ · —
KXNFLGAME1¢ · —1¢ · —1¢ · —1¢ · —1¢ · —1¢ · —
Spread relative to 60-minute price volatility
SeriesRatio
CHAMP3.88
WINSWEEK2.76
KXNFLRSHATT2.51
WINS2.13
DIVISION1.18
KXNFLREC1.05
KXNFLTOTAL0.31
KXNFLSPREAD0.30
KXNFLGAME0.30

research/sweep/h3_lifecycle.py (brief 022) · generated Tue, Sep 15, 5:22 PM ET