Skip to content

Cross-Exchange Arbitrage

Cross-exchange arbitrage exploits funding rate differentials for the same asset across two exchanges. By going long on the exchange paying you and short on the exchange charging you, you capture the net rate as profit. This endpoint scans 10 exchanges, pairs the best long/short combination per asset, and returns opportunities sorted by APR.


GET/v1/arbitrage/cross-exchange

List cross-exchange opportunities

Returns an array of cross-exchange arbitrage opportunities ranked by annualized return. Only assets listed on at least 2 of the selected exchanges are included. Stale rates older than 6 hours are excluded.

Query parameters

  • Name
    exchanges
    Type
    string
    Description

    Comma-separated list of exchanges to include. Supported values: Binance, OKX, Bybit, Bitget, Gate.io, KuCoin, CoinEx, BingX, MEXC, HTX. Omit to include all 10 exchanges.

  • Name
    minOiUsd
    Type
    number
    Description

    Optional liquidity floor in USD. When set, only pairs whose smaller-leg open interest meets this threshold are returned. Omit for no filter.

Request

GET
/v1/arbitrage/cross-exchange
curl -G https://www.sharpe.ai/api/v1/arbitrage/cross-exchange \
  -H "Authorization: Bearer sk_live_your_key_here" \
  -d exchanges=Binance,OKX,Bybit

Response

{
  "data": [
    {
      "symbol": "DOGE",
      "longExchange": "Gate.io",
      "shortExchange": "Binance",
      "longRate": -0.000250,
      "shortRate": 0.000350,
      "netFundingRate": 0.000075,
      "apr": 0.657,
      "netApr": null,
      "spreadRate": 0,
      "oiLong": 0,
      "oiShort": 0,
      "nextSettlement": "2026-03-28T08:00:00Z",
      "intervalHours": 1
    },
    {
      "symbol": "ETH",
      "longExchange": "Bybit",
      "shortExchange": "OKX",
      "longRate": -0.000050,
      "shortRate": 0.000200,
      "netFundingRate": 0.00003125,
      "apr": 0.27375,
      "netApr": null,
      "spreadRate": 0,
      "oiLong": 0,
      "oiShort": 0,
      "nextSettlement": "2026-03-28T08:00:00Z",
      "intervalHours": 1
    }
  ],
  "meta": {
    "request_id": "req_def456ghi789jklm",
    "timestamp": "2026-03-28T07:45:00Z",
    "elapsed_ms": 12
  }
}

Response fields

Each object in the data array represents the best long/short exchange pair for a single asset.

  • Name
    symbol
    Type
    string
    Description

    The base asset ticker (e.g., BTC, ETH, DOGE).

  • Name
    longExchange
    Type
    string
    Description

    The exchange where you open the long position (receiving funding or paying the least).

  • Name
    shortExchange
    Type
    string
    Description

    The exchange where you open the short position (receiving the most funding).

  • Name
    longRate
    Type
    number
    Description

    Current funding rate on the long exchange as a decimal.

  • Name
    shortRate
    Type
    number
    Description

    Current funding rate on the short exchange as a decimal.

  • Name
    netFundingRate
    Type
    number
    Description

    The net funding rate you capture, normalized to a per-hour decimal. Each leg's raw rate is divided by its own funding interval before subtracting, so pairs with different intervals (1h/4h/8h) compare correctly.

  • Name
    apr
    Type
    number
    Description

    Gross annualized funding return as a decimal (e.g., 0.16 = 16%, 26.82 = 2682%). Computed as netFundingRate × 8760 (per-hour net rate × hours per year). Gross of trading fees and the inter-exchange price spread — see netApr.

  • Name
    netApr
    Type
    number
    Description

    apr net of the one-time inter-exchange price spread, as a decimal. null when live ticker prices were unavailable for the pair.

  • Name
    spreadRate
    Type
    number
    Description

    Signed inter-exchange price spread as a decimal ((longPrice − shortPrice) / mid). Best-effort from live tickers; 0 when prices were unavailable.

  • Name
    oiLong
    Type
    number
    Description

    Open interest in USD on the long exchange. Best-effort from live tickers; 0 when unavailable.

  • Name
    oiShort
    Type
    number
    Description

    Open interest in USD on the short exchange. Best-effort from live tickers; 0 when unavailable.

  • Name
    nextSettlement
    Type
    string
    Description

    ISO 8601 timestamp of the next funding settlement.

  • Name
    intervalHours
    Type
    number
    Description

    Interval basis for netFundingRate. Always 1, because net rates are normalized to per-hour. longRate and shortRate remain in their exchanges' native per-interval terms.

Single opportunity

{
  "symbol": "BTC",
  "longExchange": "KuCoin",
  "shortExchange": "Binance",
  "longRate": -0.000030,
  "shortRate": 0.000120,
  "netFundingRate": 0.00001875,
  "apr": 0.16425,
  "netApr": 0.16385,
  "spreadRate": 0.0004,
  "oiLong": 4200000,
  "oiShort": 9800000,
  "nextSettlement": "2026-03-28T16:00:00Z",
  "intervalHours": 1
}

Was this page helpful?