Strategy: YES/NO Spread Arbitrage with Profit Locking Proven Results: $40M in profits 2024-2025, 96.7% win rates documented
The bot exploits temporary price inefficiencies on Polymarket:
-
The Math:
- In binary markets, YES + NO should = $1.00
- When YES $0.48 + NO $0.48 = $0.96 → Buy both
- Guaranteed $1.00 payout = $0.04 profit (4%)
- Need >2.5% spread to beat Polymarket's 2% fee
-
Why It Works:
- Emotional traders misprice one side
- Bot buys both sides when total < $0.975
- Locks guaranteed profit regardless of outcome
- Opportunities exist for 2-5 seconds
-
The Strategy:
- Monitor orderbooks continuously
- Detect spread opportunities
- Execute both sides simultaneously
- Profit is locked before market settles
# Option A: Use existing MetaMask
# - Export private key from MetaMask
# - Switch network to Polygon
# Option B: Create new wallet (recommended for testing)
# - Use a wallet generator
# - Fund with small amount of USDC on PolygonYou need:
- MATIC for gas fees (~$5-10 worth)
- USDC for trading ($100-500 to start)
Get them on Polygon network:
- Bridge from Ethereum: https://wallet.polygon.technology/bridge
- Buy on exchange and withdraw to Polygon
- Use on-ramp: https://buy.moonpay.com
# Add to your .env file
POLYMARKET_PRIVATE_KEY=your_wallet_private_key_here
POLYMARKET_MIN_SPREAD=0.025 # 2.5% minimum (adjust as needed)
POLYMARKET_MAX_SIZE=100 # Max $100 per trade# This will NOT place real trades, just log opportunities
pnpm arbWatch for opportunities. You should see messages like:
🎯 ARBITRAGE OPPORTUNITY DETECTED!
Market: Will Bitcoin hit $100k by Feb 1?
YES Price: $0.4800
NO Price: $0.4800
Total Cost: $0.9600
Spread: 4.00%
Profit: $0.0400 per $1 invested
📄 PAPER TRADING - Would execute but not placing real orders
ONLY after you've seen 10+ opportunities in paper mode:
# WARNING: This will place REAL trades with REAL money
pnpm arb:liveThe bot will:
- Give you 5 seconds to cancel
- Start monitoring markets
- Execute trades automatically when spread > 2.5%
- Log all activity
Conservative Estimates (Based on Research):
- 5-15 opportunities per day
- 2.5-5% profit per opportunity
- $25-75 daily profit on $500 capital
- 96%+ win rate (profit is locked before settlement)
Realistic Timeline:
- Week 1: Paper trading, validate opportunities exist
- Week 2: Live trading with $100-200
- Week 3: Scale to $500 if profitable
- Month 2: Scale to $1000+ if consistent
- Start small: $100-200 maximum
- Paper trade first: Validate opportunities exist
- Don't bet rent money: This is high-risk
- Run on VPS: Use cloud server for 24/7 uptime (not your laptop)
- Scale slowly: Only increase after 20+ profitable trades
The Reality:
- Opportunities last 2-5 seconds (faster than humans can react)
- Bot scans markets every 3 seconds
- Trades execute instantly when spread > 2.5% (no approval needed)
- You cannot manually approve trades fast enough - bot must be autonomous
What "Autonomous" Means:
- ✅ Bot runs 24/7 without human input
- ✅ Detects opportunities automatically
- ✅ Executes both YES/NO trades instantly
- ✅ Logs all activity to dashboard
- ✅ Handles errors and retries automatically
What You Actually Do:
- Check dashboard 5-10 minutes per day
- Review P&L and win rate
- Adjust parameters if needed (lower spread threshold, increase size)
- Top up MATIC for gas if running low
- That's it
The dashboard is for checking results, not for executing trades:
- View opportunities found
- Track P&L
- Monitor win rate
- See 24-hour activity
- No buttons to click, no trades to approve
Press Ctrl+C to stop and see stats:
📊 Session Statistics:
Total Opportunities: 47
Average Spread: 3.12%
Total Potential Profit: $147.20
Check your Polymarket wallet:
- https://polymarket.com/profile
- View positions and settled markets
- Calculate realized profit
- Normal - spreads >2.5% are rare
- Bot may run for hours between opportunities
- Increase monitoring: spreads appear during volatile events
- Need USDC for trades
- Need MATIC for gas fees
- Check wallet balance on Polygon
- Polymarket limits: 100 requests/min
- Bot is designed to stay under limits
- If hit, bot will slow down automatically
- Spread closed before execution (normal)
- Insufficient gas
- Network congestion
# In .env file:
# Minimum spread (lower = more opportunities, lower profit)
POLYMARKET_MIN_SPREAD=0.02 # 2% (more aggressive)
POLYMARKET_MIN_SPREAD=0.03 # 3% (more conservative)
# Max position size
POLYMARKET_MAX_SIZE=50 # $50 per trade (safer)
POLYMARKET_MAX_SIZE=200 # $200 per trade (more profit, more risk)This works, BUT:
- Opportunities are RARE (2-5 seconds duration)
- Bots compete for same spreads
- Bot executes instantly (no human can react fast enough)
- Starting capital $200-500 minimum for meaningful returns
- Fully autonomous operation - Bot runs 24/7 without human intervention
Expected realistic returns:
- $25-50/day on $500 capital (conservative)
- $50-100/day on $1000 capital (realistic)
- Set and forget - Bot handles everything automatically
- Check dashboard 5 min/day to verify profitability
- No manual trade approval needed (2-5 sec windows require instant execution)
Kill criteria:
- No opportunities for 7 days straight
- Negative ROI after 30 trades
- Consistent transaction failures
- Tonight: Paper trade for 2-3 hours, validate opportunities exist
- Tomorrow: If opportunities found, fund wallet with $100 USDC
- Day 3-7: Live trading with small sizes, track results
- Week 2: Analyze results, scale or kill
Ready to start?
# Test first
pnpm arb
# When ready
pnpm arb:live