Covered Pair Arbitrage (CPA)
Math-edge strategy — buy both sides below $1 total, redeem for $1 on-chain
What It Is
CPA buys both the YES and NO tokens of the same binary market when their combined ask price is below $1. Since every Polymarket binary market resolves to exactly $1 total, holding both tokens guarantees a $1 payout regardless of outcome. The profit is the gap between what you paid and $1.
This is a pure arbitrage: no directional bet, no market view required. The edge exists when combined ask prices are inefficient — typically in lower-volume markets where the bid-ask spread is wider.
When It Fires
AntFlow monitors 10,000+ Polymarket markets via a live order book WebSocket. CPA fires when all of the following are true:
- YES ask + NO ask ≤ max_pair_cost_usd — combined cost is below your threshold
- Market has ≥ $10k 24h trading volume
- No other CPA pair is currently executing (one pair at a time)
- Strategy is not paused and daily loss cap is not hit
Both legs are submitted simultaneously as Fill-or-Kill orders. If both fill, the pair is complete and queued for on-chain redemption. If one leg rejects, the filled leg is held as a one-sided position until manually recovered or exited.
Setup
- Go to Automation and enable Covered Pair Arb.
- Set
max_pair_cost_usd— the sum-asks gate (default 0.90, range 0.50–1.00).0.90 is the research-validated setpoint from a 180-day backtest across 4,500 markets.
Lower (0.85–0.89) → rarer opportunities, higher edge per pair.
Higher (0.91–0.99) → more frequent activity, smaller margin per trade.
- Set
target_shares_per_leg— shares to buy per leg (default 25). Actual cost depends on current ask prices. - Confirm your wallet has enough pUSD to cover both legs.
- Optionally start in simulation mode to observe behavior before committing capital.
- Disable dry-run in Settings to go live.
Tip
Risk Controls
CPA auto-pauses when any of these conditions are met:
- Consecutive pair rejections exceed the configured threshold
- Daily loss cap hit
- Total strategy exposure limit reached
- Fill anomaly detected — partial-leg accumulation above threshold
- Order fill rate drops below the minimum threshold
- 3 auto-pause events in 24h — hard cap, requires manual resume
After a pause, CPA auto-resumes after a configurable cooldown unless the 3-event hard cap was hit. If the funnel widget shows paused, check Logs → Risk Events for the trigger reason.
Reading the Funnel
The CPA funnel widget on the Dashboard shows the pipeline in real time:
| Stage | What it means |
|---|---|
| UNIVERSE | All markets passing the $10k volume + open status filter (~15 min refresh) |
| WATCHLIST | Markets with a chance of hitting the threshold based on recent book snapshots (~60s refresh) |
| HOT | Markets subscribed via live WebSocket — real-time book updates trigger preflight checks |
| ATTEMPTS | Pairs submitted to the CLOB in the last 24h |
| FILLS | Completed pairs where both FOK orders filled |
Tip
preflight_sum_asks_above_max — market is fully priced, gate is correctly set below the floor. If book_updates shows 0 for more than 90 seconds, the WebSocket feed has dropped — check Logs → Workers.Backtest note