Recipe 47 of 65
Which Hyperliquid coin had the best funding carry over the last 30 days?
Ask /v1/hyperliquid/symbols/hourly for up to 64 perps with days=30 and rank them by mean hourly funding_rate; the share of positive hours says how steady the carry was.
GET /v1/hyperliquid/symbols/hourly answers it in one call per 64 coins: one row per perp and hour with the close,
open interest, funding_rate and premium, up to 400 days back. Average funding_rate per symbol over days=30 and
sort. A positive rate means longs pay shorts, so the top of the list is where a short perp, hedged with spot, collected
the most. The full parameter list is on Coins hourly.
Quick answer
Ask for the coins you want to compare over days=30 and rank them on your side.
# 30 days of hourly funding for six perps, ranked by mean hourly rate, with the share of hours it was positive
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC,ETH,SOL,HYPE,XRP,DOGE&days=30" \
| jq '.rows | group_by(.[1]) | map({symbol: .[0][1], hours: length, mean_hourly: ([.[][4] | select(. != null)] | add / length), positive_share: (([.[][4] | select(. != null and . > 0)] | length) / length)}) | map(.apr_pct = .mean_hourly * 24 * 365 * 100) | sort_by(-.mean_hourly)'Example response
Captured from the live API on 2026-10-24 at 17:16 UTC, trimmed to the first 3 DOGE rows of 4,320 (6 symbols x 720 hours).
Each row is an array in columns order; ts is epoch seconds and funding_rate is a fraction per hour (0.0000125 is
0.00125% an hour). Run through the jq filter, this capture ranked DOGE first at a mean of 0.0000117 an hour (10.2% a
year, positive in 94% of hours), then XRP 9.0%, BTC 8.2%, ETH 8.1%, HYPE 8.0% and SOL 6.8%.
{
"symbols": ["BTC", "ETH", "SOL", "HYPE", "XRP", "DOGE"],
"tz": "UTC",
"source": "1h fills rollup + hourly asset summary",
"start": 1790270179,
"end": 1792862179,
"columns": ["ts", "asset", "close", "open_interest", "funding_rate", "premium"],
"rows": [
[1790272800, "DOGE", 0.096784, 1241308529.6666667, 1.2500000000000004e-05, 0.0005359872416666666],
[1790276400, "DOGE", 0.096298, 1254175347.5, 1.2500000000000004e-05, 0.0005398082333333334],
[1790280000, "DOGE", 0.095875, 1250624021.5, 1.2500000000000004e-05, 0.0005331478083333334]
]
}Variations
Every perp, in batches of 64. List the core perps that traded in the last hour, then pass them to symbols 64 at a time.
# comma-separated core perp tickers that traded in the last hour
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?dex=HL" \
| jq -r '[.candles[] | select(.symbol | startswith("#") | not) | .symbol] | join(",")'A pinned window. days counts back from the server's clock at call time. Pin start and end (exclusive) to rerun the same ranking.
# September 2026 only
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC,ETH,SOL,HYPE,XRP,DOGE&start=2026-09-01T00:00:00Z&end=2026-10-01T00:00:00Z"What one wallet actually received. The panel is the market rate. A wallet's real payments, per hour and coin, are on its funding history.
# the funding one wallet paid or received; negative payment_usd = the wallet paid
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/wallets/0x25773676902085225ae5751075e4161369334897/funding?limit=100"Before you rely on it
funding_rate is an hourly average of samples, not the settled payment
The panel's funding_rate is the venue's published rate, sampled about every 5 minutes and averaged over the hour. It is
not the settlement itself, and the newest row is the hour still in progress.
A carry trade also pays the spread on both legs and carries price risk on the hedge, none of which is in this number.
Rows exist only for hours with a trade
The join starts from the traded close, so an hour with no fill in that perp has no row at all, and a missing funding
or open-interest sample arrives as null, never 0. The filter skips the nulls. Rows come sorted by symbol, then hour,
not in the order you listed the symbols. More than 64 symbols, or a window over 256,000 rows, is refused with a 400.
Ask your agent
No MCP tool returns funding history: perp_funding gives current rates only, so run the Quick answer call.