Install
openclaw skills install polymarket-coherence-arbDetects logically-linked Polymarket markets that price incoherently (a mutually-exclusive, exhaustive set whose YES prices don't sum to ~1) and trades the cheap/rich legs back toward coherence. No external data — arbitrages Polymarket against itself. Exclusivity is confirmed from market text; unconfirmed sets are alerted, never arbed. Sim by default.
openclaw skills install polymarket-coherence-arbFinds sets of related Polymarket markets that should satisfy a probability constraint but don't, and trades the cheap/rich legs back toward coherence — arbitraging Polymarket against itself.
No sharp book to outrun, no external data, low latency pressure. If the YES prices of a complete, mutually-exclusive set sum materially above 1, the set is collectively overpriced (buy NO on the richest leg); if materially below 1, it's underpriced (buy YES on the cheapest leg).
COHERENCE_GROUPS to trade explicit market-id groups you assert are
mutually exclusive (e.g. a tournament/final ladder). Format:
"id1,id2,id3,id4; idA,idB,idC" — ; separates groups, , separates legs.discover_sets() in discovery.py is where you add other relationships
(win-tournament ≤ reach-final, parlay consistency, etc.). The skill handles pricing, the
coherence test, the context/exposure gates, and execution — you supply which markets are linked.This is not the WC Group Repricer: there's no repricing-timing mechanism and no Elo tiebreak — it's pure price-coherence, leg picked by price alone, generalizable beyond the World Cup.
$SIM; real trading requires --live and --venue polymarket
and a claimed, wallet-linked Simmer agent. --live and --dry-run are mutually exclusive.open_exposure + cost > DAILY_BUDGET_USD. State updates are lock-protected (fcntl.flock), and
live vs dry-run state live in separate files (state_live.json / state_dry.json).live=False) rather
than stubbing success.$SIM — see Known limitations).skill_slug, a public reasoning string, and
signal_data (Autoresearch backtest-ready).| Var | Default | Meaning |
|---|---|---|
TRADING_VENUE | sim | sim or polymarket (with --live) |
MAX_TRADE_USD | 20 | per-leg cap |
DAILY_BUDGET_USD | 100 | open-exposure cap |
MIN_COHERENCE_GAP | 0.05 | min ` |
MAX_SLIPPAGE_PCT | 0.03 | skip legs whose context slippage exceeds this |
COHERENCE_GROUPS | (unset) | optional explicit market-id groups (see above) |
python coherence_arb.py --dry-run # default; sim paper pass
python coherence_arb.py --status # show positions/exposure
python coherence_arb.py --live --venue polymarket # real money (after sim record)
Requires SIMMER_API_KEY.
$SIM (LMSR) has no order book — ask/spread/depth gates only bind on the real venue; sim
validates logic, not microstructure. Capturing this edge cleanly often needs near-simultaneous
fills, which $SIM cannot model — validate in live=False paper mode against real spreads.COHERENCE_GROUPS or a discover_sets() remix.MIN_COHERENCE_GAP ships at a reasonable
default and is meant to be tuned in sim / by Autoresearch, not trusted blindly.No performance claims are made or implied. This skill describes what it does, not what it returns.