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. Predexy 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:
ClassificationScoreAdditional conditions
actionable≥ 70Positive net spread, combined liquidity > $500
informational40–69Below score threshold or low liquidity
noise< 40Not recommended for further review

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:
StatusMeaning
activeRecently re-observed in the latest scan cycle
staleMissed one or more scan cycles; treat with caution
resolvedHard-expired or missed the maximum consecutive miss threshold
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:
FieldTypeDescription
typedirect | dutch_bookArbitrage strategy detected
buy_pricenumber (0–1)Price to buy the outcome on buy_platform
sell_pricenumber (0–1)Price to sell the outcome on sell_platform
net_spreadnumberRaw spread minus platform fees
estimated_profitnumberEstimated profit per $100 deployed
annualized_returnnumberReturn annualized based on time to expiry
arbitrage_scoreinteger (0–100)Multi-factor quality score
classificationstringactionable, informational, or noise
statusstringactive, stale, or resolved
risk_gate_statestringallowed, degraded, or blocked
fees.buy_feenumberFee fraction on the buy leg (e.g. 0.02 = 2%)
fees.sell_feenumberFee fraction on the sell leg
fees.total_feesnumberCombined round-trip fee fraction

Risk gate states

The risk_gate_state field reflects Predexy’s runtime assessment of whether an opportunity should be acted upon:
StateMeaning
allowedNo runtime flags; opportunity passes all checks
degradedData quality or platform-level concerns; proceed with extra caution
blockedOpportunity is suppressed; do not act
When risk_gate_state is degraded or blocked, the risk_gate_reason field provides a machine-readable explanation.
{
  "id": "arb_poly_limit_abc123",
  "question_title": "Will BTC reach $100k by 2026?",
  "type": "direct",
  "buy_platform": { "slug": "limitless", "name": "Limitless" },
  "sell_platform": { "slug": "polymarket", "name": "Polymarket" },
  "buy_price": 0.42,
  "sell_price": 0.48,
  "spread": 0.06,
  "spread_bps": 600,
  "net_spread": 0.02,
  "estimated_profit": 2.00,
  "annualized_return": 24.5,
  "arbitrage_score": 78,
  "classification": "actionable",
  "status": "active",
  "risk_gate_state": "allowed",
  "fees": {
    "buy_fee": 0.02,
    "sell_fee": 0.02,
    "total_fees": 0.04
  }
}