← Use cases

Use case

Backtesting funding carry on Kalshi BTC and ETH perps since June 2026

All 470 settled funding payments per coin on Kalshi's BTC and ETH perps, summed by month and annualised, then set against Binance, Bybit and Hyperliquid on the same day.

Say you run a small funding-carry book: short the perp where funding runs rich, hedge the coin elsewhere, collect the payments. Kalshi’s BTC and ETH perps are a US-regulated venue you have not priced yet, and before you put money there you want the whole record of what they paid, not the last few days on a chart. Both started paying funding on 2026-06-03, every 8 hours, which made 470 payments each by 2026-11-07. (New to the actor? The step-by-step guide covers every input.)

The manual way, and what it costs

Kalshi publishes this history for free through its public API, and if you write code, one request per ticker gets it. What you get back is rates as text strings and timestamps you then line up yourself, with no conversion between Kalshi’s 8-hourly crypto schedule and the daily schedule of its stock and gold perps. For a single look at BTC, a short script is enough. The trouble starts when the backtest grows to every crypto perp, or adds the other venues: Hyperliquid pays hourly, Binance and Bybit every 4 or 8 hours depending on the coin.

The faster way

Kalshi Perps Funding Rate, Open Interest & Trades Scraper does the same reading once and hands back every row at once.

{
  "mode": "funding_history",
  "tickers": ["KXBTCPERP", "KXETHPERP"]
}

With no fromDate, history starts at each perp’s first payment. Our run on 2026-11-07 returned 940 rows, 470 per coin, from 20:00 UTC on 2026-06-03 to 05:00 UTC on 2026-11-07, in about 4 seconds. At $0.0005 a point that is $0.47.

What comes back

The newest BTC row from that run:

{
  "row_type": "funding",
  "ticker": "KXBTCPERP",
  "asset_class": "Crypto",
  "funding_time": "2026-11-07T05:00:00Z",
  "funding_rate": 0.0001489520956213,
  "funding_rate_8h": 0.0001489520956213,
  "funding_rate_annualised": 0.16310254470532348,
  "mark_price": 7.5816,
  "interval_hours": 8
}

funding_rate is per payment, 0.0149% here, and funding_rate_annualised is that rate times 1,095 payments a year: 16.3%. Kalshi’s docs describe the rate as built from the premium index, the amount the perp’s book sat above or below its underlying index. On the usual perp convention a positive rate means longs pay shorts.

Summed over all 470 payments, BTC funding came to 4.24% of notional in a little over five months: 250 payments positive, 3 negative and 217 exactly zero. The mean works out to 9.9% a year, but the months were uneven:

MonthBTC paymentsBTC annualisedETH annualised
2026-06 (from the 3rd)825.7%-5.3%
2026-07932.7%0.3%
2026-089311.8%-0.7%
2026-099010.3%-0.4%
2026-109318.2%3.7%
2026-11 (to the 7th)1911.5%8.0%

ETH is the opposite case. Its 470 payments summed to -0.0098%, effectively nothing: 371 were zero, 47 positive and 52 negative. On this record a short ETH perp on Kalshi collected effectively nothing from June to October, while BTC paid in every month and most in October.

What you’d do with it

Load the 940 rows into a dataframe, group by ticker and month, and sum funding_rate for the carry a held short would have collected; the table above is exactly that. Then check it against today’s other venues with a funding_spread run, which puts every venue’s current rate on the same annualised basis. On 2026-11-07 Kalshi’s BTC estimate was 18.1% annualised against Binance at 1.8%, Bybit at 4.4%, and Hyperliquid and Polymarket at 11.0%, so the row’s spread_vs_best read 16.3 points over Binance. ETH was 11.7% on Kalshi against 6.7% on Binance. That run returned 39 spread rows, about $0.12. To keep the record growing, schedule funding_history weekly with fromDate set to the last run.

Worth knowing

This is the funding leg only. It leaves out trading fees, the price of the hedge, and the price of the perp itself: KXBTCPERP’s mark went from 6.535 at the first payment to 7.5816 at the last, and a short would have lost that move unless it was hedged. The spread compares Kalshi’s estimate for the period in progress with the other venues’ current predicted rates, not a settled history on both sides. BTC’s 470 points are 8 hours apart except one 9-hour gap at the daylight-saving change, so count payments, not calendar days, when you annualise by hand. None of this is investment advice.


Run it yourself: How to run Kalshi Perps Funding Rate, Open Interest & Trades Scraper walks the whole thing step by step.

On the stock side of the same exchange, Kalshi stock perps: a daily open interest and funding tracker logs the 94 single-stock perps. If you also follow Kalshi’s event markets over time, the Kalshi & Polymarket Election Odds History Scraper returns a market’s whole odds history.

Last updated 2026-11-07