/v1/arb/live every few seconds,
filters to the two tiers we audit publicly:
tier == "logical"— math-guaranteed (yes_ask + no_ask < $1)tier == "endgame"— last 0-120 s, > 2σ past strike, dual-oracle confirmed
py-clob-client (Polymarket’s official SDK).
Backtest the loop against the public audit before betting capital.
The /audit page shows the realised
PnL of every signal tier — model EV vs reality, unedited.
Prerequisites
.env:
The loop
bot.py
What this gets you
- ~3-second loop polling all live signals
- Skip signals whose net EV is < $0.005/share (fees eat them)
- Skip markets already traded this session
- For
BUY_BOTH(logical), automatically place the opposite leg too — that’s what locks the math guarantee
What it doesn’t handle
This is the minimum viable loop. Production-grade additions:| Gap | Fix |
|---|---|
| Stop-loss / unwind on adverse fills | Subscribe /v1/snapshots WS and check positions every snapshot |
| Polymarket gas reservations | Track MATIC balance; pause if < 0.5 |
| Bankroll management | Cap concurrent open positions; size by Kelly fraction |
| Idempotency on retry | Persist seen_markets to disk / Redis |
| Risk gates | Sanity-check expected_pnl_per_share / fill_price < 0.4 (avoid suspicious 10x edges that are usually wrong oracle data) |
Reality check
Even on the math-guaranteedlogical tier, you’re racing HFT. Expect
30-60% submission success in the first week as you tune latency.
The audit page shows our detector’s
record — your execution will be a few % lower than that.
The same /v1/arb/live endpoint also returns tier="stable" and
tier="stale" rows. We surface them because the dashboard reads the
same JSON shape, but don’t trade them — they’re public-audit-confirmed
as ~$0 EV after fees. The honest tier label is the most useful field
on the whole response.