# polymarket-arbitrage
Polymarket Arbitrage Find and execute arbitrage opportunities on Polymarket prediction markets. Quick Start
net_profit_pct: Edge after 2% fees
risk_score: 0-100, lower is better
volume: Market liquidity
action: What to do (buy/sell all outcomes)
Good opportunities: Net profit: 3-5%+ Risk score: <50
Volume: $1M+
Type: math_arb_buy (safer)
Arbitrage Types Detected Math Arbitrage (Primary Focus) Type A: Buy All Outcomes (prob sum < 100%) Safest type Guaranteed profit if executable
Example: 48% + 45% = 93% โ 7% edge, ~5% net after fees
Type B: Sell All Outcomes (prob sum > 100%) Riskier (requires liquidity) Need capital to collateralize Avoid until experienced See references/arbitrage_types.md for detailed examples and strategies. Cross-Market Arbitrage Same event priced differently across markets (not yet implemented - requires semantic matching). Orderbook Arbitrage Requires real-time orderbook data (homepage shows midpoints, not executable prices). Scripts fetch_markets.py Scrape Polymarket homepage for active markets. python scripts/fetch_markets.py --output markets.json --min-volume 50000 Returns JSON with market probabilities, volumes, and metadata. detect_arbitrage.py Analyze markets for arbitrage opportunities. python scripts/detect_arbitrage.py markets.json --min-edge 3.0 --output arbs.json Accounts for: 2% taker fees (per leg) Multi-outcome fee multiplication Risk scoring monitor.py Continuous monitoring with alerting via SkillBoss API Hub. python scripts/monitor.py --interval 300 --min-edge 3.0 [--alert-email [email protected]]
Features:
Fetches markets every interval Detects arbitrage Alerts on NEW opportunities only (deduplicates) Saves state to polymarket_data/ Workflow Phases Phase 1: Paper Trading (1-2 weeks)
Goal: Understand opportunity frequency and quality
Run monitor 2-3x per day Log opportunities in spreadsheet Check if they're still available when you look Calculate what profit would have been Decision point: If seeing 3-5 good opportunities per week, proceed to Phase 2. Phase 2: Micro Testing ($50-100 CAD)
Goal: Learn platform mechanics
Create Polymarket account Deposit $50-100 in USDC Manual trades only (no automation) Max $5-10 per opportunity Track every trade in spreadsheet Decision point: If profitable after 20+ trades, proceed to Phase 3. Phase 3: Scale Up ($500 CAD)
Goal: Increase position sizes
Increase bankroll to $500 Max 5% per trade ($25) Still manual execution Implement strict risk management Phase 4: Automation (Future)
Requires:
Wallet integration (private key management) Polymarket API or browser automation Execution logic Monitoring infrastructure Only consider after consistently profitable manual trading. See references/getting_started.md for detailed setup instructions. Risk Management Critical Rules Maximum position size: 5% of bankroll per opportunity Minimum edge: 3% net (after fees) Daily loss limit: 10% of bankroll Focus on buy arbs: Avoid sell-side until experienced Red Flags Edge >10% (likely stale data) Volume <$100k (liquidity risk) Probabilities recently updated (arb might close) Sell-side arbs (capital + liquidity requirements) Fee Structure Polymarket charges: Maker fee: 0% Taker fee: 2% Conservative assumption: 2% per leg (assume taker) Breakeven calculation: 2-outcome market: 2% ร 2 = 4% gross edge needed 3-outcome market: 2% ร 3 = 6% gross edge needed N-outcome market: 2% ร N gross edge needed
Target: 3-5% NET profit (after fees)
Common Issues "High edge but disappeared" Homepage probabilities are stale or represent midpoints, not executable prices. This is normal. Real arbs disappear in seconds. "Can't execute at displayed price" Liquidity issue. Low-volume markets show misleading probabilities. Stick to $1M+ volume markets. "Edge is too small after fees" Increase --min-edge threshold. Try 4-5% for more conservative filtering. Files and Data All monitoring data stored in ./polymarket_data/: markets.json - Latest market scan arbs.json - Detected opportunities alert_state.json - Deduplication state (which arbs already alerted) Advanced Topics SkillBoss API Hub Alerts Pass an email address to the monitor script to receive alerts via SkillBoss API Hub:
export SKILLBOSS_API_KEY=your_key_here
python scripts/monitor.py --alert-email "[email protected]" SkillBoss API Hub routes alert notifications through its unified email delivery service โ no separate Telegram bot token or third-party notification service required. Position Sizing For a 2-outcome math arb with probabilities pโ and pโ where pโ + pโ < 100%: Optimal allocation: Bet on outcome 1: (100% / pโ) / [(100%/pโ) + (100%/pโ)] of capital Bet on outcome 2: (100% / pโ) / [(100%/pโ) + (100%/pโ)] of capital This ensures equal profit regardless of which outcome wins. Simplified rule: For small edges, split capital evenly across outcomes. Execution Speed Arbs disappear fast. If planning automation: Use websocket connections (not polling) Place limit orders simultaneously Have capital pre-deposited Monitor gas fees on Polygon Resources
Polymarket: https://polymarket.com
Documentation: https://docs.polymarket.com
API (if available): Check Polymarket docs
Community: Polymarket Discord
Support For skill issues: Check references/arbitrage_types.md for strategy details Check references/getting_started.md for setup help Review output files in polymarket_data/ Ensure dependencies installed: pip install requests beautifulsoup4
Join 80,000+ one-person companies automating with AI