Skip to main content
The prediction_markets.ohlcv_hourly table provides hourly candles per market across Polymarket and Kalshi, including Polymarket Combos (multi-leg parlays, keyed by the combo condition ID). Grain: one row per (venue, hour, market_id), the same grain as prediction_markets.markets. Prices are the probability of Yes in [0, 1]; the probability of No is 1 - close. Volumes cover the whole market with each trade counted once. Hours without trades are carried forward as a flat bar with zero volume and flagged via is_forward_filled. Market names and attributes are not repeated here; join prediction_markets.markets on (venue, market_id). category is carried because nearly every query filters on it. Settlement. A settled market’s last candle closes at its settlement value: close pins to the Yes-side payout (1/0; 0.5 for a void; the exact fraction for scalar settlements), high/low widen to include it, open keeps the last traded price. Forward-fill stops at that candle on both venues; candles with real trades after settlement keep their actual prices.
Polymarket collapses to one Yes-side row per market-hour. When an hour has only a No-side bar, the Yes bar is derived as 1 - P(No) with high and low swapped. Combo volume comes from the Yes bar only, since every combo match has its taker fill on the Yes token.

Table Schema

Table sample

Query performance

block_month is the partition key. Always include a block_month or hour filter.

Example queries