# Schema ## depth/kalshi_depth_.parquet One row per (snapshot, ticker, side, level). Snapshot cadence for this vintage, median snapshot interval measured at build time: 30.5 s before 2026-07-12; 43.0 s from 2026-07-12 onward (CAPTURE_STATS.json depth_cadence_s_measured). Every output file has the same physical schema and column order shown below. | column | type | meaning | |---|---|---| | timestamp | double | snapshot time, epoch seconds UTC | | ticker | string | Kalshi market ticker (family = prefix, e.g. KXMLBGAME) | | sport | string | capture label | | market_type | string | GAME / MATCH / FIGHT / SPREAD / TOTAL / F5TOTAL / GSPREAD | | line | double | line value for spread/total variants; null for moneyline and legacy rows captured before this field existed (the column is still physically present) | | side | string | 'bid' or 'ask' | | level | int16 | book level, 0 = best; **max 19 (20 levels/side cap)** | | price_c | int16 | price in cents (1-99) | | size | double | contracts at level. **Historical precision limit:** source depth captured through 2026-07-19 had already integer-truncated Kalshi fixed-point sizes; those fractional components are irrecoverable even though rebuilt files use float64. Captures after the recorder fix preserve fractions. | ## trades/kalshi_trades_.parquet One row per unique executed print (deduped by trade_id), filed under the UTC date of `created_time`. | column | type | meaning | |---|---|---| | created_time | string | EXCHANGE trade time (UTC ISO-8601) — use this for analysis | | trade_id | string | Kalshi unique print id | | ticker | string | market ticker | | price / no_price | int64 | YES / NO price in cents | | count | double | contracts traded; rebuilt from the raw JSON capture, so fractional fixed-point quantities are genuinely preserved (do not cast to integer) | | taker_side / taker_book_side / taker_outcome_side | string | aggressor labels | | is_block_trade | bool | block-trade flag | | game_id / game_state / score_diff | string | game context AT RETRIEVAL time, not event time ('' when absent; join to a score timeline at created_time for event-time analysis; no current lag distribution is asserted) | | capture_ts | double | when OUR recorder observed the print (epoch sec) | Joining prints to depth: match on ticker, align created_time to the enclosing snapshot timestamps. Snapshot cadence bounds the alignment precision — use the measured cadence for the regime you are joining in (depth_cadence_s_measured in CAPTURE_STATS.json for the full tape, or in manifest.json for a per-sport slice), not a nominal figure.