Documentation

Hyperliquid table reference

Full schema for the Supanode Hyperliquid Historical Data Indexer — raw block fills plus order, wallet and position views, with every column, type and partition key.

// updated 2026-08-22

The hyperliquid database holds perpetual exchange activity: one row per fill, plus derived order and wallet rollups. This page documents every table, column, type, and description. For runnable patterns see Query examples; for connection details see Indexer overview.

NOTE

Schema snapshot: 1 September 2026. History starts 27 July 2025 and runs to the present. Row counts grow continuously - raw_node_fills_by_block added roughly 190 million rows between the August and September snapshots.

Summary

TableKindRowsSize
raw_node_fills_by_blocktable3,131,968,443225.58 GB
agg_fulfilled_orderorder rollupnot reportednot reported
view_perpetual_walletviewnot reportednot reported
view_wallet_positionviewnot reportednot reported
TIP

Why three tables say "not reported". The wallet and position surfaces are views - they hold no rows of their own and are computed from the fill data when you query them, so the catalog reports nothing for them. Query them directly and you get rows back. agg_fulfilled_order is an aggregating rollup on a 90-day window and the catalog currently reports 0 rows for it, so ask us about its state before you build a pipeline on it.

raw_node_fills_by_block

Raw, per-fill records as read from the node, ordered by block. This is the table almost every query starts from.

Partition key: utc_fill_dt Rows: 3,131,968,443 · Size: 225.58 GB
History: 27 July 2025 to the present

ColumnTypeDescription
utc_fill_dttmDateTime64(3, 'UTC')UTC datetime of the fill (millisecond precision)
utc_fill_dtDateUTC date of the fill (for partitioning)
fill_idInt64Unique fill identifier
fill_hashStringHash of the fill
fill_typeStringType of fill (trade, liquidation, etc.)
utc_block_dttmDateTime64(9, 'UTC')UTC datetime of the block (nanosecond precision)
block_idInt64Hyperliquid block number
block_tx_idxUInt16Transaction index within the block
wallet_addressStringWallet address of the trader
coinStringTrading pair symbol (e.g. BTC, ETH)
priceFloat64Execution price
sizeFloat64Fill size (in contracts)
sideStringTrade side (Buy/Sell)
start_positionFloat64Position size before the fill
closed_pnlFloat64Realized PnL from this fill, in USD
order_idInt64Order identifier
order_crossed_spread_flgBoolWhether the order crossed the spread (taker)
feeFloat64Trading fee
fee_tokenStringToken used for fee payment
client_order_idNullable(String)Client-provided order ID
builder_feeNullable(Float64)Builder / API fee
builderNullable(String)Builder / API identifier
liquidation_userNullable(String)User being liquidated (if a liquidation)
liquidation_mark_pxNullable(Float64)Mark price at liquidation
liquidation_methodNullable(String)Liquidation method used
twap_idNullable(Int64)TWAP order identifier
deployer_feeNullable(Float64)Deployer fee for spot tokens
priority_gasNullable(Float64)Priority gas paid for inclusion, in USDC
WARNING

closed_pnl and fee are already denominated in USD. They are Float64, not integer base units - do not divide by 1e6 or 1e8. Hyperliquid is the exception here; the Solana tables use raw base units.

agg_fulfilled_order

Fill-level activity aggregated up to the fulfilled order, so one row covers every fill that belonged to the same order_id.

Partition key: toYYYYMM(utc_first_fill_dt) Retention: 90 days

ColumnTypeDescription
utc_first_fill_dttmSimpleAggregateFunction(min, DateTime64(3, 'UTC'))UTC datetime of the first fill for this order
utc_first_fill_dtDateUTC date of the first fill (for partitioning)
order_idInt64Unique order identifier
wallet_addressStringWallet address of the trader
coinStringTrading pair symbol
sideStringTrade side (Buy/Sell)
twap_idNullable(Int64)TWAP order identifier, if part of a TWAP
sizeSimpleAggregateFunction(sum, Float64)Total filled size, in contracts
volumeSimpleAggregateFunction(sum, Float64)Total filled volume, in USD
closed_pnlSimpleAggregateFunction(sum, Float64)Realized PnL from this order
NOTE

Aggregate columns need their combinator. size, volume and closed_pnl are SimpleAggregateFunction(sum, ...) - read them through sum() in a GROUP BY, not as plain values.

view_perpetual_wallet

Per-wallet aggregate across all positions. Everything needed for a trader leaderboard without writing the aggregation yourself.

ColumnTypeDescription
wallet_addressStringWallet address of the trader
total_pnlFloat64Total realized profit and loss across all positions
total_volumeFloat64Total trading volume, in USD
cnt_unique_ordersUInt64Count of unique orders placed
last_utc_order_dtSimpleAggregateFunction(max, Date)UTC date of the most recent order
win_countUInt64Number of profitable trades
total_countUInt64Total number of completed trades
sum_order_roiFloat64Sum of return on investment across all orders
sum_profitable_pnlFloat64Sum of PnL from profitable trades
cnt_profitable_ordersUInt64Count of profitable orders
sum_unprofitable_pnlFloat64Sum of PnL from unprofitable trades (negative)
cnt_unprofitable_ordersUInt64Count of unprofitable orders
cnt_unique_coinsUInt64Number of unique trading pairs traded
cnt_trade_daysUInt64Number of distinct days with trading activity
roi_quantilesArray(Float64)ROI distribution quantiles for the wallet

view_wallet_position

Latest position per wallet and market.

ColumnTypeDescription
wallet_addressStringWallet address of the trader
coinStringTrading pair symbol
last_position_sizeFloat64Current position size (positive = long, negative = short)
last_position_update_dttmDateTime64(3, 'UTC')UTC datetime of the last position update

What is not in the database

WARNING

There is no funding-rate or funding-payment table. Funding is not part of this dataset - anything you read about funding history belongs to the Hyperliquid API, not to the Indexer. What the Indexer covers is fills, and everything hanging off a fill: liquidations, TWAP membership, builder codes, fees, priority gas, and position deltas.

Order-book depth is a separate surface - see Order-book archive.

Get started

Provision access or start a trial: @supanode_tgs.