Skip to main content
Bravado’s Data API derives all metrics directly from on-chain Polygon data, using a share-level FIFO cost-basis engine that reconstructs the full economic history of any Polymarket wallet. You can query performance data for your own wallet or any public address, useful for leaderboard analysis, due diligence on traders you want to copy, and year-end tax reporting. The base URL for all analytics endpoints is https://bravado-api-k7kaq.ondigitalocean.app.
All numeric fields in Data API responses, including PnL, volume, and prices, are returned as JSON strings. Always parse them as BigDecimal (or your language’s equivalent arbitrary-precision type). Parsing as a float risks silent rounding errors on large values.

Why Bravado over the native endpoints

The difference here is accuracy, and it is worth being specific about where it comes from. Polymarket’s own surfaces are built to run the exchange, not to account for a wallet. They expose recent activity and current holdings. They do not reconstruct what a position cost you, and they do not produce anything a preparer or an auditor can check. Bravado computes every figure from on-chain Polygon settlement records, then replays a wallet’s entire transaction history through a share-level FIFO cost-basis engine, starting at its first ever trade. Nothing is estimated from a midpoint or sampled from a recent window. Three consequences follow from that design:
  • Numbers agree with each other. PnL on the leaderboard, on the trader profile, and in the tax report come from the same computation, so they reconcile. Endpoints that each calculate independently drift apart.
  • You can prove it. GET /traders/{address}/reconciliation returns a certificate verifying the statement is internally consistent, which matters when a third party has to accept the numbers.
  • It works on wallets you do not control. Every read endpoint takes any public address, so you can analyse a trader before you follow them, with no funded account.
Numeric fields are returned as JSON strings on purpose. Parsing them as floats reintroduces exactly the rounding error the FIFO engine exists to avoid. See Numeric conventions.

Key metrics

Realized PnL

Cashflow-based net profit after fees, computed over the full position lifecycle including trades, splits, merges, redemptions, and market resolutions. Splits and merges are correctly excluded from volume inflation.

Unrealized PnL

Open position shares marked to the latest CLOB midpoint prices. Updates in real time as market prices move.

Volume

USDC notional traded, filtered to exclude CTF split, merge, and redeem transactions. This gives you true trading volume, not inflated on-chain throughput.

Win rate

Closed-position stats at the outcome level, a position is a “win” if it closed with positive realized PnL. Calculated independently of position size.

The window parameter

All analytics endpoints accept a ?window= query parameter that controls the rolling lookback period for returned metrics. What the window affects: PnL, volume, and trade counts use daily or hourly rollups that respect the window boundary. Windowed queries are fast because they aggregate pre-computed buckets. What the window does not affect: Fee totals, streak metadata, and drawdown statistics are always computed all-time regardless of the window value. This is by design, these metrics are meaningless when truncated to a short window.
Wallet addresses are matched case-insensitively. You can supply a checksummed or lowercase Polygon EOA address and receive the same result.

Leaderboards

Bravado maintains two live leaderboards ranked by the window you specify:
Returns traders ranked by realized PnL over the selected window.

Trader profile

The trader endpoints return comprehensive performance data for a single wallet across all markets.
The response includes: Additional per-wallet endpoints:

Tax statements

Bravado generates formal accounting documents for tax reporting and financial reconciliation. Each statement type covers a specific aspect of wallet activity.
Lists every closed position as a disposition row with acquisition date, disposal date, proceeds, cost basis, gain/loss, and holding-period term (SHORT for positions held ≤ 365 days, LONG for positions held > 365 days). Formatted to mirror IRS Form 8949 for US taxpayers.
Itemizes non-trade income received by the wallet: liquidity rewards, maker rebates, and referral bonuses. Each line includes the on-chain transaction hash and USDC amount.
A point-in-time snapshot of all open positions, share balances, cost bases, mark prices, and unrealized PnL. Useful for year-end Schedule D footnotes.
A chronological log of deposits into and withdrawals from the wallet. Distinguishes between USDC.e and pUSD flows.
Quantitative performance summary:
A machine-verifiable certificate that confirms the on-chain data used to generate statements is complete and consistent. Include this with any professional tax filing for auditability.