Two types of Arbitrage
Predexy detects two structural patterns: Direct arbitrage (direct) — The same Yes outcome is priced differently on two platforms. You buy Yes where it is cheap and sell Yes where it is expensive.
Dutch-book arbitrage (dutch_book) — You buy Yes on one platform and No on another, and the combined cost of both is less than 1.00, you are guaranteed a profit if both positions fill.
The type field on every ArbitrageOpportunity object is either direct or dutch_book.
How opportunities are scored
Each opportunity receives anarbitrage_score between 0 and 100. The score combines three dimensions:
- Execution quality — spread magnitude, net profit after fees, fee efficiency across both legs
- Market quality — liquidity depth and 24-hour trading volume on both sides
- Temporal quality — time remaining until market expiry (longer runways score higher)
Classifications
Based on the score and supporting conditions, every opportunity is assigned aclassification:
Lifecycle states
Opportunities are not deleted when they age — they move through a state machine so you always know whether a signal is fresh, fading, or historical:
The
consecutive_misses counter tells you how many scan cycles have passed since the opportunity was last confirmed. Use stale_after_at and expire_after_at as the soft and hard lifecycle boundaries.
Key fields
TheArbitrageOpportunity object carries all the data you need to evaluate a signal:
Risk gate states
Therisk_gate_state field reflects Predexy’s runtime assessment of whether an opportunity should be acted upon:
When
risk_gate_state is degraded or blocked, the risk_gate_reason field provides a machine-readable explanation.
Example opportunity object
Example opportunity object
