Polymarket Bot Safety: 13 Guards Every Copy Trader Should Have On
Most failed copy-trading accounts didn't have a bug, they had no safety. This is a walkthrough of the 13 guards every Polymarket copy trader should set, what they do, why they matter, and how to configure each one in PolyTortoise.
The two-minute version
Open /settings in the bot and set:
daily_loss_limit_usdc = 200(auto-pause copy when 24h losses exceed $200)max_position_usdc = 100(hard cap per copy trade)min_leader_trade_usdc = 50(skip dust mirrors)max_open_positions = 10(cap concurrent positions)auto_exit_on_leader_sell = on(default, close when leader closes)
Done. Now read on for why each one matters and the four engine-level guards that are always on.
The 5 per-user knobs you set yourself
1. Daily loss limit
Single most important safety guard. Without it, a leader having a bad day can drag your account down by 30% before you notice. The bot tracks rolling 24h realized P&L from copies; once losses exceed your cap, new copies pause silently and you get a Telegram alert. Resumes automatically as old losses age out of the 24h window.
Recommended: 1-2% of your starting paper balance, or 1% of your live wallet balance.
2. Max position per trade (hard ceiling)
Even if a leader places a $50,000 trade, your copy is capped to this number. Layered on top of the per-leader max_per_trade_usdc setting (which itself is capped at your default copy size on /watch).
3. Copy fraction
What percent of the leader's notional you mirror. Default 10%. Some traders set 5% for experimental leaders, 25% for high-conviction.
4. Min leader trade size (dust filter)
Polymarket has a long tail of $5 dust trades. Mirroring those wastes fees. Set to $50-200 and you only copy the leader's serious bets.
5. Max open positions
Cap concurrent holdings. If a leader rapid-fires 50 trades in 10 minutes (this happens on resolution day for a sports match) you don't want all 50 on your book. Cap at 10-20.
The 8 engine-level guards that are always on
These ship enabled by default and most users never touch them. They're the boring ones that prevent obscure failure modes:
- Spread limit. If the orderbook spread is > X cents, the bot won't place an order, guards against thin markets where you'd pay 5% above mid.
- Price drift cap. If the price moved more than Y% between the leader's fill and your placement, abort, guards against fast-moving markets where the alpha already moved.
- Anti-wash filter. Prevents copying back-and-forth trades from the same leader within seconds (sometimes a UI bug, sometimes intentional).
- Duplicate-market block. Already holding a position in this market? Don't double-down without explicit user override.
- Auto-rotation. Paper mode rotates positions out of low-confidence markets to keep the portfolio focused.
- Stale-trade reject. If we see a trade that's > N seconds old (older than our normal latency window) we skip it, assumes it's a backfill from an outage, not a fresh signal.
- Notional sanity. Reject trades where notional doesn't match price × size within tolerance, guards against malformed API rows.
- Per-user dedup. Same on-chain transaction hash twice = ignored. Prevents double-execution from race conditions.
Three things you also get for free
- Paper mode by default. $10k virtual USDC, 7-day trial. You can't accidentally lose real money on day 1 by leaving a setting wrong.
- Mirror leader sells. When a leader exits a position, your copy auto-closes. So if you forget to set a take-profit, the leader's exit becomes yours.
- Per-trade alert with [Exit] button. Every copy fires a Telegram notification with an inline "Exit position" button. You can override the leader's hold with one tap.
The honest part: no setup eliminates risk
Copying a profitable wallet is still gambling. The leader can be right 65% of the time and still hit a 4-loss streak. Polymarket markets can resolve weirdly (an unexpected interpretation of "did X happen by date Y"). Your safety guards make wipeouts survivable, not impossible.
Treat your daily loss limit as a "today's tuition" budget. If you hit it, the day's done. Tomorrow the cap resets.