STRIKE15 · CALIBRATION LAB · offline analysis · no orders, no promises

Measures whether any minute × margin × regime bucket has a true hold rate that beats what the market charges, plus fees — and decomposes realized edge into signal selection, spread, and fee costs. Buckets are graded only with n ≥ 100 (candles) or n ≥ 30 (trades); everything else reads THIN by design.
1 · TRADES
On the Strike15 tab console: copy(s15Storage.getItem('kalshi_trades_v1')) then paste here.
2 · CANDLES
Same console: copy(JSON.stringify(allCandles1m)) then paste here. Grows only while the tab runs.
3 · HISTORY BACKFILL No candle archive? Pull 1-minute BTC history from Coinbase's public API — fills box 2 automatically.

Cross-venue arbitrage — settlement-verified two-leg locks, Kalshi ↔ Polymarket

LOCK = buy the leader's YES on the cheaper venue + the leader's NO on the dearer; if total cost is under 100¢ minus fees, profit is locked regardless of outcome. Verified against Kalshi settlement. Near-strike oracle-split pairs (ask gap over 40¢) are excluded — those are the venues disagreeing on direction, not mispricing. Fee model: Kalshi taker + ~2¢ Polymarket estimate. Displayed size is NOT verified.

Edge decomposition — where each traded dollar goes

TRADES
–
MARKET IMPLIED
–
REALIZED WR
–
NET EDGE / TRADE
–

Calibration ladder — market-implied vs realized, by price class

Implied uses fill price when logged (fillMult), else checked quote. Edge = realized − implied − fee drag. TRADEABLE requires the Wilson CI low bound to clear implied + fees. DEAD means the CI high bound can't reach it.

Trade cuts — read point · regime · direction

Cross-venue divergence — Kalshi vs Polymarket, same window, same leader

Different settlement oracles (CF Benchmarks vs Chainlink) mean near-strike windows can genuinely resolve differently across venues — gaps in tight margins are partly basis, not mispricing. Persistent wide-margin gaps ≥ 4¢ are the finding worth pursuing.

Quote join — what the market charges vs how often the leader holds (from the tool's quote logger)

Unconditional leader quotes sampled live by Strike15's quote logger. HOLD graded from feed price at rollover — margins under 0.03% stay FEED-LIMITED. CANDIDATE requires the CI-low hold rate to clear the average ask plus taker fee with n ≥ 100. This is the table that can actually clear a bucket.

Momentum test — does the prior candle's trajectory carry, flip, and stabilize?

Candle backtest — true hold rates vs the price the market charges

HOLD = leading side at the read minute finishes on the same side of the strike (strike = prior 15m close, matching Strike15 grading). CEILING = highest entry price (¢) that clears fees at the CI-low hold rate — the conservative maximum you could ever pay for that bucket. MKT PAID = average price actually charged when you traded the bucket (from your trade log). A bucket is only worth anything if MKT PAID sits below CEILING with real sample on both sides.