Skip to main content
The polymarket_polygon.positions table records what every wallet holds, day by day, and what it is worth: one row per (day, address, token_id), covering regular markets and Combos (multi-leg parlays, is_combo = TRUE), priced at the day’s close from ohlcv_hourly — the exact settlement value once the market is decided. The table carries positions and prices only, kept deliberately small. Labels, outcomes, resolution state, market names, and links live one join away on token_id: market_details for markets, combo_details for combos. Tokens unknown to their dimension are dropped. Coverage spans the legacy v2 CTF ledger and v3 PositionManager module 3 (combos). v3 single markets — PositionManager modules 1 and 2 — are outside the table’s scope.
Excluded rows. Zero balances (a wallet that exited simply has no row from that day on), the NegRiskAdapter’s NO-token burn sink (kNoTokenBurnAddress, not a real holder), and — from the day after the decision — decided positions worth under one cent, i.e. concluded losers and sub-cent winner dust that cannot be redeemed. The decision day itself still shows every position, and pre-decision history stays intact.

Table Schema

Table sample

Query performance

positions is partitioned by day — always filter on day.

Example queries