Data Schemas
Overview
KacData Parquet schemas for Kalshi, and timestamp conventions.
KacData historical data is delivered as Apache Parquet files. Schema pages define the fields and row semantics of each downloaded file.
Available schemas
| Schema | Data type | Description | Use case |
|---|---|---|---|
| L2 | l2 | Order book snapshots and signed deltas, with synthesized start-of-day and end-of-day books | Order book replay and liquidity analysis |
| Trades | trades | Trades from the Kalshi trade channel | Price, volume and trade-flow analysis |
| Ticker | ticker | Best bid and ask, last price, volume and open interest | Top-of-book and market activity analysis |
| Lifecycle | lifecycle | Market and event lifecycle messages for every market | Market status, determination and settlement analysis |
Timestamps
All timestamps use UTC and microsecond precision (timestamp[us]).
timestampis the time supplied by Kalshi in the message (ts_ms, millisecond precision). It is null for messages that carry no source time, such as order book snapshots.local_timestampis when the KacData collector received the WebSocket message.
The difference between timestamp and local_timestamp represents delivery and processing latency.
File conventions
- Column names are Kalshi's field names in snake_case, without encoding suffixes such as
_dollarsand_fp. - Prices and sizes are stored as
decimal(18,4). Prices are in dollars (0 to 1); sizes are numbers of contracts. - L2 contains two event types in one schema. Fields that do not apply to a row's
event_typeare null. - Order book levels use Parquet list columns; index 0 is the best price.
- The row order of a file is the replay order. Do not re-sort by
timestamp.