Shape
A fill is one normalized trade execution. It links to a market and one of that market’s outcomes.Coverage by venue and product
Counts as of 2026-08-24 17:59 UTC. Coverage starts use the earliest source
timestamp. Prediction and perpetual/margin rows are separated using the linked market’s market_type.
Fills are indexed continuously, so these counts change throughout the day. Query the data warehouse for current values:
Polymarket prediction-market trades
Source
These fills come fromOrderFilled events emitted on Polygon by the supported CTF Exchange and Neg Risk Exchange contracts, including their V2 versions.
Legacy executions can emit two related OrderFilled logs. Probalytics retains the maker-focused representation instead of publishing both as separate trades.
Field mapping
Outcome index
0 is the reverse-alphabetically first normalized market outcome. For a typical Yes/No market, Yes is index 0 and No is index 1.
Polymarket perpetual trades
Polymarket perpetual trades come from the perpetual product feed and link to markets withmarket_type = 'PERPETUAL'.
Participant IDs are
null, and fee is 0 because the current source does not expose those values.
Kalshi prediction-market trades
Source
These fills come from Kalshi trade records. Each record contains the market ticker, Yes and No prices, traded count, taker side, trade ID, and execution time.Field mapping
The source’s Yes/No taker side selects which outcome was bought. It does not map to the stored BUY/SELL enum, so all current Kalshi prediction fills are stored as
BUY.
Participant IDs are null, and fee is 0 because the current trade source does not expose those values.
Kalshi KXMVE trades are not included in fills because their markets are not available to this normalization path.
Kalshi margin trades
Kalshi margin trades come from the margin product feed and link to markets withmarket_type = 'PERPETUAL'.
Participant IDs are
null, and fee is 0 because the current source does not expose those values.
Reading fills across products
- Join
market_idtomarkets.idbefore interpreting price or size units. - Use
pricefor the stored outcome’s execution price. - Use
normalized_priceto create one outcome-0 price series for prediction markets. - Do not treat perpetual
normalized_priceas a probability. - Do not sum the cash-flow fields as signed P&L; both currently store positive gross/notional values.