Skip to content

Spot-Perp Arbitrage

Spot-perp arbitrage captures the funding rate paid between long and short perpetual futures holders by simultaneously holding an offsetting spot position. This endpoint scans 10 exchanges, deduplicates symbols, verifies the required spot or margin leg, computes annualized returns, and returns opportunities sorted by fee-adjusted net APR.


GET/v1/arbitrage/spot-perp

List spot-perp opportunities

Returns an array of spot-perp arbitrage opportunities ranked by fee-adjusted net APR. Each opportunity includes the current funding rate, 7-day cumulative rate, gross APR, diagnostic basis, portfolio direction, and next settlement time. Stale rates older than 6 hours are excluded.

Query parameters

  • Name
    exchange
    Type
    string
    Description

    Filter by exchange. One of all, Binance, OKX, Bybit, Bitget, Gate.io, KuCoin, MEXC, BingX, HTX, CoinEx. Defaults to all.

  • Name
    direction
    Type
    string
    Description

    Filter by portfolio direction. One of all, long, short. Defaults to all. A short direction means buy spot and short the perp (when funding rate is positive); long means sell spot and long the perp (when funding rate is negative).

Request

GET
/v1/arbitrage/spot-perp
curl -G https://www.sharpe.ai/api/v1/arbitrage/spot-perp \
  -H "Authorization: Bearer sk_live_your_key_here" \
  -d exchange=all \
  -d direction=all

Response

{
  "data": [
    {
      "symbol": "DOGE",
      "exchange": "Binance",
      "fundingRate": 0.000320,
      "cumRate7d": 0.006720,
      "apr": 0.3504,
      "basisRate": 0.0006,
      "netApr": 0.3260667,
      "intervalHours": 8,
      "direction": "short",
      "portfolio": {
        "spotSide": "buy",
        "perpSide": "short"
      },
      "nextFundingTime": "2026-03-28T08:00:00Z"
    },
    {
      "symbol": "ETH",
      "exchange": "OKX",
      "fundingRate": 0.000150,
      "cumRate7d": 0.003150,
      "apr": 0.16425,
      "basisRate": null,
      "netApr": 0.1399167,
      "intervalHours": 8,
      "direction": "short",
      "portfolio": {
        "spotSide": "buy",
        "perpSide": "short"
      },
      "nextFundingTime": "2026-03-28T08:00:00Z"
    }
  ],
  "meta": {
    "request_id": "req_abc123def456ghij",
    "timestamp": "2026-03-28T07:45:00Z",
    "elapsed_ms": 12
  }
}

Response fields

Each object in the data array represents a single arbitrage opportunity on one exchange.

  • Name
    symbol
    Type
    string
    Description

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

  • Name
    exchange
    Type
    string
    Description

    Exchange identifier (e.g. Binance, OKX, Bybit, Bitget, Gate.io, KuCoin, MEXC, BingX, HTX, or CoinEx).

  • Name
    fundingRate
    Type
    number
    Description

    Current funding rate as a decimal (e.g., 0.0001 = 0.01%). This is the per-interval rate.

  • Name
    cumRate7d
    Type
    number | null
    Description

    Cumulative funding rate over the last 7 days. null if no accumulated data is available.

  • Name
    apr
    Type
    number
    Description

    Gross annualized funding return as a decimal (e.g., 0.3 = 30%). Computed by extrapolating the current rate across all intervals in a year. Gross of trading fees. See netApr.

  • Name
    basisRate
    Type
    number | null
    Description

    Spot-perp basis as a decimal: (perpPrice − spotPrice) / spotPrice. Best-effort from live prices; null when prices were unavailable (never a silent 0).

  • Name
    netApr
    Type
    number | null
    Description

    apr net of four estimated execution fees (open and close both spot and perp) annualized over the 30-day default hold, as a decimal. null only when apr is not finite.

  • Name
    intervalHours
    Type
    number
    Description

    Hours between funding settlements. Typically 8, but some exchanges use 1 or 4.

  • Name
    direction
    Type
    string
    Description

    Portfolio direction: short (buy spot, short perp) when the funding rate is >= 0, or long (sell spot, long perp) when the funding rate is < 0.

  • Name
    portfolio
    Type
    object
    Description

    Breakdown of the hedge portfolio. Contains spotSide (buy or sell) and perpSide (long or short).

  • Name
    nextFundingTime
    Type
    string | null
    Description

    ISO 8601 timestamp of the next scheduled funding settlement, or null if unavailable.

Single opportunity

{
  "symbol": "BTC",
  "exchange": "Bybit",
  "fundingRate": 0.000100,
  "cumRate7d": 0.002100,
  "apr": 0.1095,
  "basisRate": 0.0004,
  "netApr": 0.0851667,
  "intervalHours": 8,
  "direction": "short",
  "portfolio": {
    "spotSide": "buy",
    "perpSide": "short"
  },
  "nextFundingTime": "2026-03-28T16:00:00Z"
}

Was this page helpful?