Funding Rate Dataset
Historical Crypto Funding Rate Data
Funding rates, mark prices, and index prices from major perpetual and futures venues, packaged as hourly Parquet/Zstd files.
No credit card · The sample is one real hourly Parquet file and needs no API key
Sample
See the data before you sign up
The first rows of one real hour: BTCUSDT on Binance Futures, 2026-09-02 at 12:00 UTC. One row per mark price update.
binance_futures/2026-09-02/12/BTCUSDT_mark_price.parquetDownload full file| received_time | event_time | symbol | mark_price | index_price | estimated_settle_price | funding_rate | next_funding_time |
|---|---|---|---|---|---|---|---|
| 1788350400237188417 | 1788350400000 | BTCUSDT | 76799.00902899 | 76830.04000000 | 76652.43289481 | 0.00005745 | 1788364800000 |
| 1788350401218370451 | 1788350401000 | BTCUSDT | 76798.53685507 | 76829.56782609 | 76652.62230374 | 0.00005742 | 1788364800000 |
| 1788350402208956508 | 1788350402000 | BTCUSDT | 76796.39968116 | 76827.43065217 | 76652.81052415 | 0.00005742 | 1788364800000 |
| 1788350403214507306 | 1788350403000 | BTCUSDT | 76791.54837681 | 76822.57934783 | 76653.09094126 | 0.00005742 | 1788364800000 |
| 1788350404212143914 | 1788350404002 | BTCUSDT | 76789.72424638 | 76820.75521739 | 76653.27423255 | 0.00005742 | 1788364800000 |
| 1788350405212171531 | 1788350405000 | BTCUSDT | 76787.06184783 | 76820.75521739 | 76653.36324734 | 0.00005742 | 1788364800000 |
Wire format
From exchange message to Parquet row
Every row starts as a message on the exchange's WebSocket or REST API. Point at a line or a column to see where each value comes from and how we convert it. Our test suite replays these messages through the production pipeline, so the rows shown are the rows you download.
Exchange sends
WebSocket message · !markPrice@arr@1sreceived 2026-10-05 19:01:42.216687 UTC
{"stream": "!markPrice@arr@1s","data": [{"e": "markPriceUpdate","E": 1791226902000,"s": "BTCUSDT","p": "85583.30000000","ap": "85583.30000000","P": "85612.13024722","i": "85633.04043478","r": "0.00000563","T": 1791244800000,"st": 1}]}
Shortened: The all-market frame contained 745 symbols. This example shows only BTCUSDT. Each entry becomes its own row.
You download
Parquet row · mark_price
Point at a line in the message or a column in the row to trace where each value comes from. Click a column to pin it.
Our tests replay this message through the production pipeline
All Binance Futures mapping rules →Conventions for every exchange are in the wire formats overview. Column types and units for funding rate data are in the schema below.
Use cases
What you can build with funding rate data
- Funding carry and basis
- Measure what it cost to hold a perpetual position over time and compare it with spot or dated futures.
- Cross-exchange funding spreads
- Find persistent funding differences for the same asset across venues for relative-value research.
- Mark vs. index dislocation
- Track the gap between mark and index price to study premium, sentiment, and liquidation risk.
Coverage
Funding rate coverage
Every venue is stored under its own exchange ID, so spot and derivatives never mix. Bars show each venue's history from its first hourly file to today, or to its last file for a venue that is no longer collected. Symbol counts are live from the symbols API.
| Venue | Exchange ID | Market | History | Mark price symbols |
|---|---|---|---|---|
| binance_futures | Futures | 2025-06-2816 mo | 988 | |
| bybit | Futures | 2025-06-2816 mo | 1,526 | |
| okx_futures | Futures | 2025-06-2816 mo | 641 | |
| bitget_futures | Futures | 2025-07-1515 mo | 1,210 | |
| kraken_derivatives | Futures | 2025-06-2816 mo | 680 | |
| hyperliquid_futures | Perpetuals | 2025-09-2913 mo | 451 | |
| aster_futures | Futures | 2025-09-2913 mo | 798 | |
| bitmex | Futures | 2025-09-29 to 2026-09-2212 mo | 156 | |
| lighter | Perpetuals & Spot | 2025-12-3010 mo | 239 |
By exchange
Funding & Mark Price data by exchange
Each exchange page covers its markets, verified history start, and a sample from that venue.
Schema · 8 columns
Normalized mark price schema
Every mark price row carries mark, index, and estimated settle prices plus the current funding rate (a fraction per funding period) and next funding time for perpetual contracts, where the venue publishes them.
| Column | Type | Description |
|---|---|---|
| received_time | INT64 | Unix timestamp (nanoseconds) when our system received the mark price event |
| event_time | INT64 | Unix timestamp when the exchange generated the event (the time unit changes with the exchange) |
| symbol | STRING | Trading pair symbol (for example, 'BTCUSDT') |
| mark_price | STRINGnullable | Mark price that the exchange uses to calculate liquidations (stored as string for precision) |
| index_price | STRINGnullable | Index price from the underlying spot exchanges (stored as string for precision) |
| estimated_settle_price | STRINGnullable | Estimated settlement price at contract expiration (stored as string for precision) |
| funding_rate | STRINGnullable | Current funding rate for perpetual contracts, as a fraction for each funding period (0.0001 = 0.01 %; stored as string for precision). Kraken Futures and Lighter history before the 2026-09 data-integrity release use other units (refer to the venue notes) |
| next_funding_time | INT64nullable | Unix timestamp when the next funding payment will occur. Lighter history before the 2026-09 data-integrity release contains the last funding time instead |
Quickstart
From pip install to DataFrame in a minute
The example loads BTCUSDT from Binance Futures for 2026-09-02. Change the symbol, exchange, or dates to pull any other slice of the archive.
Install the Python SDK
pip install cryptohftdataCreate a free API key
Sign up with email or Google, then generate a key from your dashboard. No credit card.
Create accountCall get_mark_price()
Paste the snippet, replace YOUR_API_KEY, and you get a pandas DataFrame with the columns listed above.
import cryptohftdata as chd
client = chd.CryptoHFTDataClient(api_key="YOUR_API_KEY")
df = client.get_mark_price(
symbol="BTCUSDT",
exchange=chd.exchanges.BINANCE_FUTURES,
start_date="2026-09-02",
end_date="2026-09-02",
)
print(df.head())
print(f"Mark price updates: {len(df):,}")curl --fail --location \
"https://api.cryptohftdata.com/download?file=binance_futures/2026-09-02/12/BTCUSDT_mark_price.parquet" \
-o BTCUSDT_mark_price_12.parquetCaveats
Know this before you backtest
Exchange feeds differ in subtle ways. These are the details that matter for accurate backtests, replay pipelines, and features. Missing hours and pending corrections for every venue are listed on Known Gaps & Corrections.
Funding rate and next funding time ship inside the mark price files ({symbol}_mark_price.parquet) alongside mark, index, and estimated settle prices.
Funding applies to perpetual contracts; rows for other instruments carry mark and index prices without funding fields.
funding_rate is a fraction per funding period. Kraken Futures history before the 2026-09 data-integrity release holds Kraken's absolute funding rate, and Lighter history holds percent; corrections are planned.
OKX funding rows before the release are timestamped with the next settlement time, which introduces look-ahead if you join on event_time; use received_time for that history.
This page starts on 2025-06-28 based on the earliest stored hourly files for its covered exchange IDs and grows as new hourly files are published.
BitMEX (bitmex) is historical only: the exchange has closed and its files end on 2026-09-22.
FAQ
Frequently asked questions
Is this funding rate data free to download?
Yes. A free CryptoHFTData account with no credit card gives API access to this funding rate data and every other dataset. Individual hourly files can also be downloaded without an API key on the rate-limited free tier.
How far back does this funding rate data go?
The earliest hourly files start on 2025-06-28, and new files are added every hour. Start dates differ by venue; the coverage table on this page lists each one.
What format are the files in?
Each file holds one symbol for one UTC hour, stored as Zstd-compressed Parquet under {exchange_id}/{YYYY-MM-DD}/{HH}/{SYMBOL}_mark_price.parquet. Parquet reads directly into pandas, Polars, DuckDB, and Arrow.
How do I load this funding rate data in Python?
Install the SDK with pip install cryptohftdata, create a client with your API key, and call client.get_mark_price() with a symbol, exchange, and date range. It returns a pandas DataFrame.
Where is the funding rate stored?
Funding rate and next funding time ship inside the mark price files ({symbol}_mark_price.parquet), next to the mark, index, and estimated settle prices.
Start using funding rate data today.
One free API key covers every exchange and every data type. $0.00.