Arbitrage Bot
The Arbitrage Bot continuously scans binary markets for a classic risk-free edge: when the best ask on YES plus the best ask on NO sum to less than $1, you can buy one share of each and be guaranteed $1 back at resolution.
- Risk-free complement (YES + NO) arbitrage
- Continuous scanning of the most liquid markets
- Fee-aware net-edge detection
- Executes both legs and holds to resolution
- Per-arb and total exposure caps
- Live opportunity table
The strategy
In a binary market exactly one outcome resolves to $1. So a complete set — one YES share and one NO share — always pays exactly $1. If you can assemble that set for less than $1, the difference is locked-in profit with no directional risk:
net edge = $1 − ask(YES) − ask(NO) − fees
The bot only acts when the net edge (after modeled fees) clears your minimum threshold, then buys both legs up to your size limits and holds them to settlement.
Settings
| Setting | Default | What it does |
|---|---|---|
minEdgePercent | 0.5 | Minimum net edge (after fees) required to execute, as a %. |
maxSetSize | 100 | Max shares per outcome in a single arb. |
maxPositionUsd | 200 | Max USDC deployed in one arbitrage. |
maxTotalExposureUsd | 2000 | Max USDC across all open arbs. |
maxMarketsScanned | 80 | Number of markets scanned each poll. |
minLiquidityUsd | 500 | Skip markets thinner than this. |
feeRatePercent | 1 | Fee rate used in the edge math (0–1.8 by category). |
pollIntervalSeconds | 5 | Seconds between scans. |
Why it's often idle
Simple complement arbitrage is heavily competed. In practice spreads are tight and true opportunities are rare and short-lived, so the bot frequently scans and finds nothing — that is correct behaviour. It will never fabricate a trade just to look busy.
Live leg-fill risk
The two legs are not filled atomically. The bot uses fill-or-kill orders and unwinds a partial fill, but live multi-leg execution still carries slippage risk. Add a wallet key in Settings and start with small sizes.