How to automate Polymarket trading in 2026 — an honest technical guide
There are plenty of "build a Polymarket bot" tutorials that end where the real problems begin. This guide is the opposite: the API landscape as of 2026, and then the parts that actually decide whether you lose money — written from two bot generations and 4,000+ logged trades.
The API landscape (2026)
- Gamma API (
gamma-api.polymarket.com): market discovery and metadata. 5-minute crypto markets follow the slug patternbtc-updown-5m-<unix-timestamp>, one market per 300-second window. - CLOB V2 (
clob.polymarket.com): orderbook and order placement. Polymarket migrated to CLOB V2 on April 28, 2026 — the order struct changed and the EIP-712 domain version bumped, so V1 SDKs stopped working entirely. Use the officialpy-clob-client-v2(Python) or@polymarket/clob-client-v2(TypeScript). - Data API: positions and balances. Convenient, but it lags and it fails — more below. Never make it your only source of truth.
- Resolution oracle: 5-minute crypto markets resolve against Chainlink price feeds, not Binance or Coinbase spot. If your signal reads a different price source than the resolution oracle, you will "win" trades that resolve against you. Read the same oracle Polymarket resolves with (on Polygon, via any public RPC).
Wallets and authentication
Two account types behave differently: EOA wallets (you hold the key, e.g. MetaMask) sign directly; proxy wallets (email/Magic-link accounts — most retail users) require signature type 1 and a funder address, and their private key is revealed at reveal.magic.link/polymarket. Getting the signature type wrong produces confusing auth failures with valid keys. Always run a read-only auth + balance check before letting a bot place orders — and use a dedicated wallet with a small balance, never your main one.
Geographic restrictions
Polymarket blocks trading — and in some regions, API connectivity — from several jurisdictions, including the United States. From blocked regions the connection is refused outright, which a naive bot logs as "no markets found" and happily keeps polling forever. Check Polymarket's current restrictions page and the laws of your jurisdiction; most bot operators run from a small VPS in a permitted region. Evading geo-restrictions violates Polymarket's terms — don't build a business on it.
The five problems that actually cost money
Everything above is documentation-reading. These five are where our real losses came from:
1. The positions API lags 5-minute markets
After a fill-or-kill order fills, the positions endpoint can show zero shares for 5–10 seconds. If your bot verifies fills against it (like ours did), it will mark real fills as failed "ghosts" and abandon live positions — which in our May run cost more than the strategy earned. Verify fills by USDC balance delta: snapshot the balance before the order; if money left, you own shares, whatever the positions endpoint says.
2. Your backtest's slippage is fiction until you measure it
Our measured friction, from real fills on 5-minute markets: entry slippage mean −1.2¢; stop-loss exits fired below trigger 86% of the time (mean −6¢ past it, worst decile −24¢ in fast markets); take-profit slippage mean −8.8¢ with a tail out to −36¢. A frictionless shadow test of our strategy showed +11% ROI; reality was −27%. Simulate with measured distributions or don't bother simulating.
3. Never let the bot touch positions it didn't open
Our worst single loss (−$591 in three days) came from "orphan recovery" — auto-adopting wallet positions with no logged bet, which turned out to include the owner's manual bets on tennis and weather markets. If it's not in the bot's log, it does not exist for the bot.
4. Share amounts are not what you calculated
FOK orders fill at the best ask, not your cap, so you get fewer shares than usd/cap. The V2 SDK rounds share sizes down to 2 decimals internally, and the CLOB rejects maker amounts with more than 2 decimals of precision — align your sizes so shares × price lands on whole cents, and always sell observed wallet balances, never theoretical ones.
5. Signals that backtest well on 5-minute crypto usually aren't real
We measured momentum, mean-reversion, orderbook-imbalance and an ML model over 1,934 live windows: all scored 48–51% — coin flips. The one live-profitable configuration we found made money at a 40% win rate through exit asymmetry (cut losers at −10¢, hold winners to binary resolution). On near-efficient markets, execution structure beats prediction.
Build vs buy
Everything in this guide is implementable from scratch — budget a few weeks and expect to pay some real-money tuition to bugs like the five above. If you'd rather start from infrastructure that already paid that tuition, Uruguabot is our full source code: the CLOB V2 execution layer with every fix in this article, the calibrated simulator, risk rails, and the signal-measurement panel — sold once, with its complete audited record, losses included, and no profit promises.
Trading involves substantial risk of loss. Polymarket positions regularly resolve to $0.00. Nothing here is financial advice.