Skip to content

RWA Perps

RWA perps are perpetual futures on real-world assets: equities like TSLA and NVDA, pre-IPO names, ETFs, indices, commodities and FX. They trade 24/7 while the underlying prints ~32.5 market hours a week. The Sharpe API normalizes funding and carry across 19 venues into one interval-true, mechanism-true endpoint: CEXs (Binance, Bybit, OKX, Bitget, Gate, Kraken, Coinbase), perp DEXs (Aster, Lighter, Extended, GRVT, ApeX, Pacifica, Orderly), Hyperliquid HIP-3 builder markets, and the borrow-based venues Ostium and Avantis. Settlement intervals genuinely differ per venue and per market (the same stock can fund every 4 hours on one venue and every 8 on another), so every rate is annualized from the venue's own reported interval.


GET/v1/rwa-perps/rates

Get rwa-perp rates

A single endpoint that returns current per-market snapshots, session-tagged settlement history, or summary stats depending on the type parameter.

Query parameters

  • Name
    type
    Type
    string
    Description

    The kind of rwa-perp data to return. One of current, history, stats. Defaults to current.

  • Name
    symbol
    Type
    string
    Description

    Underlying equity ticker (e.g., TSLA, NVDA, MSTR). Optional filter for current. Required for history. GOOG (Ostium) and GOOGL (Hyperliquid, Kraken) are different share classes and are never merged.

  • Name
    venue
    Type
    string
    Description

    Filter to a single venue, e.g. Binance, Bybit, OKX, Kraken, Coinbase, Aster, Lighter, Ostium, or a Hyperliquid HIP-3 builder market. Registry-driven rather than a fixed enum.

  • Name
    days
    Type
    integer
    Description

    Lookback window in days for type=history. Integer from 1 to 90. Defaults to 7. Ignored for other types.

  • Name
    limit
    Type
    integer
    Description

    Maximum records per page (1 to 5000). Enables cursor pagination.

  • Name
    cursor
    Type
    string
    Description

    Opaque pagination cursor from a previous response.

Mechanism semantics

Every row carries a mechanism field:

  • builder_set (the three Hyperliquid HIP-3 builder venues: Hyperliquid, Kinetiq, Paragon): the market deployer runs the oracle; funding is Hyperliquid-standard, settled hourly. funding_rate is the fraction per interval; positive means longs pay shorts.
  • standard (most CEXs and perp DEXs): classic long-pays-short perp funding, clamped per instrument where the venue publishes a cap. This covers Binance, Bybit, OKX, Bitget, Gate, Kraken, Coinbase, Aster, Lighter, Extended, GRVT, ApeX, Pacifica, and Orderly. Venue-internal caps are retained for product calculations but the default API payload intentionally omits internal meta.
  • funding_plus_borrow (Ostium, Avantis): these stock pairs charge no long/short funding; the holding cost is a carry-anchored rollover accrued per block and charged to both sides. It is reported as borrow_apr_annual and is deliberately excluded from cross-venue funding spreads: a both-sides cost is not sign-comparable with a long-pays-short transfer. Avantis charges it on collateral rather than notional; that source detail is retained internally rather than returned in the default payload.

funding_apr annualizes each venue's own settlement interval (rate × 8760 / interval_hours), never an assumed 8-hour interval.

History and session phases

type=history returns settled funding for Hyperliquid and Kraken (Ostium has no per-settlement feed). Each settlement is tagged with the equity-session phase it occurred in, computed in exchange time (America/New_York, DST-correct): market, after_hours, weekend, or holiday. This is the raw material for weekend-carry analysis, because perps trade 168 hours a week against ~32.5 hours of underlying price discovery.

Freshness

Rates refresh every 30 minutes. Rows are flagged is_stale after 90 minutes without a sync, and responses carry X-Data-Stale, X-Data-As-Of, and X-Freshness-Sla-Seconds headers.

Request

GET
/v1/rwa-perps/rates
curl -G https://www.sharpe.ai/api/v1/rwa-perps/rates \
  -H "Authorization: Bearer $SHARPE_API_KEY" \
  -d type=current \
  -d symbol=TSLA

Response (type=current)

{
  "data": [
    {
      "venue": "Hyperliquid",
      "market": "xyz:TSLA",
      "symbol": "TSLA",
      "mechanism": "builder_set",
      "funding_rate": 0.0000071158,
      "interval_hours": 1,
      "funding_apr": 0.062334,
      "borrow_apr_annual": null,
      "mark_price": 306.63,
      "oracle_price": 306.51,
      "open_interest_usd": 44868000,
      "next_funding_time": "2026-07-28T19:00:00.000Z",
      "updated_at": "2026-07-28T18:56:03.389Z",
      "is_stale": false
    },
    {
      "venue": "Ostium",
      "market": "TSLA",
      "symbol": "TSLA",
      "mechanism": "funding_plus_borrow",
      "funding_rate": null,
      "funding_apr": null,
      "borrow_apr_annual": 0.048442,
      "is_stale": false
    }
  ],
  "meta": { "request_id": "…", "timestamp": "…", "elapsed_ms": 12 }
}

Response (type=history)

{
  "data": [
    {
      "venue": "Kraken",
      "market": "PF_TSLAXUSD",
      "symbol": "TSLA",
      "rate": 0.000035036,
      "interval_hours": 1,
      "session_phase": "market",
      "settled_at": "2026-07-28T18:00:00.000Z"
    }
  ],
  "meta": { "request_id": "…", "timestamp": "…", "elapsed_ms": 12 }
}

Was this page helpful?