venue | VARCHAR | Venue identifier (polymarket or kalshi) |
market_id | VARCHAR | Market identifier, unique within a venue: Polymarket condition_id in 0x-hex, the combo condition ID for Polymarket Combos, Kalshi ticker. Joins prediction_markets.trades and prediction_markets.ohlcv_hourly on (venue, market_id) |
event_id | VARCHAR | Parent event grouping related markets. Always populated on Kalshi; on Polymarket only for markets that belong to a multi-outcome (neg-risk) event. NULL for Combos |
series_id | VARCHAR | Recurring series the market was created from. Kalshi only; NULL on Polymarket, which has no series concept |
yes_outcome_id | VARCHAR | Identifier of the Yes side: the token at outcome_index = 0 on Polymarket, the market itself on Kalshi, where both sides trade on one instrument |
no_outcome_id | VARCHAR | Identifier of the No side: the token at outcome_index = 1 on Polymarket. NULL on Kalshi |
yes_outcome_name | VARCHAR | Label of the Yes side as the venue shows it, usually Yes, Up or Over. For markets without a natural Yes it is whichever side the venue listed first |
no_outcome_name | VARCHAR | Label of the No side as the venue shows it |
question | VARCHAR | The market question. For Combos the generated combo name, NULL until every leg is labeled |
event_name | VARCHAR | Title of the parent event. NULL for standalone Polymarket markets and Combos |
category | VARCHAR | Unified topic category: sports, crypto, politics, finance, technology, culture, weather, world, health, other. Parlays take the category of their legs, or mixed when the legs span several categories |
category_native | VARCHAR | The venue’s own classification: Polymarket’s comma-separated tags, Kalshi’s single coarse category. NULL for Polymarket Combos |
link | VARCHAR | URL of the market on the venue’s website. NULL for parlays on both venues, which have no public page |
status | VARCHAR | Lifecycle state: active while open for trading (including Kalshi markets not yet opened), closed when trading has stopped or the venue delisted the market without a result, settled once resolved |
is_resolved | BOOLEAN | TRUE once the market has a final result. A resolved market is always settled; a Kalshi market can be settled without a published result, in which case this is FALSE |
is_parlay | BOOLEAN | TRUE for multi-leg parlays: Kalshi parlays and Polymarket Combos. Filter is_parlay = FALSE for like-for-like single-market comparisons |
leg_count | INTEGER | Number of legs in a parlay. NULL for single markets |
legs | VARCHAR | The parlay’s legs as a JSON array. On Kalshi each leg names its event, market and required side; on Polymarket each leg is a question: outcome label. NULL for single markets |
is_mutually_exclusive_event | BOOLEAN | TRUE when at most one market in the parent event can resolve Yes, such as a multi-candidate election (Kalshi mutually exclusive events, Polymarket neg-risk events). FALSE when unknown |
frequency | VARCHAR | How often the market’s series recurs: fifteen_min, hourly, daily, weekly, monthly, quarterly, annual, one_off or custom. Kalshi only; NULL on Polymarket. Useful for excluding high-frequency series from cross-venue aggregates |
market_start_time | TIMESTAMP | When trading opened. For Combos, when the combo was registered on-chain |
market_end_time | TIMESTAMP | Scheduled close of trading. On Kalshi this reflects later changes to the close date. On Polymarket it is the venue’s published end date, which is often inaccurate; use settlement_ts and status for the actual lifecycle. NULL for Combos |
settlement_ts | TIMESTAMP | When the market settled. NULL until resolved |
resolved_outcome | VARCHAR | How the market resolved: yes, no, void for a refund, or scalar for a fractional payout (Kalshi scalar markets, Polymarket Combos with a voided leg). NULL while unresolved |
settlement_value_usd | DOUBLE | Payout per Yes contract at settlement: 1.0 when Yes won, 0.0 when No won, 0.5 for a void, a fraction for scalar settlements. NULL while unresolved |
strike_type | VARCHAR | Structure of a Kalshi threshold or range market (greater, less, between, and so on). NULL on Polymarket |
floor_strike | DOUBLE | Lower strike of a Kalshi threshold or range market. NULL on Polymarket |
cap_strike | DOUBLE | Upper strike of a Kalshi range market. NULL on Polymarket |
rules | VARCHAR | Resolution rules as published by the venue. NULL for Polymarket Combos, whose outcome follows from their legs |
source_updated_at | TIMESTAMP | When the market record last changed at the venue; for Polymarket Combos, when Dune last recomputed the combo from its legs. Safe to use as a sync watermark |
_updated_at | TIMESTAMP | When this row was last written by the pipeline. Unchanged rows keep their stamp |