Skip to content

Copy Trading Reference

9 min read

Detailed reference for how copy trading executes, plus the edge cases worth knowing when a copy uses your funds. For setup, start with the Introduction and Settings.

#How mirroring works

Copy trading runs in two places that behave the same way, because both call one shared decision core for "should we copy this fill, and how big":

  • Browser runtime: mirrors while your BOOPOLY tab is open. Drives both Real and Sim in the tab.
  • 24/7 server: runs Real copy trades with no open tab required, once you have turned on Enable 24/7 copy trading. It checks each active trader's recent fills at least once a minute (with extra checks in between) and mirrors them using the server signer you authorized.

Because both runtimes share the same core, the same sizing math and the same advanced-filter checks run in the tab and on the server. A Sim copy in the browser makes the same decisions the server would.

Note

With 24/7 copy trading on, Real copy trades keep running on the server even when the app is closed. Sim runs only in your open tab; simulated copies are stored in your browser and never run on the server.

Limits. Up to 10 real copy trades can be active at once per account, and up to 30 simulated copies in one browser. A paused copy does not count; pause or stop one to make room.

Markets not copied. A trader's buy on a Taiwan-related market is skipped without placing an order or recording a fill row. Their sells there are still mirrored, so a position held from before can close. Real copy trading is also unavailable where real-money trading is restricted (Taiwan, OFAC-sanctioned countries, the UK, France and Ontario); Sim works everywhere.

Latency. Mirroring follows the trader with a short delay. Polymarket's public activity feed lists a trader's fills some seconds after they happen (about 20 seconds in our measurements), and the server checks it at least once a minute. In a fast-moving market the price can change between the trader's fill and your mirror, so your fills can differ from the trader's in price, size and timing. Market orders use the price-gap check for this reason, and Limit orders wait at a set price instead of following the market.

#Sim vs Real

Sim runs in your browser with virtual capital. You set Virtual capital (default $100, minimum $1). Mirrors are simulated against live prices (a buy pays the ask, a sell receives the bid) and recorded as simulated fills in this browser. No funds move, no on-chain order is placed, and the copies don't carry over to other devices.

What Sim does cover: trader selection, direction, buy sizing, sell sizing, budget limits, and every advanced filter, using the same decision core as Real.

What Sim does not cover: real fill quality, real slippage, taker/maker fees, on-chain settlement, wrap/collateral behaviour, If past the price gap, wait, and 24/7 continuity (Sim pauses when you close the tab).

Tip

A Sim run shows how your settings translate into orders. Real fills, fees and slippage apply once you switch to Real, so results can differ.

#Counter mechanics

Counter takes the opposite side of the same market. When the trader buys the Yes token, your mirror buys the No token of that market; when they buy No, you buy Yes. It is a position on the other outcome of the same event, not a short.

Counter only works on two-outcome markets. On a market with three or more outcomes there is no single "opposite", so those trades are skipped.

