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 4 exchanges in real time, deduplicates symbols, computes annualized returns, and returns opportunities sorted by APR.


List spot-perp opportunities

Returns an array of spot-perp arbitrage opportunities ranked by annualized return. Each opportunity includes the current funding rate, 7-day cumulative rate, APR, 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. 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
{
  "data": [
    {
      "symbol": "DOGE",
      "exchange": "Binance",
      "fundingRate": 0.000320,
      "cumRate7d": 0.006720,
      "apr": 1.1680,
      "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.5475,
      "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"
  }
}

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 (Binance, OKX, Bybit, or Bitget).

  • 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

    Annualized return as a decimal (e.g., 0.3 = 30%). Computed by extrapolating the current rate across all intervals in a year.

  • 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 funding rate >= 0) or long (sell spot, long perp — when funding rate < 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.

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

Was this page helpful?