How it works

Sardine tells you, for a live Kalshi crypto contract, how often contracts in this exact situation (this far from the strike, this much time left) have actually settled YES, and whether Kalshi's price is above or below that once the fee is counted.

Everything on this page is an input to that sentence. The Live page is the output.

How the number is built

01 — RECORD

Every settled Kalshi crypto window since May, with the exchange's own settlement price. And since September, every second of every live contract — both sides of the book, depth, last trade. Kalshi's public API only publishes one-minute history, so a second that passes un-recorded can't be recovered from them afterwards.

02 — BUCKET

Each window is filed by how far price sat from the target, scaled by volatility, and how much time was left. A 0.1% move means something different with 2 minutes left than with 15.

03 — COUNT

For a live contract we find the matching bucket and report how often those settled YES, with the sample size and a confidence interval. No model, no forecast — and nothing at all when there's no match.

What we don't claim

Most tools in this category promise profit. Here is exactly where this one stands, so you can decide what it's worth.

  • We are not better than the price. Kalshi's quote predicts settlement slightly better than our count does. We measured it and say so.
  • A gap is not an edge. On most boards, contracts priced away from their history have not gone on to pay. Each board says which it is.
  • The fee usually decides it. At 50¢ Kalshi's fee is 1.75 points while the market is typically within 1 point of correct — so coin-flip contracts are the hardest part of the board for anyone.
  • We refuse to answer outside the range we have data for, rather than extrapolating a confident-looking number.

Coverage

Accuracy in the table below is the largest miss in any History bucket holding 200 or more settled windows, re-measured against the table we are serving every half hour. You can check it yourself: open the record, read the miss column, take the biggest number. It describes how well the published figure has matched over every window we hold, including the ones the table was built from — so it is a description, not a forecast test.

A market is served only if its out-of-sample calibration error is inside the limit we set before looking. A market that misses it is held — the tables exist and you can read them below, but no contract on it appears anywhere on the Live page. ETH hourly and XRP 15 min are held today; showing their numbers would mean publishing a count we know is worse than our own threshold.

The full tables

One row per distance bucket, one column per time-to-expiry bucket. The cell is how often those windows settled YES, and the count behind it. This is the one page where sigma, Wilson intervals, split-half and calibration error belong.

Download CSV
Distance from target (sigma)
How far spot sat from the strike at that moment, divided by the volatility estimate for the remaining time. It is what makes a 0.1% move with 2 minutes left comparable to a 0.4% move with 15.
Wilson interval
The confidence interval on a settlement frequency. Used rather than the textbook normal interval because it behaves near 0% and 100%, which is exactly where these cells live.
Strike-rows
One row per strike per window. Larger than the window count, because a single window has many strikes. The headline sample size uses independent windows, not strike-rows.
Calibration error
Worst out-of-sample gap between what the table said and what happened. It is also the threshold the verdict uses: a price has to be further from history than this before we call it priced above or below.
Split-half
The table is rebuilt on each calendar half of the data separately. If the two halves disagree in sign, the result is treated as unstable.

Privacy

No accounts, no cookies, no third-party scripts, nothing sold. What Sardine logs, in full — it is a short page and it is specific.