Sizing and every filter apply the same as Copy; only the outcome token is flipped. Market/Limit pricing works off the opposite token's book, so the price you pay is that token's price (roughly 1 − target's price in a two-outcome market, subject to the book).

#Trade sizing & slippage

Each buy is sized to a USDC amount by your buy mode, then converted to shares at the price you will pay:

  • A percentage of their trade: target's order USDC × pct%.
  • A share of theirs, within limits: target's order USDC × pct%, kept within [min, max].
  • Fixed amount: your flat USDC amount.
  • Smallest possible: the smallest order that meets both Polymarket minimums: ≥ 5 shares and ≥ $1 notional.

The result is then limited by your per-trade cap, then by the remaining total budget. For the percentage, within-limits and fixed modes, an order that would come out below $0.50 is skipped as too small to mirror. Smallest possible is exempt, since it deliberately targets the minimum. A size that would fall below the market's 5-share / $1 minimum is skipped with the reason shown (for example, the budget left is too small), so no order is sent that the exchange would refuse.

Price gap (Market only). The Acceptable price gap filter (default 5%) skips a Market mirror if the price has moved against you by more than that from the trader's fill price: for a buy, a higher ask; for a sell, a lower bid. A move in your favour never skips. It keeps a mirror from buying at a price that has already moved well past the trader's during the feed delay. With If past the price gap, wait set, the copy instead rests a limit order at the edge of the gap for that many minutes (canceled if unfilled).

Limit pricing. Limit copies don't use the price gap. They rest as a maker order one tick better than the trader: at the trader's price if that is still below the best ask (above the best bid, for a sell), otherwise at the best bid (best ask, for a sell). They never cross the book and pay no fees; they fill only if the market trades at that price.

#Budget, exposure & per-market cap

  • Total budget is cumulative across all mirrors, counted from the copy's own buy fills. When less than an order's worth is left, buys stop and the copy shows Budget used up · still selling; sells are still mirrored. Sales don't refill it; raise the budget to resume buying.
  • Per-trade cap limits any single mirror before the total-budget check.
  • Max per market sums prior buy fills on one conditionId; once cumulative spend on that market reaches the cap, further buys there are skipped (sells are unaffected).
Tip

A total budget keeps spending predictable even when a trader is very active or you use a large percentage. It is the simplest way to set the most a copy can spend.

#Market filters & schedule

The advanced checks run before every buy mirror and return the first reason a buy doesn't pass. Sells are never filtered: every filter below is an entry filter, so a copy can always exit a position it holds.

  • Copy expiry (Pause the copy after): once the copy trade is older than the set time (1h / 12h / 1d), it stops buying and becomes Paused · still selling (not stopped).
  • Ignore small orders: the trader's fills below this USDC amount are ignored.
  • Max per market: see above.
  • Min 24h volume / Min liquidity / Days left before settlement / Category filter: rely on a market-data lookup; if the lookup fails, the buy goes ahead rather than being blocked. For games, days left count from kick-off.
  • Cancel limit orders after: limit copies only; how long each posted limit order stays on the book before it is canceled (5m / 1h / 3h / Forever).

Category filter modes: All (accept everything), Only these (mirror only markets whose tags match), Exclude these (skip markets whose tags match). A market matches when any of its tags does. Chips cover Polymarket's top-level categories; anything else you pick from Polymarket's own tags under Other tags (search Polymarket). Sports already covers every league.

#Failure handling & retries

Every mirror becomes a fill with a status. The server retries a failed mirror up to 3 times, about 5 minutes apart.

Status Meaning
Pending Queued: decided to mirror, not yet submitted.
Submitted Order sent to the CLOB, awaiting a fill result.
Filled The order traded.
Retrying Placement failed and the server will try again (up to 3 times).
Failed Placement failed (e.g. insufficient collateral) and is no longer being retried: retries are used up, or the copy is no longer active.
Skipped Your own settings said no: a filter, the per-market cap, the budget, or the $0.50 minimum. Nothing was sent.
Canceled A resting order canceled because you stopped the copy trade.
Rejected Not placed: the price had moved past your gap, the order was below a market minimum, or the exchange declined it.

A failed buy on Real can trigger a server-side USDC.e → pUSD wrap and a retry, when your server signer policy allows it. The failure reason is recorded so you can see why a mirror did not go through.

#Partial fills

A trader's order may fill in several parts within a short settle window. Those partial fills are combined so one trader order becomes one mirror, rather than a series of small mirrors. This keeps your sizing and per-market accounting aligned with the trader's actual position change.

#Position tracking & P&L

P&L is booked at real settled cost, not the nominal CLOB price; the price shown on the book is not always the USDC that actually settles. Realized P&L counts positions that have been sold or redeemed (settled). Open positions are unrealized until the trader (or you) closes them, or the market resolves.

See Orders & P&L for how mirrored fills appear in your order ledger.

#Stop-loss behaviour

The loss limit ("Loss limit (stops buying)") measures the copy's total P&L: realized from sells and settled markets, plus open positions valued at the bid (a position whose price can't be read counts at cost). When it is down by your threshold, the copy stops buying and becomes Paused · still selling. The trader's sells are still mirrored, so open positions can still be exited alongside the trader, and nothing else is sold for you. The copy sells only to mirror the trader closing a position. Copy expiry works the same way.

Pausing or resuming the copy yourself ends the sell-only state: a manual pause is a full pause (sells stop being mirrored too), and a resume is a full resume.

A spent Total budget has the same effect without changing the status: the copy stays active, shows Budget used up · still selling, skips buys and keeps mirroring sells.

Statuses a copy trade can be in: Active (a simulated copy shows Running · this tab), Paused (by you; a full pause), Paused · still selling (by the loss limit or copy expiry), Stopped. A real copy whose last 20 attempts all failed because exchange credentials were missing is also paused automatically (a full pause), and you receive a notification.

#Manual sells

With sell mode Don't auto-sell, mirrors copy entries only; the trader's sells are not mirrored and you close positions yourself from your portfolio. This is also how you exit anything a paused or stopped copy trade still holds. Those positions otherwise stay open until the market resolves.

#Market resolution & redemption

When a copied market resolves, positions settle on-chain and redeemed value counts as realized P&L. Copy trading does not need to place a sell for a resolved market; resolution settles it. The Days left before settlement filter lets you skip markets that resolve sooner than you want.

#Requirements

To run copy trading you need:

  • A logged-in BOOPOLY account. See Wallets & Login.
  • A funded deposit wallet (Real mode). Real mirrors spend the funds in your deposit wallet. See Deposit & Withdraw.
  • A region where real-money trading is available (Real mode). Not Taiwan, OFAC-sanctioned countries, the UK, France or Ontario. Sim is available everywhere.
  • An open tab (browser runtime / Sim). Browser mirroring and all Sim copy trades run only while your BOOPOLY tab is open.
  • 24/7 copy trading turned on (24/7 Real mode). For Real copy trades to run with your tab closed, press Enable 24/7 copy trading (two one-time signatures). This authorizes our server signer to sign for your wallet under a restricted policy; Security explains how it works.
Tip

Before leaving a copy running unattended, a typical routine is: try it in Sim, set a total budget, and check the first few mirrored orders in your order history.