Cross-Market Arb
Cross-Market Arb detects logically constrained relationships between pairs of Polymarket binary markets — e.
What it does
Cross-Market Arb detects logically constrained relationships between pairs of Polymarket binary markets — e.g. 'Candidate A wins primary' should price at or below 'Candidate A wins general', or 'Team X advances to semi-final' should price at or below 'Team X wins tournament'. When the logical constraint is violated by more than tolerance_bps (after fee buffer), the bot emits a pair of OrderIntents (one per market) to exploit the mispricing. Market pairs must pass manual review before the bot will trade them (require_manual_pair_review=true). This is a user-controlled execution tool; it does not copy trades or make performance claims.
Pipeline placement
Applies to: Manually reviewed pairs of binary markets with logical price constraints (e.g. nominee ≤ winner, team advances ≤ tournam
Why it matters
| If this fails | Consequence |
|---|---|
| Logically distinct markets paired incorrectly | A pair that looks logically constrained but has different resolution conditions may diverge legitimately. Trading a false constraint produces losses when both markets resolve consistently with their actual rules. |
| One market resolves while the paired order is still resting | If market A resolves YES and the paired market B order has not filled, the bot holds a one-sided position with no offsetting settlement path. |
| Tolerance_bps too tight on high-spread markets | The bot may fire on transient spread noise rather than genuine constraint violations, incurring fee costs with no structural edge. |
| feeRateBps present on signed order (V1 pattern) | CTFExchangeV2 rejects orders with feeRateBps. Fees are operator-set at match time. No leg intent may contain this field. |
Inputs
Polymarket inputs
| Input | Source | Required | Use |
|---|---|---|---|
| Best bid/ask for each market in registered pairs | ws_market (CLOB WebSocket) | required | Monitor for constraint violations: p_market_A > p_market_B + tolerance_bps when A implies B. |
| Market metadata: condition ID, outcome token IDs, resolution rules, category | gamma | required | Validate that pair logic and resolution conditions align before registering a market pair. |
| Market open/closed/resolved status | clob_public | required | Skip pairs where either market is closed or resolved; cancel resting legs immediately. |
| Top-of-book depth on both markets | clob_public | required | Size each leg to min(depth, per-leg budget from liquidity budget). |
| Embedding-based similarity score (e5-large-v2 or similar) | internal | optional | Cross-check that proposed pair markets are semantically related; flag low-similarity pairs for human review. |
Internal inputs
| Input | Source | Required | Use |
|---|---|---|---|
| KillSwitch active flag | KillSwitch | required | Abort all intent emission immediately if KillSwitch is active. |
| Registered market-pair registry (manually reviewed) | internal config | required | Bot only evaluates pairs in the approved registry. Pairs require human review before entry. |
| Builder code bytes32 | internal config | required | Injected into builder field on every signed V2 OrderIntent. |
Authority
What this bot is permitted to do
State
Readiness
Limited live
Status
beta
Class
Alpha Strategy
Default mode
limited_live
Developer owner
Polytraders core — Strategy pod
Capital impact
Direct
Reason codes emitted
| Code | Severity | Meaning | Action |
|---|---|---|---|
| CROSS_MARKET_ARB_EDGE_DETECTED | INFO | Logical constraint violation exceeds tolerance_bps after fee buffer. Paired OrderIntents emitted. | Emit two FOK OrderIntents (one per market in the pair). |
| CROSS_MARKET_ARB_NO_EDGE | INFO | Violation is below the 5 bps hard floor. No trade opportunity exists after fees. | Skip; emit sampled DecisionReport. |
| CROSS_MARKET_ARB_VIOLATION_MARGINAL | WARN | Violation is between 5 and 30 bps (warning threshold). Trade is marginal. | Emit OrderIntents at 50% leg size; log warning. |
| CROSS_MARKET_ARB_PAIR_NOT_APPROVED | HARD_REJECT | Market pair is not in the manually reviewed approved registry. | Skip; no OrderIntents emitted. |
| CROSS_MARKET_ARB_LOW_SIMILARITY | WARN | Embedding similarity score for the proposed pair is below min_similarity_score warning threshold. | Block pair auto-registration; require additional manual review. |
| STALE_MARKET_DATA | HARD_REJECT | Book snapshot older than 5s for either market in the pair. | Skip; no OrderIntents; cancel resting legs if any. |
| MARKET_CLOSED | HARD_REJECT | Either market in the pair is closed or resolved. | Skip; cancel resting legs; deactivate pair until re-reviewed. |
| KILL_SWITCH_ACTIVE | HARD_REJECT | Global kill switch is active. | Skip all pairs; no OrderIntents emitted. |
| PARAMETER_CHANGE_REQUIRES_APPROVAL | HARD_REJECT | A config change would push a parameter past its locked hard limit. | Reject config change; do not apply. |
Related bots in Strategy
Used by
Reverse index — strategies that currently reference strat.cross-market-arb. If you change this bot's authority or reason codes, these strategies must re-pass shadow.
| Strategy | State | Activity |
|---|---|---|
| NBA props — line-shop | demo-wired | last triggered 47m ago |
| Crypto Q2 — basket rebalance | frozen | last triggered 7m ago |
Showing 2 of 2 · demo-wired ≠ production-live
Why this matters
Strategy bots does NOT sign, route, or directly submit orders to the chain. Understanding the authority boundary prevents misuse and makes promotion-gate reviews faster and more reliable. View raw spec JSON →