Skip to main content
This schema contains comprehensive on-chain datasets for tracking Hyperliquid fundamental data across multiple metrics categories, including trading activity, fees, revenue streams, and token economics.

Open Source Hyperliquid Data

Artemis is open sourcing 3 distinct tables on and making the data available on S3 for anyone to use. The data currently starts on August 17, 2025. If you are looking for older historical data, contract us at support@artemisanalytics.xyz.
  • Node Fills: All perp and spot trades on Hypercore.
  • Perp and Spot Balances: Daily snapshot of perp positions, margin, and spot balances for all addresses, including vaults.
  • Node Order Statuses: All orders created on the L2Book.
  • Node TWAP Statuses: tracks the status and progress of TWAP orders on Hypercore.

Table Schema

The tables contain metadata rows. When working with the data remember to filter out rows where _metadata key is true. Node Fills (.parquet):
Column NameTypeDescription
timetimestampTimestamp either in miliseconds or nanoseconds
userstringUser address identifying the trader
hashstringThe transaction hash
coinstringHypercore identifier of the base and quote asset
fee_tokenstringHypercore identifier of the token used to pay the fee
feenumberThe fee the user pays to execute the trade
dirstringDirection and type of the trade
close_pnlnumberThe pnl of the trader after the trade is settled
crossedbooleanIndicates whether the trade crossed the order book (TRUE = taker trade, FALSE = maker trade).
trade_idnumberIdentifier for the trade
oidnumberIdendifier of the order
cloidnumberIdendifier of client order
sidestringSide of the trade (A/B)
startPositionnumberStarting position of the user
pxnumberPrice of the trade
sznumberNominal size of the trade
liquidationbooleanTRUE/FALSE/null
_index_level_0_numberInternal row index from the source parquet file.
Perp and Spot Balances (.jsonl):
Column NameTypeDescription
addressstringAddress identifying a user or vault
responsejsonA json dictionary of both the spot perp balance information
timestamptimestampThe timestamp of the snapshot
Node Order Statuses (.parquet):
Column NameTypeDescription
order_timestamptimestapTimestamp either in miliseconds or nanoseconds
hashstringTransaction hash associated with the order, if available.
order_childrenjsonList of child orders linked to this parent order.
order_cloidstringClient-supplied order ID for tracking the order externally.
order_coinstringThe base asset for the order (e.g., SOL, ETH).
order_isPositionTpslbooleanFlag indicating if the order is a take-profit/stop-loss order.
order_isTriggerbooleanFlag indicating if the order is a trigger order.
order_limitPxnumberThe limit price specified for the order.
order_oidnumberUnique order identifier assigned by the system.
order_orderTypestringThe type of order (e.g., limit, market, stop).
order_origSznumberThe original submitted order size.
order_reduceOnlybooleanFlag indicating if the order can only reduce an existing position.
order_sidestringThe order side: buy (B) or sell (A).
order_sznumberThe current active order size.
order_tifstringTime-in-force instruction for the order (e.g., GTC, IOC).
order_triggerConditionstringCondition that triggers the order
order_triggerPxnumberPrice level at which the order is triggered.
statusstringCurrent order status (e.g., activated, finished, canceled).
userstringThe originating wallet or user address submitting the order.
_index_level_0_numberInternal row index from the source parquet file.
Node TWAP Statuses (.parquet):
Column NameTypeDescription
state_timestamptimestampTimestamp either in miliseconds or nanoseconds
state_coinstringThe base asset being traded in the TWAP order.
state_executedNtlnumberThe notional value already executed for the TWAP order.
state_executedSznumberThe size already executed for the TWAP order.
state_minutesnumberThe total duration of the TWAP order in minutes.
state_randomizebooleanFlag indicating if execution intervals are randomized.
state_reduceOnlybooleanFlag indicating if the TWAP order can only reduce an existing position.
state_sidestringThe side of the TWAP order: buy (B) or sell (A).
state_sznumberThe total size requested in the TWAP order.
state_userstringThe originating wallet or user address that placed the TWAP order.
statusstringCurrent TWAP order status (e.g., activated, finished, error).
timetimestampRaw timestamp tied to the order update (in epoch format).
twap_idnumberUnique identifier assigned to the TWAP order.

