Our best Kalshi crypto paper strategy was a 20 second old price

Six weeks of paper results came from a 20 second old asking price. Rerun honestly, the rule loses 7 cents a trade. How to check your own paper engine.

For six weeks, the best result in our crypto paper tests was a rule that follows the perpetual futures price. When the perpetual moved, it bought the side of the fifteen minute Kalshi market the perpetual was pointing at. Over 6,639 paper trades it made 1.85 cents a trade after the taker fee, with the strongest statistics of anything we tested.

This week we found out why. The paper engine was pricing each trade at an asking price that was, on average, about twenty seconds old. Rerun against the price actually on offer at the moment of each decision, the same idea loses about seven cents a trade.

That is not a reason to give up on the idea. It is the single most useful thing we can tell anyone building a Kalshi bot, because it explains how a strategy can look good for weeks for no reason at all, and how to catch it before it costs real money.

What went wrong

The old engine checked Kalshi's prices on a timer and remembered the last asking price it saw. When the perpetual moved, the rule fired and recorded a fill at that remembered price. But a perpetual move is exactly the moment everyone else is repricing too. By the time an order would have reached the exchange, the ask had usually moved against us.

We took 250 recent paper trades of the old rule and matched each one to our own second by second record of the order book. The real ask at the moment of the decision was 3.92 cents worse than the price the paper engine used, on average. The median was 3 cents worse, and it was worse in 62 percent of trades. A 1.85 cent edge cannot survive a 3.92 cent error.

The honest rerun

On the first of October we seated a new paper lane with the same idea and one change: it takes the live asking price at the instant of the decision, only uses a perpetual quote less than eight seconds old, and counts a fill only when a real trade on the exchange confirms the price was there. After 570 fills it stands at minus 7.12 cents a trade. On the 469 fills confirmed by a trade printing through our price, it is minus 5.35 cents.

The idea may still have something in it. The perpetual does lead the fifteen minute market. But the lead is shorter than the time it takes us to act on it, and someone faster is collecting it.

It is the same gap every time

This is not the first time paper has flattered us, and the size of the flattery is remarkably consistent. Seven strategies have run on paper and then with real money. On the four with large samples on both sides, real money landed between 0.3 and 3.4 cents a contract below paper. The median gap across all seven is 2.7 cents.

StrategyPaper tradesPaperReal tradesReal moneyGap
Pair completion13,030+1.78¢480−1.66¢−3.44¢
Book A, the favourite maker5,692+1.71¢2,998−0.15¢−1.86¢
The favourite maker with the filter1,906+2.37¢1,459+2.07¢−0.30¢
Multi-asset favourite5,001+2.02¢96+0.77¢−1.25¢
XRP maker1,385+2.03¢199−0.64¢−2.67¢
NEAR maker3,149+3.08¢28−9.35¢−12.43¢
Resting offers49+10.12¢65−5.95¢−16.07¢

The two biggest gaps are on the smallest real samples, 28 and 65 trades, so read those as noise. The pattern in the rest is the point: a paper edge of two cents is roughly what you lose to stale prices and adverse selection before you have done anything wrong.

How to check your own paper engine

  1. Timestamp every quote you use. If the price your engine fills at is more than a second or two old at the moment of decision, your results are fiction.
  2. Use the websocket, not a timer. Kalshi streams every change. Polling every few seconds guarantees stale fills at exactly the moments that matter.
  3. Confirm fills with real trades. Count a paper fill only when a trade on the exchange prints at or through your price.
  4. Budget about three cents of decay. If your paper edge is under three cents a contract, assume it is zero until real money says otherwise.
  5. Replay a sample against a tick record. This check took an afternoon and saved us from taking a losing rule live.

Every number in this post comes from the lab's own paper engine and its own trading record on Kalshi. None of it is advice. The full list of what we have tested, on paper and with real money, is on the strategies page, and the rerun lane keeps recording, so if the picture changes, this page will say so.