Test based on historical data, on prediction markets
Where the history comes from
In early access. No third-party price dataset: a backtest replays Kalshi’s stored one-minute candles, or the candles you send with your markets, and grades every fill on the market’s result, as Kalshi settled it or as you send it. A stored run reads game winners, spreads, and totals in the seven leagues from January 2025 through September 28, 2026.
- 01
Winners, spreads, and totals
Kalshi game winners, spreads, and totals in the NFL, college football, MLB, the NBA, the WNBA, the NHL and the Premier League. A signed-in run reads the stored one-minute candles for every league the rule names. It decides four hours before close, which is the minute the stored tape keeps. Sports one-minute candles in storage run from January 2025 through September 28, 2026. Politics and crypto are not in this fill.
- 02
One-minute candles
Each market's one-minute candles, Kalshi's own or the ones you send with your markets, never Kalshi's order book. A decision fills the whole size at the closing ask of the last one-minute candle that closed at or before it, and only if that candle closed within 3 minutes of the decision. Kalshi markets only: depth and other venues' prices are not replayed.
- 03
Graded on settlement
Each fill is won, lost or void on the market's result. A void, a market whose result is neither yes nor no, counts as no profit and no loss, and is charged no fee. A run read from Kalshi takes only markets that settled yes or no, so it holds no voids. Markets you send can include one.
How a backtest runs
- 01
Describe the rule
As a JSON spec (back the favourite or the underdog, or take every yes or no side), or as a file of your own probabilities, one row per market at one size (a predictions CSV).
- 02
Replay it on the prices known then
At each decision point the rule sees only the one-minute candles that had closed by then, and fills at the closing ask of the latest one. A rule decides a set number of minutes before Kalshi's close time, which Kalshi moves when the game ends, so that moment is not tip-off; your own probabilities carry their own decision times. A decision at or after the market's settlement time is skipped. Backtests price the spread and Kalshi's estimated taker fee. Paper trades pay no fee. The eval board's grades subtract the fee Kalshi would charge.
- 03
Read the interval, not the win rate
The answer counts wins and losses over the games the rule touched, and gives the Brier score when you send your own probabilities (a rule has none). From 20 graded games, games that settled yes or no, it gives the edge per contract with a 95% interval over those games. A stored run can pass 20 games. An interval that crosses zero is not an edge, however good the win rate looks.
- 04
Run it forward
Trade the same picks with a paper account in the sandbox, from the CLI, the MCP server or the website, and the eval board grades each one as it settles. The record goes on the public board only if you ask.
What an answer looks like
Here is the shape of a result for a rule that does not work yet. The mean edge is positive, which is where most people stop reading; the interval crosses zero, which is where the answer is. Rather than tune the rule until the number looks better, you will be able to have Arena run it forward on paper so the record becomes real.
- Every game the rule filled is in the count, voids included. A run read from Kalshi has none: it takes only markets that settled yes or no.
- Fills at the closing ask of the last one-minute candle that closed at or before the decision, and only if that candle closed within 3 minutes of it, with the spread and Kalshi’s estimated taker fee priced in.
- If you run it forward, the ledger stays private unless you ask for the public board, where it would live under the rule’s name.
fade NBA favourites when the line moves 3¢ or more in the last hour before tip-off
Illustrative sample, not a real backtest · 640 settled games
- Settled games
- 640
- 56% won
- Edge per contract
- +1.8¢
- mean, after fees
- 95% interval
- −2.0¢ to +5.6¢
- crosses zero
- Verdict
- Not an edge yet
- run it forward
Forward ledger
+$6.20 · 24 games · paper