polyfees

How we count

How we count

Where the numbers come from: public trade data, exact fees from transaction receipts, and a reconciliation against Polymarket's own realized PnL.

Where the numbers come from

  • Trades and positions — Polymarket's public data API, by profile address. We merge two feeds, because the trade feed only lists orders that took liquidity; orders that rested in the book appear in the activity feed.
  • Market results — the public markets API: which outcome won, when the game started, which fee schedule applied.
  • Fees — read from each trade's transaction receipt on Polygon (the exchange's OrderFilled event carries the exact fee). Not a formula estimate.
  • Reference price — for entries before the start of a game, the market price at game start from public price history. For in-game and 5-minute markets there is no honest reference, and we say so.

What we compute

Positions are built per market and outcome. Result = what you sold for + payout at resolution − what you paid − fees. We reconcile every closed position with Polymarket's own realized PnL; in our tests they match to within five cents on 1,039 of 1,039 positions.

"Held to the end" are positions you never sold; "sold along the way" are positions where you sold some or all before resolution. For each group we show the result and the share of positions in profit.

What we do not do

  • We never ask for keys, signatures or a wallet connection. Everything is public on-chain data.
  • We do not tell you what to trade. This is a review of the past.
  • We do not label in-game or 5-minute trades as "mistakes": fifteen minutes later the price already knows how the game went.

Limits

The public API returns at most the latest 10,000 trades and 5,000 activity records per address; for very active bots a month may be incomplete, and the card says so. Price history is kept for roughly 30–45 days, so the free card covers the last 30 days.