> ## Documentation Index
> Fetch the complete documentation index at: https://tokenterminal.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To query the Token Terminal data catalog, read https://tokenterminal.com/docs/catalog/agents-manual.md first. It is the whole catalog as one page: table naming grammar, key columns, partition and cluster rules, units, additivity, and the tables that are documented but not served yet.
> Never query a catalog table on a time bound alone. Also filter its cluster key, which you read from INFORMATION_SCHEMA.COLUMNS; an empty result means the object is a view, whose pruning contract is on its page. Compute is billed to the caller's own Google Cloud project.

# Perpetual futures markets

> Perpetual futures markets as a venue: the key, and how to rank them.

One row per perpetual futures market in `dimensions.perp_markets`, a contract that follows an underlying asset's price. `perp_market_id` identifies the market and its settlement chain, and is the key every perpetual figure joins on.

## Coverage

One row per app, and a tick marks every app that reports the measure at this grain. It is the same table as the Perp market tab of [Perpetuals](/docs/catalog/perpetuals).

<div class="tt-roster">
  <table class="tt-coverage">
    <thead>
      <tr>
        <th width="230">App</th>
        <th width="140">Project</th>
        <th>Notional volume</th>
        <th>Open interest</th>
        <th>Funding rate</th>
        <th>Liquidations</th>
        <th>Active traders</th>
        <th>Fees</th>
        <th>Revenue</th>
      </tr>
    </thead>

    <tbody>
      <tr><td><code>dreamcash-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>entropyio-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>felix-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>hyena-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>hyperliquid-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>kinetiq-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>paragon-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>tradexyz-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>ventuals-perps</code></td><td><code>hyperliquid</code></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>mux-perps</code></td><td><code>mux</code></td><td><span class="tt-cross">✗</span></td><td><span class="tt-cross">✗</span></td><td><span class="tt-cross">✗</span></td><td><span class="tt-check">✓</span></td><td><span class="tt-cross">✗</span></td><td><span class="tt-cross">✗</span></td><td><span class="tt-cross">✗</span></td></tr>
    </tbody>
  </table>
</div>

## Columns

<table>
  <thead>
    <tr>
      <th width="280">Column</th>
      <th width="130">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr><td><code>perp\_market\_id</code></td><td>STRING</td><td>Identifier of the market: the registered market key joined with the chain on HyperCore; <code>\{pool\_address}:\{asset\_index}-\{chain\_id}</code> on MUX.</td></tr>
    <tr><td><code>project\_id</code></td><td>STRING</td><td>Project the exchange app belongs to.</td></tr>
    <tr><td><code>interface\_app\_id</code></td><td>STRING</td><td>The builder credited for the market. Every fill in the market has this one value, and a market's whole volume lands under one interface app.</td></tr>
    <tr><td><code>chain\_id</code></td><td>STRING</td><td>Chain the market settles on.</td></tr>
    <tr><td><code>exchange\_app\_id</code></td><td>STRING</td><td>The venue that settles the trades. It matches <code>interface\_app\_id</code> on a venue's own markets and differs on a builder-deployed HIP-3 market, where the engine is <code>hyperliquid-perps</code> and the interface is the listing builder.</td></tr>
    <tr><td><code>quote\_asset\_id</code></td><td>STRING</td><td>The token positions settle in, keyed like <code>dimensions.assets</code>. Null on MUX markets, which accept several collateral tokens and price in USD.</td></tr>
    <tr><td><code>base\_reference\_asset\_id</code></td><td>STRING</td><td>The reference asset whose price the market follows, keyed like <code>dimensions.reference\_assets</code>. Null where the market's asset has no reference-asset mapping.</td></tr>
    <tr><td><code>name</code></td><td>STRING</td><td>Readable market name, for example <code>BTC Perpetual</code>.</td></tr>
    <tr><td><code>status</code></td><td>STRING</td><td>Listing status from the market registry, such as <code>active</code>. Null for markets identified from executions.</td></tr>
  </tbody>
</table>

## Sample queries

<Tabs>
  <Tab title="Rank markets by volume">
    Notional volume is published twice, once crediting the exchange app that settled the trades and once crediting the interface app they came through. Each table is a complete account of the same trades, so read one of them.

    ```sql theme={null}
    select
        markets.name,
        markets.exchange_app_id,
        sum(volume.notional_trading_volume) as notional_volume
    from `metrics_perp_markets.exchange_notional_trading_volume_daily` as volume
    join `dimensions.perp_markets` as markets
        using (perp_market_id)
    where volume.timestamp >= timestamp('2026-08-01')
      and volume.timestamp < timestamp('2026-08-08')
    group by 1, 2
    order by notional_volume desc
    limit 20
    ```
  </Tab>

  <Tab title="Open interest by settlement token">
    `quote_asset_id` is the token positions settle in, so grouping by it splits open interest by settlement currency. Open interest is a balance, so read it on a single day.

    ```sql theme={null}
    select
        markets.quote_asset_id,
        sum(oi.open_interest) as open_interest
    from `metrics_perp_markets.open_interest_daily` as oi
    join `dimensions.perp_markets` as markets
        using (perp_market_id)
    where oi.timestamp = timestamp('2026-08-01')
    group by 1
    order by open_interest desc
    ```
  </Tab>
</Tabs>
