How to Start Polymarket Arbitrage in 2026
This is the guide for someone starting from zero. You've heard about merge arbitrage on Polymarket, you understand the concept, and you want to actually do it. Here's the complete setup process from scratch.
Prerequisites: a computer, $50+ in cash you can convert to USDC, and about 2 hours to set everything up the first time.
What You're Building
The goal is to have: a Polymarket account โ connected to a Polygon wallet โ funded with USDC โ able to scan for YES + NO gaps โ execute merge arb trades.
Manual first. Automated later. This guide covers manual execution.
Step 1: Set Up Your Wallet
Download MetaMask at metamask.io. Create a new wallet. Write down the seed phrase on paper โ not in a notes app. Then add Polygon network: Settings โ Networks โ Add Network โ search "Polygon Mainnet" or add manually (RPC: https://polygon-rpc.com, Chain ID: 137, Symbol: MATIC, Explorer: polygonscan.com).
You need USDC on the Polygon network (not Ethereum mainnet โ that's a different chain and much higher gas fees). Easiest path: Buy USDC on Coinbase โ Withdraw to your MetaMask address โ Select Polygon network on withdrawal. Minimum: $20 to start, $100+ recommended. Also get $5 in MATIC for gas (needed to execute on-chain merges โ costs ~$0.005 per merge but you need some).
Go to polymarket.com. Click "Sign Up". Connect your MetaMask wallet. Polymarket uses Magic Link for account creation โ you'll sign a gasless transaction to approve the connection. Your Polymarket account is now linked to your wallet address.
Step 2: Find Your First Opportunity
Use Pythia's free scanner at pythialpha.trade/scanner.html โ it checks 500+ markets and shows you real-time YES + NO gaps ranked by edge. Filter to "Zero-Fee Only" to see only politics/culture/science markets. Alternatively, run this Python script manually:
import requests
def scan_arb(min_profit=0.003):
markets = requests.get(
"https://gamma-api.polymarket.com/markets",
params={"active": True, "limit": 200, "order": "volume", "ascending": False}
).json()
results = []
for m in markets:
yes = float(m.get("bestAsk") or 1)
no = 1 - float(m.get("bestBid") or 1)
profit = 1.0 - (yes + no)
if profit >= min_profit:
results.append({
"question": m["question"][:60],
"yes": yes, "no": no,
"profit": profit,
"id": m.get("conditionId", "")
})
results.sort(key=lambda x: -x["profit"])
for r in results:
print(f"+${r['profit']:.4f} | YES=${r['yes']:.3f} NO={r['no']:.3f} | {r['question']}")
scan_arb()
Politics, culture, science markets only โ zero trading fees. Any positive gap is profit. Avoid crypto and sports markets until you understand the fee structure.
Step 3: Execute Your First Trade
Go to the market on Polymarket. Find the order book. Place a limit (maker) buy order for YES at the ask price โ or slightly above if you want faster fill. Then place a limit buy order for NO at the ask price. Wait for both to fill. This can take minutes to hours depending on market activity. Maker orders = zero fees + you earn daily rebates.
Once both YES and NO orders have filled in equal amounts, you can merge. Go to your Polymarket portfolio. Find the position. Click "Merge" if Polymarket's UI shows this option. Alternatively, call mergePositions() directly on the CTF contract via Polygonscan's write contract interface (address: 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045). You'll receive 1 USDC per YES+NO pair merged. Profit is immediate.
Your USDC is back in your Polymarket balance immediately. Find the next opportunity. The same dollar can execute multiple trades per day. Capital velocity โ how fast you recycle โ is the edge at small account sizes.
Realistic Expectations
| Stage | Capital | Method | Est. Daily Profit | Timeline |
|---|---|---|---|---|
| Learning | $50โ$300 | Manual scan + trade | $0.50โ$3 | Week 1-4 |
| Consistent | $300โ$3,000 | Manual + scanner tool | $3โ$30 | Month 1-3 |
| Semi-auto | $3Kโ$30K | Scanner alerts + fast manual exec | $30โ$300 | Month 3-9 |
| Automated | $30K+ | Full bot: scan + execute + merge | $300+ | Month 9+ |
Common Mistakes
- Over-betting โ Using too much capital per trade. Use quarter-Kelly. Max 30% of capital per trade.
- Market orders โ Using market orders instead of limit orders. Market orders pay taker fees. Limit orders pay zero fees and earn rebates.
- Crypto/sports markets โ Targeting these before understanding the fee structure. Start with zero-fee politics markets.
- Forgetting MATIC โ Running out of MATIC for gas when you need to execute a merge. Always keep $5+ in MATIC.
- Not reinvesting โ Withdrawing profits instead of compounding. The math only works if you let it compound.
- Chasing tiny gaps โ A $0.002 gap on a $20 position is $0.04 profit. After gas, you're even. Set a minimum profit threshold of at least $0.10 per trade.
Next Steps
Once you're comfortable with manual execution:
- Set up the Python scanner to run continuously and alert you
- Get your Polymarket API key (from your account settings โ API tab)
- Start automating order placement using the CLOB API
- Add mean reversion as a secondary strategy with 15% of capital
- Consider Bot-as-a-Service when you want 24/7 execution without running your own infrastructure
The Full Playbook
Every step in detail. All the code. The complete $300 โ $300K roadmap. $9 one-time.
GET THE PLAYBOOK โ $9 โ FREE LIVE SCANNER โ