Paystream Data API

Historical funding rates and hourly slippage data for perpetual DEXes — Hyperliquid, Lighter, Pacifica, Drift, Aster.

Funding Rate Data

6-month historical hourly funding rates. Each record: { t: number, r: number } where r is the hourly rate.

Trade Slippage Data — v1 (30 days)

Hourly slippage in basis points for the most recent 30 days. Smaller files, good for recent analysis.

v1 = 30-day window  ·  record types: candle (HL, Lighter), trade (Drift), impact (Pacifica)

Trade Slippage Data — v2 (90 days / 3 months)

Hourly slippage in basis points for the most recent 90 days. Larger files, best for trend and seasonality analysis.

v2 = 90-day window (3 months)  ·  same schema as v1

Trade Data Schema

{
  "metadata": {
    "dex": "hyperliquid",
    "generatedAt": "2026-04-01T12:00:00Z",
    "rangeStart": "2026-01-01T00:00:00Z",   // v2: 90 days back
    "rangeEnd": "2026-04-01T00:00:00Z",
    "symbols": 227,
    "records": 406155
  },
  "data": {
    "BTC": [
      // candle record (Hyperliquid, Lighter)
      { "t": 1772449200000, "type": "candle", "range": 6.74, "vol": 45181887.77, "n": 13254 },

      // trade record (Drift) — fill-level slippage vs oracle
      { "t": 1772449200000, "type": "trade", "n": 312, "vol": 8120400, "avg": 4.1, "p50": 3.2, "p95": 9.8, "max": 22.1,
        "b1k": 3.1, "b5k": 4.2, "b10k": 5.8, "b25k": 7.3, "b50k": null },

      // impact record (Pacifica) — impact price at IMN depth
      { "t": 1772449200000, "type": "impact", "buy": 3.2, "sell": 2.9, "spread": 6.1 }
    ]
  }
}

Usage

// JavaScript — fetch BTC slippage (90 days)
const data = await fetch("https://funding-rate-fetcher-resxspb9v-paystream.vercel.app/trade-v2-hyperliquid.json").then(r => r.json())
const btc = data.data["BTC"]
console.log(btc.length, "hourly records")

// Filter to last 30 days
const cutoff = Date.now() - 30 * 86400 * 1000
const recent = btc.filter(r => r.t >= cutoff)
const avgBps = recent.reduce((s, r) => s + r.range, 0) / recent.length
console.log("avg slippage:", avgBps.toFixed(2), "bps")
# Python
import requests
data = requests.get("https://funding-rate-fetcher-resxspb9v-paystream.vercel.app/trade-v2-drift.json").json()
sol = data["data"]["SOL"]
b10k = [r["b10k"] for r in sol if r.get("b10k") is not None]
print(f"SOL avg slippage at $10k: {sum(b10k)/len(b10k):.2f} bps")
# Funding rates — annualize
import requests
data = requests.get("https://funding-rate-fetcher-resxspb9v-paystream.vercel.app/hyperliquid.json").json()
btc = data["data"]["BTC"]["records"]
latest = btc[-1]["r"]
print(f"BTC funding rate: {latest * 24 * 365 * 100:.2f}% APR")