Tables
Daily perpetual and order-book fees, revenue and volume cover closed UTC days and follow the availability cutoff of each market’s chain.
- Project
- Project × chain
- App
- App × chain
- Perp market
- Perp market token
- Order book market
- Order book market token
One row per project per day. Notional volume comes in two lenses, exchange and interface; read one of them.
| Table | Value column | What it holds |
|---|---|---|
metrics_projects.notional_trading_volume_exchange_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the project whose matching engine settled the trade. |
metrics_projects.notional_trading_volume_interface_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the project whose interface the trade was placed through. |
metrics_projects.trading_volume_daily | trading_volume | Total value of trades executed. |
metrics_projects.fees_daily | fees | Total fees paid by users. |
metrics_projects.fees_supply_side_daily | fees_supply_side | Fees paid out to the supply side. |
metrics_projects.revenue_daily | revenue | Fees retained by the protocol. |
One row per project and chain per day.
| Table | Value column | What it holds |
|---|---|---|
metrics_projects_by_chain.notional_trading_volume_exchange_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the project whose matching engine settled the trade. |
metrics_projects_by_chain.notional_trading_volume_interface_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the project whose interface the trade was placed through. |
metrics_projects_by_chain.trading_volume_daily | trading_volume | Total value of trades executed. |
metrics_projects_by_chain.fees_daily | fees | Total fees paid by users. |
metrics_projects_by_chain.fees_supply_side_daily | fees_supply_side | Fees paid out to the supply side. |
metrics_projects_by_chain.revenue_daily | revenue | Fees retained by the protocol. |
One row per app per day. The exchange lens credits the venue whose matching engine settled the trade and the interface lens the app the trade was placed through.
| Table | Value column | What it holds |
|---|---|---|
metrics_apps.notional_trading_volume_exchange_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the app whose matching engine settled the trade. |
metrics_apps.notional_trading_volume_interface_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the app whose interface the trade was placed through. |
metrics_apps.trading_volume_daily | trading_volume | Value of trades executed by the app, measured on the quote leg at execution price. |
metrics_apps.fees_daily | fees | Fees paid by users of the app across every chain it runs on. |
metrics_apps.fees_supply_side_daily | fees_supply_side | Fees the app passed through to builders and, on HIP-3 markets, to market deployers. |
metrics_apps.revenue_daily | revenue | Fees the app retained across every chain it runs on. |
One row per app and chain per day.
| Table | Value column | What it holds |
|---|---|---|
metrics_apps_by_chain.notional_trading_volume_exchange_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the app whose matching engine settled the trade. |
metrics_apps_by_chain.notional_trading_volume_interface_daily | notional_trading_volume | Notional value of perpetual futures traded, attributed to the app whose interface the trade was placed through. |
metrics_apps_by_chain.trading_volume_daily | trading_volume | Value of trades executed by the app, measured on the quote leg at execution price. |
metrics_apps_by_chain.fees_daily | fees | Fees paid by users of the app across every chain it runs on. |
metrics_apps_by_chain.fees_supply_side_daily | fees_supply_side | Fees the app passed through to builders and, on HIP-3 markets, to market deployers. |
metrics_apps_by_chain.revenue_daily | revenue | Fees the app retained across every chain it runs on. |
One row per perpetual market per day. The money tables also have
chain_id, project_id and app_id; the position and trader tables are keyed on the market alone.| Table | Value column | What it holds |
|---|---|---|
metrics_perp_markets.price_daily | price | Mark price of the perpetual futures market. |
metrics_perp_markets.notional_trading_volume_exchange_daily | notional_trading_volume | Notional value traded in the perpetual futures market, attributed to the app whose matching engine settled the trade. |
metrics_perp_markets.notional_trading_volume_interface_daily | notional_trading_volume | Notional value traded in the perpetual futures market, attributed to the app whose interface the trade was placed through. |
metrics_perp_markets.trade_count_daily | trade_count | Number of trades executed in the perpetual futures market. |
metrics_perp_markets.daily_active_traders_daily | daily_active_traders | Distinct traders active in the perpetual futures market. |
metrics_perp_markets.open_interest_daily | open_interest | Notional value of open positions in the perpetual futures market. |
metrics_perp_markets.open_interest_long_daily | open_interest_long | Notional value of open long positions in the perpetual futures market. |
metrics_perp_markets.open_interest_short_daily | open_interest_short | Notional value of open short positions in the perpetual futures market. |
metrics_perp_markets.volume_to_open_interest_daily | volume_to_open_interest | Notional trading volume divided by open interest. |
metrics_perp_markets.daily_active_traders_long_daily | daily_active_traders_long | Distinct traders with long positions in the perpetual futures market. |
metrics_perp_markets.daily_active_traders_short_daily | daily_active_traders_short | Distinct traders with short positions in the perpetual futures market. |
metrics_perp_markets.position_size_average_long_daily | position_size_average_long | Average notional size of long positions in the perpetual futures market. |
metrics_perp_markets.position_size_average_short_daily | position_size_average_short | Average notional size of short positions in the perpetual futures market. |
metrics_perp_markets.position_size_median_long_daily | position_size_median_long | Median notional size of long positions in the perpetual futures market. |
metrics_perp_markets.position_size_median_short_daily | position_size_median_short | Median notional size of short positions in the perpetual futures market. |
metrics_perp_markets.trader_share_long_top10_daily | trader_share_long_top10 | Share of long open interest held by the ten largest long traders. |
metrics_perp_markets.trader_share_short_top10_daily | trader_share_short_top10 | Share of short open interest held by the ten largest short traders. |
metrics_perp_markets.funding_rate_daily | funding_rate | Daily funding rate paid between long and short positions in the perpetual futures market. |
metrics_perp_markets.liquidation_volume_long_daily | liquidation_volume_long | Notional value of long positions force-closed in the perpetual futures market. |
metrics_perp_markets.liquidation_volume_short_daily | liquidation_volume_short | Notional value of short positions force-closed in the perpetual futures market. |
metrics_perp_markets.fees_daily | fees | Fees paid by traders on the perpetual market. |
metrics_perp_markets.revenue_daily | revenue | Fees retained by the protocol on the perpetual market, net of the builder tip and HIP-3 deployer cut. |
metrics_perp_markets.fees_supply_side_daily | fees_supply_side | Fees passed through on the perpetual market, being the builder-code tip plus the HIP-3 deployer’s cut. |
One row per perpetual market and settlement token per day. Amounts become dollars here, and
fees equals revenue plus fees_supply_side for the same market, token and day.| Table | Value column | What it holds |
|---|---|---|
metrics_perp_markets_by_token.notional_trading_volume_daily | notional_trading_volume | Notional value traded in the perpetual futures market, price times trade amount over crossed (taker) legs. |
metrics_perp_markets_by_token.notional_trading_volume_exchange_daily | notional_trading_volume | Notional value traded in the perpetual futures market, attributed to the app whose matching engine settled the trade. |
metrics_perp_markets_by_token.notional_trading_volume_interface_daily | notional_trading_volume | Notional value traded in the perpetual futures market, attributed to the app whose interface the trade was placed through. |
metrics_perp_markets_by_token.fees_daily | fees | Fees paid by traders on the perpetual market. |
metrics_perp_markets_by_token.revenue_daily | revenue | Fees retained by the protocol on the perpetual market, net of the builder tip and HIP-3 deployer cut. |
metrics_perp_markets_by_token.fees_supply_side_daily | fees_supply_side | Fees passed through on the perpetual market, being the builder-code tip plus the HIP-3 deployer’s cut. |
One row per order-book market per day. Every table also has
chain_id, project_id and app_id.| Table | Value column | What it holds |
|---|---|---|
metrics_order_book_markets.trading_volume_daily | trading_volume | Value of trades executed in the order book market, measured on the quote leg at execution price. |
metrics_order_book_markets.fees_daily | fees | Fees paid by traders on the order-book market. |
metrics_order_book_markets.revenue_daily | revenue | Fees retained by the protocol on the order-book market, net of the builder tip. |
metrics_order_book_markets.fees_supply_side_daily | fees_supply_side | Fees passed through on the order-book market, being builder-code tips. |
One row per order-book market and quote token per day. Amounts become dollars here, and
fees equals revenue plus fees_supply_side for the same market, token and day.| Table | Value column | What it holds |
|---|---|---|
metrics_order_book_markets_by_token.trading_volume_daily | trading_volume | Value of trades executed in the order book market, measured on the quote leg at execution price. |
metrics_order_book_markets_by_token.fees_daily | fees | Fees paid by traders on the order-book market. |
metrics_order_book_markets_by_token.revenue_daily | revenue | Fees retained by the protocol on the order-book market, net of the builder tip. |
metrics_order_book_markets_by_token.fees_supply_side_daily | fees_supply_side | Fees passed through on the order-book market, being builder-code tips. |
Sample queries
- Apps by volume
- Project volume by chain
- One market's series
- Pool liquidations
- Order books by volume
- Sector total
The same trades also sit in
metrics_apps.notional_trading_volume_exchange_daily credited to the matching venue, and summing both lenses counts every trade twice.select
app_id,
sum(notional_trading_volume) as volume
from `metrics_apps.notional_trading_volume_interface_daily`
where timestamp >= timestamp('2026-08-01')
and timestamp < timestamp('2026-08-08')
group by app_id
order by volume desc
chain_id on a per-chain table is the chain the market settled on, and one project’s chain rows add back to its metrics_projects row for the same day.select
chain_id,
sum(notional_trading_volume) as volume
from `metrics_projects_by_chain.notional_trading_volume_interface_daily`
where project_id = 'hyperliquid'
and timestamp >= timestamp('2026-08-01')
and timestamp < timestamp('2026-08-08')
group by chain_id
order by volume desc
Each measure is its own table, so a row with all three is a join on
perp_market_id and timestamp. Join with full join: a market has open interest on a day nothing traded.with price as (
select timestamp, price
from `metrics_perp_markets.price_daily`
where perp_market_id = 'hlbtc-hypercore'
and timestamp >= timestamp('2026-06-01')
),
volume as (
select timestamp, notional_trading_volume
from `metrics_perp_markets.notional_trading_volume_exchange_daily`
where perp_market_id = 'hlbtc-hypercore'
and timestamp >= timestamp('2026-06-01')
),
open_interest as (
select timestamp, open_interest
from `metrics_perp_markets.open_interest_daily`
where perp_market_id = 'hlbtc-hypercore'
and timestamp >= timestamp('2026-06-01')
)
select
timestamp,
price.price,
volume.notional_trading_volume,
open_interest.open_interest
from price
full join volume
using (timestamp)
full join open_interest
using (timestamp)
order by timestamp
Long and short liquidation measures are separate USD tables. Join each to the registry on
perp_market_id to select the venue and settlement chain.with liquidations as (
select timestamp, perp_market_id, 'long' as side, liquidation_volume_long as value
from `metrics_perp_markets.liquidation_volume_long_daily`
where timestamp >= timestamp('2026-08-01')
and timestamp < timestamp('2026-08-08')
union all
select timestamp, perp_market_id, 'short' as side, liquidation_volume_short as value
from `metrics_perp_markets.liquidation_volume_short_daily`
where timestamp >= timestamp('2026-08-01')
and timestamp < timestamp('2026-08-08')
)
select
liquidations.timestamp,
liquidations.side,
sum(liquidations.value) as liquidated_notional_usd
from liquidations
join `dimensions.perp_markets` as markets
using (perp_market_id)
where markets.exchange_app_id = 'mux-perps'
and markets.chain_id = 'arbitrum'
group by liquidations.timestamp, liquidations.side
order by liquidations.timestamp, liquidations.side
order_book_market_id joins the registry for the pair name, and trading_volume counts one side of each match.select
daily.order_book_market_id,
markets.name,
daily.app_id,
daily.trading_volume
from `metrics_order_book_markets.trading_volume_daily` as daily
join `dimensions.order_book_markets` as markets
using (order_book_market_id)
where daily.timestamp = timestamp('2026-08-01')
order by daily.trading_volume desc
limit 25
Filter on
primary_market_sector, the sector the Explorer lists the project under, so the total matches the Explorer and counts every project once.select
daily.timestamp,
sum(daily.notional_trading_volume) as sector_volume
from `metrics_perp_markets.notional_trading_volume_exchange_daily` as daily
join `dimensions.projects` as projects
on projects.project_id = daily.project_id
where projects.primary_market_sector = 'derivatives'
and daily.timestamp >= timestamp('2026-08-01')
group by daily.timestamp
order by daily.timestamp