kalshi.open_interest_hourly table provides hourly open interest and traded volume per Kalshi single market. Grain: one row per (hour, market_id), with a row for every hour from the market’s first open contract to its settlement. An unsettled market runs to its expected expiration. Open interest is a level at the end of the hour; volume is the flow within it. The layout matches polymarket_polygon.open_interest_hourly and hip4_hyperliquid.open_interest_hourly.
Open interest comes from the snapshots on Kalshi’s live ticker stream. It is not rebuilt from trades. An hour with no update carries the last published value. Coverage starts on May 11, 2026, when the stream came online, so there is no earlier history. Every Kalshi contract has one Yes holder and one No holder, so the two sides are always equal. As a result, summing market_oi_yes_contracts across markets gives the same total as the example query.
Every row is the state at the end of its hour. A settled market has no open interest, so the settlement hour reads zero and is the market’s last row. The latest hours show up once Kalshi’s settlements through those hours are recorded, so the table runs a little behind real time.
Parlays are not included, so totals cover single markets only. A market nobody has ever held has no rows.
kalshi.ohlcv_hourly.
Table Schema
Table sample
Query performance
block_month is the partition key. Always include a block_month or hour filter.