The problem
Quantitative research on Polymarket requires clean historical fill data, position snapshots at arbitrary points in time, and PnL series that reconcile with wallet state. Reconstructing this from on-chain logs is possible but expensive: parsing conditional-token events, joining against order-book snapshots, and handling neg-risk mechanics is a several-week engineering project.What Bravado provides
- Full historical fills for any wallet via
GET /traders/{address}/tradeswith cursor pagination. - Position reconstruction at any timestamp via
GET /traders/{address}/positionswith time range filters. - PnL time series via
GET /traders/{address}/pnlwith configurable bucketing. - Universe-level data via
GET /tradesfor global fill data across wallets. - All PnL computed under PMWAS, so backtests reconcile with the live Analytics endpoints.
APIs used
Worked example
Pull all fills for a leaderboard cohort and load them into a dataframe:symbol, side, size, price, fee, block_timestamp, and market metadata. Feed it directly to a Jupyter notebook or a research feature store.
Common research patterns
- Alpha decay. Track leader wallets’ PnL post-signal and correlate with mirroring latency.
- Fee sensitivity. Simulate strategies at different fee levels using PMWAS cost-basis math.
- Liquidity modeling. Cross-reference fill sizes against depth snapshots to model slippage.
- Neg-risk arbitrage. Detect stale prices across a neg-risk basket where the YES-share sum diverges from $1.
Notes on data
- Numeric fields are strings. Cast to
Decimalbefore arithmetic, notfloat. See Numeric conventions. - Cursor pagination is stable against new inserts. Backfill jobs can resume from a persisted cursor.
- Fees are itemized per fill.