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.
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
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 asnetFundingRate × 8760(per-hour net rate × hours per year). Gross of trading fees and the inter-exchange price spread — seenetApr.
- Name
netApr- Type
- number
- Description
aprnet of the one-time inter-exchange price spread, as a decimal.nullwhen 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;0when prices were unavailable.
- Name
oiLong- Type
- number
- Description
Open interest in USD on the long exchange. Best-effort from live tickers;
0when unavailable.
- Name
oiShort- Type
- number
- Description
Open interest in USD on the short exchange. Best-effort from live tickers;
0when unavailable.
- Name
nextSettlement- Type
- string
- Description
ISO 8601 timestamp of the next funding settlement.
- Name
intervalHours- Type
- number
- Description
Interval basis for
netFundingRate. Always1, because net rates are normalized to per-hour.longRateandshortRateremain 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
}