block_month | DATE | First day of the UTC month of hour (partition key) |
hour | TIMESTAMP | UTC hour bucket for the candle |
market_id | VARCHAR | Kalshi market ticker. Joins kalshi.market_details on market_id |
market_name | VARCHAR | Market question text |
outcome | VARCHAR | Always Yes. Candles are built on the Yes price; the No price is 1 - Yes |
yes_outcome_name | VARCHAR | Human-readable label for the Yes side, such as a team, candidate or price range. Falls back to a label built from the market’s strike, then to Yes. Use this as the outcome label; outcome is only the side flag |
category | VARCHAR | Unified category (sports, crypto, politics, finance, technology, culture, weather, world, health, other, mixed) as written with the bar. kalshi.market_details carries the current value |
open | DOUBLE | First trade price in the hour. Equal to the carried close on forward-filled hours. On the settlement bar it keeps the last traded price; settlement pins only the close |
high | DOUBLE | Highest trade price in the hour. Equal to the carried close on forward-filled hours. On the settlement bar, widened to include the settled payout |
low | DOUBLE | Lowest trade price in the hour. Equal to the carried close on forward-filled hours. On the settlement bar, widened to include the settled payout |
close | DOUBLE | Last trade price in the hour, carried forward through no-trade hours. On the settlement bar, pinned to the settled payout per contract (1 for yes, 0 for no, the scalar payout otherwise); bars from real trades after settlement keep their actual close |
vwap | DOUBLE | Volume-weighted average price. NULL for forward-filled hours |
volume_contracts | DOUBLE | Contracts traded in the hour, counting each fill once. Zero for forward-filled hours |
volume_usd | DOUBLE | USD traded in the hour. Zero for forward-filled hours |
trade_count | BIGINT | Number of trades in the hour. Zero for forward-filled hours |
market_end_time | TIMESTAMP | End of the candle series: the market’s settlement (or determination) time once known, otherwise its expected expiration time. Trades after an unsettled market’s expected expiration extend the series past it |
expected_expiration_time | TIMESTAMP | When the outcome is expected to be known, from kalshi.market_details. Bounds the candle series until the market resolves |
market_outcome | VARCHAR | The market’s state at this hour (point-in-time): unresolved until the market has settled and this bar is at or after the settlement hour, then the settled result from kalshi.market_details from that bar onward. Reaching the expected expiration does not resolve a market |
event_market_name | VARCHAR | Parent event title, falling back to the market title |
is_forward_filled | BOOLEAN | TRUE when the bar has no trades and was carried forward |
_updated_at | TIMESTAMP | When this row was last written by the pipeline |