Skip to main content

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 from OrderFilled 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 with market_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 with market_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_id to markets.id before interpreting price or size units.
  • Use price for the stored outcome’s execution price.
  • Use normalized_price to create one outcome-0 price series for prediction markets.
  • Do not treat perpetual normalized_price as a probability.
  • Do not sum the cash-flow fields as signed P&L; both currently store positive gross/notional values.
See Tables & Schemas for access-specific database types and query behavior.