Quick start
Poly Syncer is end-to-end Polymarket copy trading infrastructure. It mirrors Polymarket trades from a leader wallet to a copier wallet within one to three seconds of on-chain confirmation. The path from a fresh browser session to a first mirrored fill is intentionally short: to auto copy Polymarket leaders, connect a wallet, sign a scoped EIP-712 trading permission, pick at least one leader from the live leaderboard, and set a per-leader allocation. Pro starts with default conservative caps so you can verify behaviour before loosening any gate.
The minimum viable account is a Polygon address holding USDC.e and a small MATIC balance for gas. We recommend at least $25 USDC to make position sizing meaningful and roughly 2 MATIC for two to three weeks of typical fill volume. A separate “copy wallet” kept distinct from your main holdings is good operational hygiene — it caps blast radius and makes auditing your PnL trivial.
Once a leader fires a trade, the listener catches the order.filled event off the CTF Exchange,
passes it through the risk engine, sizes a mirror order with Kelly-bounded variance, and submits a
Flashbots-style bundle from a private mempool. End-to-end p99 latency on Pro is around 1.8 seconds; on
the Elite co-located node it sits near 0.6 seconds. See API below for the
programmatic equivalent of every panel action.
Connecting a wallet
Poly Syncer is non-custodial. Your USDC never leaves your wallet — we ask for a scoped trading signature that authorises the mirror engine to submit orders on your behalf, nothing else. The permission is an EIP-712 typed-data signature with explicit bounds on amount, slippage, market, and expiry. You can revoke it on-chain at any time and the engine stops within one block.
Any EIP-1193 wallet works: MetaMask, Rabby, Frame, Coinbase Wallet, Trust, Ledger via WalletConnect, and
most mobile injectors. After clicking Connect, your wallet will be prompted twice — once for
authentication (a free personal_sign) and once for the trading permission (a free
eth_signTypedData_v4). Both are off-chain. No transaction fee is paid to start.
For institutional users we support Safe (multisig) accounts via module-mode signatures. The trading module is deployed at a fixed address documented in the security page. Owners co-sign once to install the module and the engine reads the role from on-chain state on every fill. To revoke, remove the module from your Safe — there is no off-chain credential to rotate.
A typical permission payload looks like this. The maxNotional bound caps the total exposure
the engine may take on your behalf in any rolling 24-hour window:
{
"domain": {
"name": "Poly Syncer",
"version": "1",
"chainId": 137,
"verifyingContract": "0xCopyExec...0001"
},
"primaryType": "TradingPermit",
"message": {
"owner": "0xYourWallet",
"operator": "0xPoly SyncerMirror",
"maxNotional": "5000000000", // 5,000 USDC (6 decimals)
"maxSlippageBps": 75, // 0.75%
"expiry": 1746547200,
"nonce": 7
}
}
Choosing wallets to copy
The leaderboard ranks every public Polymarket wallet by a composite of realised PnL, win-rate, Sharpe, maximum drawdown, average hold time, and market diversity. Re-ranking runs every 60 seconds and applies a luck filter that drops wallets whose returns sit more than 2.5 standard deviations above the sample mean over a single short window — that’s the “hot streak” signature, and it does not survive.
Treat the leaderboard the way you’d treat a hedge-fund tearsheet. Sort by Sharpe before sorting by PnL. Open a wallet’s detail page and inspect: how long is the track record, what categories does the trader concentrate in, what does the equity curve look like through the last drawdown, and how big is the typical position relative to bankroll. A wallet with 60% win-rate, 1.4 Sharpe, and a flat 18-month curve is almost always a better follow than one with 90% win-rate over 30 days.
Pro plans copy up to 250 wallets simultaneously; Elite is uncapped. There is no penalty for following many leaders other than the cumulative position the engine may open at any one time, which is bounded by your global allocation cap. A diversified portfolio of 8 to 20 leaders across 3 to 5 categories is a reasonable starting point.
Risk controls
Every fill the engine submits passes through the risk gate. The gate is the difference between a copier who survives a bad week and one who doesn’t. We expose six independent controls and recommend setting all of them — defaults are conservative but not optimal for every bankroll.
- Per-leader allocation. The fraction of your bankroll the engine will deploy when this leader trades. Default 5%.
- Max position size. Hard ceiling on a single market exposure, in USDC. Overrides allocation if Kelly would exceed it.
- Max slippage. Basis-point ceiling on the price difference between leader fill and your mirror fill. Trades exceeding it are skipped, not retried.
- Daily loss cap. If realised losses exceed this within a UTC day, the engine stops opening new positions until 00:00 UTC.
- Max drawdown. Equity-curve floor. Hitting it pauses copy-trading until you re-enable it manually.
- Time-of-day window. Optional UTC range. Outside the window, fills are paper-logged but not submitted.
Position sizing uses Kelly with a variance cap of 0.25, which keeps you in the “fractional Kelly” regime that real desks run. If you supply your own edge estimate per market via the API, the engine will use it; otherwise it derives an estimate from the leader’s historical conditional win-rate on similar markets. For a primer on the maths, see the Kelly entry in the glossary.
Category filtering
Available on Pro and Elite, category filtering restricts mirroring to the Polymarket verticals you understand. The full set of 25 categories is exposed, including Politics, Sports, Crypto, Finance, Geopolitics, Earnings, Tech, Culture, World, Economy, Climate & Science, Elections, Mentions, Games, Basketball, NBA, Movies, Soccer, Weekly, Recurring, Fed Rates, Business, New Listing, Trending, and Ending Soon. Categories are inclusive by default — selecting NBA does not exclude Basketball; both will fire on a market tagged with both.
Elite adds weighted allocation per category, so you can run, for example, a 50/30/20 split across Politics, Earnings, and Crypto regardless of what your leaders are doing. The engine will scale individual fills down to keep the rolling category exposure within bounds.
Filtering happens before sizing, before submission, and before any fee is paid. Skipped trades are
logged in your audit trail with a reason: "category_excluded" tag so you can verify exactly
what the engine ignored and why.
API
Every action available in the panel — connect a wallet, follow a leader, set risk, pause, export PnL — has a matching REST endpoint. The full schema, with examples and rate limits, lives at /developers. Pro keys are rate-limited to 60 requests per minute; Elite is 600 per minute with WebSocket access to the raw fill stream.
Authentication is HMAC-SHA-256 over the request body using a key issued from the panel. Keys are scoped (read-only, trade, admin) and rotatable. There is no email-based recovery — the only key management surface is the connected wallet.
$ curl https://api.polysyncer.com/v1/leaders \
-H "X-Poly Syncer-Key: pk_live_..." \
-H "X-Poly Syncer-Sig: $(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | cut -d' ' -f2)" \
-d '{"limit":25,"order":"sharpe"}'
Webhooks
Webhooks deliver near-real-time notifications for every event in your account: leader fill detected, mirror submitted, mirror confirmed, mirror skipped (with reason), risk-gate triggered, daily loss cap hit, plan upgraded. Each delivery is signed with the same HMAC scheme as the API and includes a monotonic sequence number so you can detect gaps and drops.
Endpoints must respond with a 2xx status within five seconds. The retry policy is exponential backoff at 1, 5, 25, and 125 seconds, then hourly for 24 hours. Webhooks that fail consistently are paused and a notification is dropped on your panel; they do not silently die.
POST https://your-app.example.com/polysyncer
X-Poly Syncer-Event: mirror.confirmed
X-Poly Syncer-Sig: t=1746547200,v1=8d2a...
{
"id": "evt_01HXYZ...",
"type": "mirror.confirmed",
"leader": "0x4f7a23e9c5b18f4d6e0a91c2f7b3d9e8c4a91c2d",
"market": "0xPolymarketMarketId",
"tx": "0xTxHash",
"size_usd": "182.40",
"latency_ms": 1612,
"ts": 1746547199
}
Troubleshooting
Mirror trades aren’t firing. Check three things in order: the trading permission is still valid (not expired or revoked), your USDC and MATIC balances are above the engine’s minimums, and no risk gate has tripped. The panel’s activity feed lists every skipped trade with a reason code, and most issues are visible there in seconds.
Latency feels high. Pro’s premium RPC is sub-2-second p99; Elite’s co-located node sits near 600 ms p99. If you’re on a paid plan and seeing degradation, check /status first — the page lists current p50/p99 numbers per service.
A specific leader stopped firing. The wallet may have been delisted from the leaderboard for failing the luck filter, or it may have gone quiet on-chain. Open the leader’s detail page; if the equity curve is flat for the last 7 days, they’re simply not trading.
For anything else, the help center covers common questions and /contact reaches the engineering team directly. Enterprise and Elite users have a dedicated Telegram channel listed in the panel.