Skip to main content
The kalshi.ohlcv_hourly table provides hourly OHLCV (Open-High-Low-Close-Volume) candles per Kalshi market. Grain: one row per (hour, market_id, outcome). Kalshi candles are built on the Yes side (No can be derived as 1 - Yes). Hours without trades are a flat bar at the carried close (volumes zeroed) and are flagged via is_forward_filled. A settled series pins at its settlement-hour bar — the actual settlement time, clamped to the scheduled expiration; most Kalshi markets settle well before expiration. Settlement lands on that bar as the hour’s final tick: close pins to the 1/0 result, high/low widen to include it, open keeps the last traded price. Void and scalar results are not pinned. The spine keeps running to the scheduled expiration: forward-filled bars after the settlement hour are flat at the settled value, and real post-settlement trade bars keep their actual OHLC — mirroring polymarket_polygon.ohlcv_hourly.
market_outcome is point-in-time per bar: unresolved strictly before the settlement hour, the settled result from that bar onward. Bars are relabeled at most once, on the first daily build after the settlement is delivered; historical bars do not get retroactively relabeled to the final result. kalshi.market_details stays the authoritative source for a market’s current state.

Table Schema

Table sample

Query performance

block_month is the partition key. Always include a block_month or hour filter for time-series queries.

Example query