Perpetuals, futures and options on one clock.
Trades and depth for every contract, plus the data that only derivatives have: liquidations, mark, index and oracle prices, option chains with IV and greeks, and contract specs that change over time.
Perpetual swaps
Linear USDT- and USDC-margined contracts and inverse coin-margined contracts. Trades, depth, funding, open interest and liquidations.
BTC-PERPBTC-USDC-PERPBTC-USD-INV-PERPDated futures
Quarterly and monthly contracts with expiry and settlement details versioned in instruments. Expired contracts stay queryable.
BTC-27MAR27ETH-25JUN27Option chains
Every strike and expiry, with bid, ask and mark, and implied volatility and greeks where the venue publishes them.
BTC-27MAR27-90000-CETH-27MAR27-3000-PMark, index and oracle, side by side.
Margin, funding and liquidation all key off reference prices, and each venue computes them differently. mark_index records the venue's mark price, its index price and, where one exists, its oracle price, each with the venue's timestamp and our capture timestamp. On Hyperliquid the oracle price is published by validators and feeds funding; on venues that do not use a separate oracle price, the column is null.
Liquidations land in their own table on the same clock, so you can line up a cascade against the mark price that triggered it, to the millisecond.
mark_index and liquidations in the schemaDerivatives tables and columns.
Perpetual and futures trades use the standard trades table; depth uses book_l2, book_l3 and book_l4. All tables carry the common columns as well.
LIQUIDATIONS
| Column | Type | Meaning |
|---|---|---|
price | decimal | Fill or bankruptcy price, as the venue reports it. |
size | decimal | Quantity closed, base units. |
side | string | Side of the liquidation order: "sell" closes a long, "buy" closes a short. |
notional_usd | decimal | Size × price, converted at the index price. |
participant_id | string | Liquidated account where the venue publishes it (Hyperliquid: on-chain address). Null elsewhere. |
throttled | bool | True when the source aggregates liquidations per symbol per interval, so the row may stand for several. |
MARK_INDEX
| Column | Type | Meaning |
|---|---|---|
mark_price | decimal | Venue mark price used for margin and PnL. |
index_price | decimal | Venue index of spot prices. |
oracle_price | decimal | Oracle price where the venue has one; otherwise null. |
basis_bps | decimal | (mark − index) / index × 10,000. |
OPTIONS_CHAIN
| Column | Type | Meaning |
|---|---|---|
underlying | string | Underlying asset, e.g. BTC. |
expiry | int64 | Expiry, ns since epoch, UTC. |
strike | decimal | Strike price. |
option_type | string | "call" or "put". |
bid_price ask_price mark_price | decimal | Top of book and venue mark. |
bid_iv ask_iv mark_iv | decimal | Implied volatility, annualized, where published. |
delta gamma vega theta | decimal | Greeks as published by the venue. |
underlying_price | decimal | Underlying reference used by the venue. |
open_interest | decimal | Contracts outstanding. |
is_snapshot | bool | True on the full-chain snapshot written every minute. |
INSTRUMENTS
| Column | Type | Meaning |
|---|---|---|
instrument_type | string | spot, perp, future or option. |
base quote settle | string | Assets, in our symbology. |
contract_size | decimal | Underlying units per contract. |
tick_size lot_size | decimal | Price and size increments. |
funding_interval_s | int64 | Funding interval in seconds (perps). |
listed_at delisted_at | int64 | Listing and delisting times, ns. |
valid_from valid_to | int64 | Version window. A tick-size change opens a new version. |
Ten perpetual venues planned.
Hyperliquid perpetuals ship first, in Phase 1. Every other venue below is planned, subject to a data agreement with the exchange. Dated futures and option chains are planned on each venue that lists them, as its agreement allows.
Roadmap and phasesPull a liquidation cascade.
Join liquidations to the mark price in effect when each one printed. Both tables share ts_exchange and ts_capture.
import polars as pl
from fdc import Client
fdc = Client(api_key="fdc_live_...")
q = dict(venue="hyperliquid", symbol="BTC-PERP",
start="2027-02-03T13:00:00Z", end="2027-02-03T14:00:00Z")
# download() works for any table, written as Parquet
liq = pl.read_parquet(fdc.download(dataset="liquidations", **q))
mark = pl.read_parquet(fdc.download(dataset="mark_index", **q))
cascade = liq.sort("ts_capture").join_asof(
mark.sort("ts_capture").select("ts_capture", "mark_price", "oracle_price"),
on="ts_capture", strategy="backward",
)
# option chain specs for one expiry
specs = fdc.instruments(venue="deribit", symbol="BTC-27MAR27-*").to_pandas()curl -G https://api.financedatacloud.com/v1/instruments \
-H "Authorization: Bearer fdc_live_..." \
-d venue=deribit -d instrument_type=option -d underlying=BTCRead next.
Get Hyperliquid perps first.
Early access for pre-registered partners is targeted for Q1 2027, with history back to November 2025.
EARLY ACCESS · PRE-SALE PRICINGPre-register for early access → DANIEL GARCIA · CEO & FOUNDERdaniel@financedatacloud.com →