Accessing the Data

The datasets are hosted in an open-source S3 bucket. Data volume is increasing rapidly; as of September 19, 2025, Node Order Statuses generate approximately 54.1 GB/day. Other datasets are roughly an order of magnitude smaller. List available files:
aws s3 ls s3://artemis-hyperliquid-data/raw/ --request-payer requester
Download a file to the current directory:
aws s3 cp s3://artemis-hyperliquid-data/raw/<file_path> . --request-payer requester
You can use a system like modal to copy all the files from our bucket to your blob store. You can use the script below as a starting point:
import boto3

def copy_files(source_bucket, source_prefix, dest_bucket, dest_prefix=""):
    s3 = boto3.client("s3")

    # List objects in the source bucket
    paginator = s3.get_paginator("list_objects_v2")
    pages = paginator.paginate(
        Bucket=source_bucket,
        Prefix=source_prefix,
        RequestPayer="requester"
    )

    for page in pages:
        if "Contents" not in page:
            continue

        for obj in page["Contents"]:
            key = obj["Key"]
            dest_key = f"{dest_prefix}{key[len(source_prefix):]}" if source_prefix else key

            print(f"Copying {key} -> {dest_bucket}/{dest_key}")

            copy_source = {
                "Bucket": source_bucket,
                "Key": key
            }

            s3.copy(
                copy_source,
                dest_bucket,
                dest_key,
                ExtraArgs={"RequestPayer": "requester"}
            )

if __name__ == "__main__":
    # Source: Artemis Hyperliquid open data bucket
    source_bucket = "artemis-hyperliquid-data"
    source_prefix = "raw/"   # Change this if you want a subfolder (e.g. "raw/node_order_statuses/")

    # Destination: your own bucket
    dest_bucket = "my-bucket-name"
    dest_prefix = "hyperliquid-data/"

    copy_files(source_bucket, source_prefix, dest_bucket, dest_prefix)

Available Tables (Artemis Managed)

Hyperliquid data is available in two main tables:
  • ez_metrics: Aggregated metrics for the entire Hyperliquid protocol with detailed token supply data
  • ez_metrics_by_chain: Contains the same metrics as ez_metrics (where applicable), but broken down by blockchain. Use this table when you need to analyze performance across different chains.

Table Schema

Trading and Activity Metrics

Table NameColumn NameDescription
ez_metricsperp_volumeThe total trading volume on Hyperliquid’s perps exchange
ez_metricsperp_dauThe number of unique traders on Hyperliquid’s perps exchange
ez_metricsperp_txnsThe total number of trades on Hyperliquid’s perps exchange
ez_metricsspot_volumeThe total volume on Hyperliquid’s spot exchange
ez_metricstrading_volumeCombined total of perp_volume and spot_volume (legacy naming)
ez_metricsunique_tradersSame as perp_dau - number of unique traders (legacy naming)
ez_metricstxnsSame as perp_txns - total number of trades (legacy naming)
ez_metricsnum_stakersNumber of HYPE stakers
ez_metricsstaked_hypeAmount of HYPE tokens staked

Fee and Revenue Metrics

Table NameColumn NameDescription
ez_metricsperp_feesThe fees generated by traders on Hyperliquid’s perps exchange
ez_metricsspot_feesThe total amount of fees (in USD) on Hyperliquid’s spot exchange
ez_metricschain_feesThe total transaction fees paid on the HyperEVM
ez_metricsfeesGross protocol revenue includes layer 1 transaction fees and trading fees, composed of spot fees, perp fees, and auction fees
ez_metricsfeesTotal trading fees (legacy naming)
ez_metricsauction_feesFees generated from liquidation auctions
ez_metricsrevenueCombined revenue from buybacks and burns (legacy naming)

