# Kalshi Combo (Multivariate) Archive: sampled trade prints, combo definitions and outcomes: schema ### kalshi/trades/trades_YYYY-MM-DD.parquet One row per CAPTURED combo trade print (a small SAMPLE: see COVERAGE.md). Day = UTC date of Kalshi's `created_time`. | column | type | meaning | |---|---|---| | trade_id | string | Kalshi trade id (unique) | | ticker | string | combo market ticker (join to combos/legs) | | series | string | e.g. KXMVECROSSCATEGORY | | created_time | timestamp[us, UTC] | exchange time of the trade | | count | float64 | contracts (fractional) | | yes_price, no_price | float64 | dollars 0-1 (yes + no = 1) | | taker_side | string | yes / no | | captured_at | timestamp[us, UTC] | provenance only | | captured_clock_fault | bool | captured_at earlier than created_time (2026-09-29/30 rollback) | Kalshi's `taker_book_side` / `taker_outcome_side` duplicated `taker_side` on every row and `is_block_trade` was always false; they are not shipped. ### kalshi/combos.parquet One row per combo with at least one captured print in THIS archive; captured_* count only this archive's prints. | column | meaning | |---|---| | ticker, event_ticker, collection_ticker, series, title | identity | | n_legs, n_no_legs, same_event_legs | leg structure | | created_time, open_time, close_time, expiration_time | Kalshi times | | first_seen_at | when our recorder registered the combo: normally at its first captured print, later if that fetch failed (provenance) | | first_seen_clock_fault | first_seen_at earlier than the combo's created_time or its first captured print (the 2026-09-29/30 recorder clock rollback) | | snap_* | ONE top-of-book snapshot fetched at registration (status, yes bid/ask and sizes, last price, volume, open interest; timing in COVERAGE.md); `snap_yes_ask` 1.0 with size 0 = no offer | | price_level_structure | Kalshi tick regime | | captured_prints, captured_contracts | what this archive's sample holds for the combo | | final_status, result, settlement_value, settlement_ts, final_volume, outcome_fetched_at | the market's state when we read it (`final_volume` = Kalshi's total volume). `result` `scalar` = settled at a fractional value (see settlement_value). An open market shows final_status `active` and no result; a market we could not read has no final status | ### kalshi/legs.parquet One row per (combo, leg): ticker, leg_index, n_legs, leg_event_ticker, leg_market_ticker, leg_side (yes/no), leg_label (from Kalshi's selection text; empty rather than guessed if it did not align), leg_final_status, leg_result, leg_settlement_value (the leg market's state when we read it). ### kalshi/collections/collections_YYYY-MM-DD.parquet Daily snapshot of Kalshi's multivariate collections (first 500 only: see COVERAGE.md). Columns: snapshot_day, snapshot_captured_at, collection_ticker, series_ticker, title, open_date, close_date, size_min / size_max (the allowed number of legs), is_ordered / is_all_yes / is_single_market_per_event (Kalshi's combination rules, as returned), n_associated_events (events in the collection).