Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dune.com/llms.txt

Use this file to discover all available pages before exploring further.

The prediction_markets.markets table is the cross-venue market dimension. Grain: one row per binary market (Polymarket condition_id or Kalshi ticker). Every row carries a venue column and uses venue-neutral column names so you can query both venues with a single statement.

Table Schema

ColumnTypeDescription
venueVARCHARVenue identifier (polymarket or kalshi)
market_idVARCHARUnique market identifier within a venue (Polymarket condition_id in 0x-hex, Kalshi ticker)
event_idVARCHARParent event grouping. NULL for standalone Polymarket markets; always populated for Kalshi
series_idVARCHARRecurring template identifier. Kalshi only; NULL on Polymarket
event_id_or_market_idVARCHARUniversal grouping key: event_id when present, otherwise market_id
yes_outcome_idVARCHARIdentifier of the Yes side (Polymarket token_id, Kalshi ticker)
no_outcome_idVARCHARIdentifier of the No side. NULL for Kalshi (No is implicit)
yes_outcome_nameVARCHARHuman-readable label of the Yes side
no_outcome_nameVARCHARHuman-readable label of the No side
questionVARCHARMarket question text
event_nameVARCHAREvent title. NULL for standalone Polymarket markets
categoryVARCHARUnified category. One of: sports, crypto, politics, finance, technology, culture, weather, world, health, other
category_nativeVARCHAROriginal upstream category value before normalization
linkVARCHARURL to the market on the venue’s web UI
statusVARCHARUnified lifecycle state (active, closed, settled)
is_resolvedBOOLEANTRUE when the market has a final outcome
is_mveBOOLEANTRUE when the market belongs to a multi-outcome event
is_parlayBOOLEANTRUE for Kalshi parlay markets. Filter is_parlay = FALSE for fair cross-venue comparisons
market_start_timeTIMESTAMPWhen the market opened for trading
market_end_timeTIMESTAMPWhen the market closes or expires
settlement_tsTIMESTAMPWhen the market was finalized. NULL until resolved
resolved_outcomeVARCHARResolution side: yes, no, void, or scalar. NULL while unresolved
settlement_value_usdDOUBLEPer-share payout at settlement. 1.0 for Yes, 0.0 for No, 0.5 for void, fractional for scalar
strike_typeVARCHARScalar/range market structure (Kalshi only). NULL for Polymarket
floor_strikeDOUBLELower strike bound for range markets (Kalshi only)
cap_strikeDOUBLEUpper strike bound for range markets (Kalshi only)
neg_riskBOOLEANPolymarket NegRisk flag. FALSE for Kalshi
source_updated_atTIMESTAMPWhen the upstream venue last refreshed this market record
_updated_atTIMESTAMPWhen this row was last written by the pipeline

Table sample

Example query

-- Active markets by category across both venues
SELECT
  venue,
  category,
  COUNT(*) AS active_markets
FROM prediction_markets.markets
WHERE status = 'active'
  AND is_parlay = FALSE
GROUP BY 1, 2
ORDER BY 3 DESC