DATA/FUNDING & OI
Phase 1 · Hyperliquid hourly funding

Funding on one clock, in one unit.

Hyperliquid settles funding every hour. Many venues settle every eight hours, and some every four. We record every print as published, then add an hourly rate, an annualized rate and an as-of grid so funding and open interest from different venues line up row for row.

FUNDING · BTC-PERP · rate_1hSYNTHETIC PREVIEW
negative 1 cell = 1 hour, as-of positive

Eight venues, eight schedules, one grid.

Every venue publishes funding on its own schedule and in its own unit: a rate per hour, a rate per eight hours, a predicted rate that updates every few seconds. Comparing them raw means comparing different things.

Each funding row in our archive carries the venue's original rate and interval, plus rate_1h and rate_ann. On top of that, the hourly grid gives one row per venue per UTC hour, built only from prints we had captured by that hour.

Venues8planned
Grid1hUTC, as-of
Annualized8,760h / year

From a venue rate to an annual rate.

We keep the raw number untouched and add two columns next to it. Annualization is simple, without compounding, so it can be reversed exactly.

# per funding print
interval_h = interval_s / 3600
rate_1h    = rate / interval_h
rate_ann   = rate_1h × 24 × 365      # = rate_1h × 8,760

# example: an 8h venue prints 0.0100%
rate_1h    = 0.0100% / 8 = 0.00125%
rate_ann   = 0.00125% × 8,760 = 10.95%

interval_s comes from the venue's contract specs as they stood at that print, versioned in instruments. Venues change intervals per symbol, sometimes moving a contract from 8h to 4h during volatile markets, and the normalized columns follow the change on the print where it happened.

Where a venue accrues perpetual funding continuously and quotes an 8h reference rate, we record the reference rate with interval_s = 28800, and predicted rows carry the funding accrued so far in the current 8h reference period in accrual.

VenueIntervalraterate_1hrate_ann
Hyperliquid1h0.0013%0.00130%11.39%
Venue A8h0.0100%0.00125%10.95%
Venue B8h0.0093%0.00116%10.18%
Venue C8h0.0082%0.00103%8.98%
Venue D8h ref0.0061%0.00076%6.68%
Venue E8h0.0074%0.00093%8.10%
Venue F8h0.0118%0.00148%12.92%
Venue G1h0.00094%0.00094%8.23%
BTC-PERP, one settlement per venue, anonymizedSYNTHETIC EXAMPLE

How the hourly grid is built.

The grid is meant for backtests, so it never uses information that arrived after the grid time.

01Record every print as publishedSettled rates and predicted rates are stored with ts_exchange, ts_capture and the settlement time ts_funding. Predicted rates are kept at the venue's update cadence.
02Normalize each printrate_1h and rate_ann are computed per row from the interval in force at that moment.
03Join as-of on capture timeFor each UTC hour and venue, the grid takes the last settled rate and the last predicted rate with ts_capture before the hour. An 8h venue therefore shows the same settled rate for eight consecutive hours, and a predicted rate that moves within them.
04Attach open interest and reference pricesOpen interest, mark and index are joined the same way, so one grid row holds everything a carry model needs for that venue and hour.
05Mark what is missingIf a venue had a capture gap covering the hour, the row is kept with stale = true and the age of the last print in age_s. Nothing is interpolated.

Funding and open interest columns.

Both tables carry the common columns. Rates are decimal fractions (0.0001 = 0.01%), stored as decimal128 like every other number.

FUNDING

ColumnTypeMeaning
kindstring"settled" or "predicted".
ratedecimalRate per interval, as published.
interval_sint64Funding interval in seconds (3600, 14400, 28800).
rate_1hdecimalRate per hour.
rate_anndecimalrate_1h × 8,760.
ts_fundingint64Settlement time the rate applies to, ns.
accrualdecimalOn predicted rows, funding accrued so far in the interval, where published. On settled rows, equal to rate.
mark_price index_pricedecimalReference prices at the print, where published with it.

OPEN_INTEREST

ColumnTypeMeaning
oi_contractsdecimalOpen interest in contracts.
oi_basedecimalOpen interest in base asset (contracts × contract size).
oi_notional_usddecimalBase amount × index price.

HOURLY GRID (ADDED COLUMNS)

ColumnTypeMeaning
ts_gridint64UTC hour boundary, ns.
predicted_rate_1hdecimalLast predicted rate per hour before ts_grid.
staleboolTrue if a capture gap covered the hour.
age_sint64Seconds since the last print used.

Eight funding venues planned.

Hyperliquid funding ships in Phase 1. Every other venue below is planned, subject to a data agreement with the exchange. For Kraken and Bitfinex perpetuals, trades and depth are planned and funding is not planned at launch.

Full coverage matrix
VenuePhaseIntervalFundingOI
HyperliquidP11h●●
BinanceP28h · some 4h●●
BybitP28h · some 4h●●
OKXP28h●●
DeribitP3continuous · 8h ref●●
BitgetP38h●●
KuCoinP48h●●
dYdXP41h●●

A cross-venue carry table in one call.

Ask for the hourly grid and get one row per venue per hour, ready to pivot.

from fdc import Client

fdc = Client(api_key="fdc_live_...")

grid = fdc.funding(
    venues=["hyperliquid", "binance", "bybit", "okx"],
    symbol="BTC-PERP",
    start="2027-07-01",
    end="2027-10-01",
    grid="1h",            # omit for raw prints
).to_pandas()

carry = grid.pivot(index="ts_grid", columns="venue", values="rate_ann")
spread = carry["hyperliquid"] - carry["binance"]   # annualized, same unit

Read next.

Carry data that lines up.

Pre-register for Hyperliquid funding history from November 2025, and further venues as they go live under data agreements.

EARLY ACCESS · PRE-SALE PRICINGPre-register for early access → DANIEL GARCIA · CEO & FOUNDERdaniel@financedatacloud.com →