Skip to main content
All topics

Cross-Exchange Arbitrage

Detect and execute spread arbitrage between exchanges — admin-gated, dry-run by default.

What it detects

The arbitrage scanner watches the same asset across all connected exchanges and flags spread opportunities larger than the round-trip cost (fees + slippage + transfer).

Detection runs continuously on cron and writes to arb_opportunities. Opportunities are ranked by net spread (after taker fees on both legs). Top-of-book scan covers BTC / ETH / SOL / BNB / XRP across Bybit, OKX, Binance, Bitget, HTX (extensible).

Execution gating

Execution is fully wired and admin-controlled with two flags:

  • arb_execution_enabled — master switch (default off)
  • arb_dry_run — when on, "Execute top" logs a row to arb_executions without placing real orders. Required for the first 28 days of telemetry.

Live execution remains Institutional-tier + per-account credential gated. We never auto-fire arbitrage from a shared key.

Why dry-run first?

Before flipping arb_dry_run off, we collect ≥4 weeks of telemetry confirming:

  • Round-trip economics are positive after all real-world costs
  • No exchange has consistently bad fills that erode the edge
  • Withdrawal / transfer windows match the opportunity half-life
  • Risk on a stuck transfer is bounded by exchange counterparty exposure