Documentation Index
Fetch the complete documentation index at: https://docs.openpx.trade/llms.txt
Use this file to discover all available pages before exploring further.
Coverage
| Exchange | Sourced | Synthetic | Omitted |
|---|---|---|---|
| kalshi | 2 | 3 | 0 |
| polymarket | 5 | 0 | 0 |
Synthetic — computed by OpenPX, not present upstream.
Omitted — upstream does not expose this concept.
Field crosswalk
| Unified field | Type | kalshi source | polymarket source | Transform | Notes |
|---|---|---|---|---|---|
market_ticker | string | MarketPosition.ticker (string) | Position.slug (string) | direct | kalshi: Kalshi market ticker (e.g. KXPRESPARTYWIN-26-D). Same string callers pass to fetch_markets. polymarket: Market slug — matches the unified Market.ticker semantics on Polymarket. The on-chain conditionId is reachable but is the internal lookup id, not the user-facing identifier; we anchor on slug so callers can round-trip the value through fetch_markets. |
outcome | string | computed — sign(MarketPosition.position_fp) → {"Yes" if ≥0, else "No"} | Position.outcome (string) | synthetic / direct | kalshi: Kalshi positions are signed: positive position_fp is YES contracts, negative is NO. The unified outcome is the re-canonicalized title-case label. polymarket: Free-form outcome label as published by Polymarket — typically "Yes"/"No" on binary markets, raw category labels on categorical/neg-risk markets. |
size | number (double) | MarketPosition.position_fp (FixedPointCount) | Position.size (number) | abs_value / direct | kalshi: Absolute value of the signed position_fp (FixedPointCount string). Sign is consumed by the outcome mapping above; the unified size is always non-negative. polymarket: Already a non-negative number. Copied as-is. |
average_price | number (double) | computed — MarketPosition.total_traded_dollars / |position_fp| | Position.avgPrice (number) | synthetic / direct | kalshi: Cost basis per contract. total_traded_dollars is the cumulative dollars spent on the position; dividing by the absolute size gives the realized average entry price in dollars (probability units, 0–1 for binary markets). polymarket: Polymarket emits avgPrice as a decimal probability (0–1). Copied as-is. |
current_price | number (double) | computed — MarketPosition.market_exposure_dollars / |position_fp| | Position.curPrice (number) | synthetic / direct | kalshi: Mark-to-market price per contract derived from the upstream market_exposure_dollars, which represents the aggregate position value at the current mark. Dividing by absolute size yields the per-contract current price. polymarket: Polymarket emits curPrice as a decimal probability (0–1). Copied as-is. |
Source specs
- kalshi ·
schema/upstream/kalshi.openapi.yaml - polymarket ·
schema/upstream/polymarket-data.openapi.yaml
Tables are auto-generated fromschema/mappings/. CI fails on unresolved $refs and on type mismatches fortransform: direct. Drift in upstream specs surfaces here on the daily refresh PR.

