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). Candles are built on the Yes price (the No price is 1 - Yes). Hours without trades are a flat bar at the carried close with volume and trade count set to zero, flagged via is_forward_filled. Only markets with at least one fill have candles. Settlement. Once a market settles, the bar at its settlement hour is pinned to the settled payout per contract: close becomes 1 for yes, 0 for no, or the scalar payout; high/low widen to include it; open keeps the last traded price. Forward-fill stops at that bar, while real trades after settlement keep their actual prices. Until a market settles, its candle series runs to its expected_expiration_time without resolving it, and later trades extend it.
market_outcome is point-in-time per bar: unresolved until the market has settled and the bar is at or after the settlement hour, then the settled result from that bar onward. Historical bars are never relabeled, and the other metadata columns keep the values they were written with. kalshi.market_details is 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