Skip to main content
When the same prediction market outcome trades at different prices on different platforms, you can theoretically buy where the price is low and sell where it is high, locking in a risk-free profit. Arbitrage continuously scans all seven integrated platforms and surfaces these discrepancies as structured, scored opportunities — giving you the intelligence to act, without executing any trades on your behalf.
Predexy is a market intelligence tool. It identifies and scores potential arbitrage opportunities but does not execute trades, manage positions, or move any funds. All execution decisions and actions are entirely your responsibility.

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.Becauseoneofthemmustresolveto1.00. Because one of them must resolve to 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 an arbitrage_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)
The score is designed to rank practically useful opportunities above ones that look attractive on paper but are undermined by thin liquidity, high fees, or imminent expiry.
Use min_score when querying the opportunities endpoint to filter out low-quality signals before they reach your workflow. The default is 40 (informational and above).

Classifications

Based on the score and supporting conditions, every opportunity is assigned a classification:

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

The ArbitrageOpportunity object carries all the data you need to evaluate a signal:

Risk gate states

The risk_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.