What this market is, and what these numbers do and do not mean
Kalshi series KXBTC15M — “Bitcoin price up down”. One market every
15 minutes, 96 a day.
THE CONTRACT
You are betting on whether Bitcoin finishes a 15-minute window above where it started.
Both ends are measured on CF Benchmarks' BRTI — an order-book weighted index over
Bitstamp, Coinbase, Kraken, Gemini, LMAX Digital, Bullish and Crypto.com. No single exchange is
the index, and the last trade on Coinbase is not what settles this market.
Neither end is a single tick. Both are 60-second averages:
UP pays $1 iff avg(BRTI, last 60s before close) ≥ avg(BRTI, last 60s before open)
The right-hand side is the target, already known at the open — it is just the previous
window's settlement value. A tie pays UP. The taker fee is 7% × P × (1−P) rounded up
to the cent: 1.75c a contract at 50c.
“IF THE MODEL SAYS 52 AND THE MARKET SAYS 49, WHY ISN'T THAT FREE MONEY?”
Because it is almost always the model that is wrong, not the market. This is the most
important thing on this page, so it is worth being blunt about it.
The market mid is the output of a lot of people pricing the same contract, several of them
with better volatility estimates, faster index feeds and lower latency than this app has. When a
3c gap appears, the overwhelmingly likely explanations are, in order:
1. The volatility estimate is stale. Fair value is Φ(z) and z divides by σ.
A σ that is 20% too low near the money moves fair by several cents on its own. The EWMA here
reacts to the last few minutes; it cannot know about the news release in ninety seconds that the
market is already pricing.
2. The index is a step behind. Even on the real BRTI relay this app sees a 1 Hz print; the
order flow has already moved.
3. The market knows something the model has no input for — a pending print, a large
resting order about to be pulled, cross-venue flow.
4. The fee eats it. 1.75c a contract at mid-range prices is larger than most of these gaps
before you even start.
And this model has not been calibrated against settled outcomes. Nobody has checked,
over thousands of windows, whether things it calls 52c actually happen 52% of the time. Until
that has been done, the gap is a research signal, not an edge.
So what is it good for? Two things. It tells you when the market has moved and the
index has not, which is a different and more interesting event than either alone. And run
backwards it gives IV/RV, which needs no view on direction at all.
WHY THE AVERAGING IS THE WHOLE MODEL
An average of the last minute wobbles less than the last tick. For a diffusion with
per-second volatility σ, the variance still live in the settlement value at τ seconds out is
σ²·(τ − 40), not σ²·τ — averaging hands you 40 seconds of certainty for
free. Inside the final minute it goes further, because part of the settlement average has already
printed: with m of the 60 ticks banked, Var ∝ ((60−m)/60)² · τ,
collapsing roughly like τ³. That is why prices snap to 0 or 100 so hard at the end, and why a $30
spike in the last fifteen seconds barely moves the settlement value. The LOCKED tile
tracks exactly this, using Kalshi's own tick count.
WHAT WAS TESTED, AND WHAT IT FOUND (2026-10-07)
Every setup on this screen was run against 28,037 settled windows (Feb 1 –
Oct 7) before it was put here, with the rules written down in advance
(kalshi_sr/setups/registry.py, 17 of them) so the result could not be tuned
after the fact. All numbers are cents per contract, net of the taker fee, entering at the
ask. The last 18 days were data no earlier analysis had ever loaded — the cleanest
test, and the one that counts.
| Range fade | Buy DOWN when BTC rallies into a zone, UP when it falls into one. Loses ~2.4¢, significantly, in every period and almost every month. Scalping it with a take-profit made it worse (−5 to −6¢) even though the take-profit hit 73% of the time: many small wins, a few full-size losses. |
| VWAP | Fading a 2σ stretch: +0.1¢ (no edge). Following a cross: −0.0¢ (no edge). |
| Tug of war | The one real effect. The market under-reacts to momentum and Kalshi flow — positive and significant in Feb–May, Jun–Sep and the fresh data separately. But it is worth ~0.6–1.0¢, and crossing the spread costs ~2¢, so following it loses ~1.5¢. Its best corner (strong tug, buy the favourite at 80–97¢, late in the window) is break-even at best: −0.8¢ and −1.0¢ out of sample. |
| Late click | Filling a few seconds late instead of at the quoted ask turned every rule into −6 to −12¢. Speed matters more than any setup here. |
Why scalping cannot rescue an entry: a fairly priced contract's expected value does
not change with when you exit — a take-profit only trades frequent small wins for rare
large losses. Full write-up: kalshi_sr/docs/setups_verdict.md.
THE NEW PANELS
| TUG OF WAR | (tanh(momentum) + flow) / 2. Momentum = BTC's move over the last 3 minutes in units of its own volatility; flow = Kalshi volume signed by whether each minute's last trade ticked up or down. The dashed marks are ±0.5. ENTER lights up when the tug is pinned past ±0.85 with the favourite at 80–97¢ in minutes 7–13. |
| SETUPS | Each tested rule, live: amber when it would fire right now and on which side, and next to it the number it measured — read from the research output files, never typed in. LOSES = the interval is entirely below zero; NO EDGE = it straddles zero. |
| S/R zones | HTF (B): 15m / 1h / 4h swing points plus yesterday's high and low, 2+ touches, drawn as bands. Intraday (A): 1m / 5m swings, 3+ touches, thin lines, off by default. Only the 3 nearest each way are drawn; "next resistance / support" says how far. |
| Trend lines | Through the last two falling swing highs and the last two rising swing lows. A drawing aid. |
| VWAP | Anchored at 00:00 UTC on Coinbase, with ±2σ volume-weighted bands. |
| REPLAY | Step back through settled windows (◀ ▶ or the arrow keys): BTC, the target, the settlement, and the UP price minute by minute underneath. |
| THEME | Header button: TERM (default) or CLEAN. Remembered per browser. |
THE COLOUR KEY
| mint | UP / good / the maker side that won. The house colour. UP prices, bid depth, the 60-second average line, a positive edge, the mint half of the settlement density. |
| clay rose | DOWN. Deliberately quieter than the mint so a falling market does not shout. DOWN prices, ask depth, the losing half of the density. |
| amber | The target — the number this window has to beat. Also the dashed target line, the shaded last 60 seconds, the LOCKED meter and EMA 9. |
| violet | The model, and only the model: MODEL FAIR, MODEL − MARKET, the window-open marker, EMA 21 and Bollinger. Violet never means "good" — see below. |
| near-white | The index itself — BRTI, the thing that settles. The brightest line on the chart because it is the only one that decides anything. |
| grey | Structure, labels, and the previous window. Anything the app is unsure about is grey rather than guessed. |
MODEL − MARKET, AND WHY IT IS NOT GREEN
MODEL FAIR is what this app's own maths says UP is worth right now.
MODEL − MARKET is that number minus what you would actually pay to cross the
spread, after Kalshi's taker fee. Its sub-line reads e.g. DOWN at 58.0c +1c fee
· model 62.5c: the side with the better number, the price you would pay, the fee
on top, and what the model thinks that side is worth.
It is rendered in the model's violet and never in the mint that means "good"
elsewhere on this page, because a positive number there is not a green light. It
has been measured: over 2,471 settled windows the market's own quote beat this model
on Brier score (0.1584 vs 0.1634), and taking the model's side whenever it disagreed
by more than 3c lost 0.46c a contract after fees. When the model and the market
disagree, the overwhelming favourite is that the model's volatility estimate is stale,
not that the market is wrong. Read it as "the model and the market currently differ by
this much", which is a fact, not as "there is this much edge", which is not.
THE CHART
| FIXED vs 1m…1d | FIXED is the 15-minute contract window on the real settlement index — the only view where the cone, the density and the model mean anything, because they are about this contract. Every other timeframe is an ordinary Coinbase BTC-USD chart for context, with EMA / Bollinger / RSI / MACD available under INDICATORS. The header always names which one you are looking at. |
| FAIR LADDER | the rail's second tab: what UP would be worth at each BTC level, now and at each later time to close. The row on the target is always exactly 50c, because at the target the contract is a coin flip whatever the clock says. |
| bright line | BRTI itself, relayed by Kalshi at 1 Hz — the thing that settles. |
| mint line | the trailing 60-second mean: what this window would settle at if it ended on this tick. |
| amber dashed | the target. Above it UP wins, below it DOWN wins. |
| the cone | the 50 / 80 / 95% quantiles of where the index can go before the close, sized by realised volatility and by how much averaging still has to do. It narrows to exactly the settlement distribution at the right edge. The outer bands are allowed off screen — the scale follows the price, not the cone. |
| right-edge curve | that settlement distribution seen side-on, split at the target. The mint area is the fair probability — the picture and the number are one object. |
| dotted levels | the heaviest spot wall each side that the index could still reach before this close. The SPOT DOM panel says how much is there and on which exchange. |
| amber strip | the last 60 seconds: the averaging minute that decides it. |
| grey path, left | the previous window. Its own last minute is where this window's target came from. |
SPOT DOM
BRTI is computed from resting bids and offers on its constituent exchanges, so the spot books
are not context for the settlement price — they are the raw material of it. The ladder aggregates
Coinbase, Kraken, Bitstamp and Gemini into price rungs and keeps them split by venue,
because that split matters: size that is one exchange is one resting order that can be pulled in
a second, while the same size spread across four is a level the whole market is defending.
CUM is the running total between the mid and that rung — how much has to trade for the
index to get from here to there. Rung height scales with σ, so the ladder always covers roughly
the reachable range: about $25 steps early in a window, $2 steps in the last minute. Distances are
shown in σ for the same reason — $40 away is a wall with 30 seconds left and noise with twelve
minutes left.
All seven constituents' public books (Coinbase, Kraken, Bitstamp, Gemini, Crypto.com, Bullish,
LMAX), refreshed every few seconds. Nothing here reproduces CF Benchmarks' real weighting, and
walls can be pulled at any moment.
THE TILES
| Z | standard deviations between the expected settlement value and the target. Fair probability is Φ(z); everything else is commentary. |
| MOVE NEEDED | dollars the index must travel now to put the expected settlement value on the target. It grows inside the last minute, because only the unprinted ticks can still respond. |
| LOCKED | share of the settlement average already printed, and the effective seconds of variance left. |
| WALL IN PLAY | the heaviest spot wall within 1.5σ, either side. |
| SPOT BAND ±1σ | total resting size within one sigma either way, and its imbalance — the “can it even get there” number. |
| FLOW 60s | size-weighted taker imbalance on Kalshi: who is crossing the spread, and which way. |
WHAT THIS IS NOT
It is not advice, not a signal service, and not a backtested strategy. It is a read-only
instrument panel: it cannot place an order, and there is no order placement anywhere in the code.
When BRTI is unreachable it falls back to a weighted exchange blend, says BLEND on
screen and warns in a banner — a fair value computed off a blend is a different claim from one
computed off the settlement index. Independent tool, not affiliated with Kalshi or CF
Benchmarks.