Cash Flow Distribution Metrics

Table NameColumn NameDescription
ez_metricsburned_fee_allocationThe portion of protocol revenue that results in burns in USD. On Hyperliquid, all transaction fees paid on the L1 are burned
ez_metricsburned_fee_allocation_nativeThe portion of protocol revenue that results in burns in native tokens
ez_metricsbuyback_fee_allocationA portion of protocol revenue (97%) is allocated to the Assistance Fund (AF) for HYPE buybacks
ez_metricsbuybacks_nativeThe amount of tokens actually bought back by the protocol in native token units
ez_metricsservice_fee_allocationA portion of protocol revenue (3%) is allocated to the Hyperliquidity Provider (HLP)
ez_metricsprimary_supply_side_revenueRevenue allocated to liquidity providers (3% of trading fees) (legacy naming)
ez_metricsdaily_burnAmount of tokens burned daily (legacy naming)
ez_metricsdaily_buybacks_nativeAmount of HYPE bought back daily in native tokens (legacy naming)

Market and Token Metrics

Table NameColumn NameDescription
ez_metricspriceThe price of HYPE in USD
ez_metricsmarket_capThe market cap of HYPE token in USD
ez_metricsfdmcThe fully diluted market cap of HYPE token in USD
ez_metricstoken_volumeThe trading volume of HYPE token in USD
ez_metricstoken_turnover_circulatingThe turnover of HYPE based on circulating supply
ez_metricstoken_turnover_fdvThe turnover of HYPE based on fully diluted valuation

Token Supply Metrics

Table NameColumn NameDescription
ez_metricscirculating_supply_nativeThe circulating supply of HYPE in native tokens
ez_metricsnet_supply_change_nativeThe net change in the circulating supply of HYPE in native tokens
ez_metricsemissions_nativeThe amount of new HYPE tokens emitted
ez_metricspremine_unlocks_nativeThe amount of native tokens unlocked from premine
ez_metricsburns_nativeThe amount of HYPE tokens burned

Sample Queries

Trading Activity Analysis

-- Analyze Hyperliquid trading activity
SELECT
    date,
    perp_volume,
    spot_volume,
    perp_dau,
    perp_txns
FROM
    art_share.hyperliquid.ez_metrics
WHERE
    date >= DATEADD(month, -3, CURRENT_DATE())
ORDER BY
    date ASC

Revenue Stream Breakdown

-- Analyze Hyperliquid revenue streams
SELECT
    date,
    fees,
    perp_fees,
    spot_fees,
    chain_fees
FROM
    art_share.hyperliquid.ez_metrics
WHERE
    date >= DATEADD(month, -3, CURRENT_DATE())
ORDER BY
    date ASC

Cash Flow Distribution

-- Track how Hyperliquid revenue is distributed
SELECT
    date,
    fees,
    buyback_fee_allocation,
    service_fee_allocation,
    burned_fee_allocation
FROM
    art_share.hyperliquid.ez_metrics
WHERE
    date >= DATEADD(month, -1, CURRENT_DATE())
ORDER BY
    date ASC

Token Economics Analysis

-- Track HYPE token supply changes
SELECT
    date,
    price,
    circulating_supply_native,
    emissions_native,
    premine_unlocks_native,
    burns_native,
    net_supply_change_native
FROM
    art_share.hyperliquid.ez_metrics
WHERE
    date >= '2023-06-01'
ORDER BY
    date ASC

Cross-Chain Comparison

-- Compare metrics across chains
SELECT
    date,
    chain,
    perp_volume,
    perp_dau,
    fees,
    burned_fee_allocation
FROM
    art_share.hyperliquid.ez_metrics_by_chain
WHERE
    date >= DATEADD(month, -1, CURRENT_DATE())
ORDER BY
    chain, date ASC
I