> ## 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.

# Metrics

> Daily real-world asset supply, holders, transfer activity, price and yield.

Circulating market cap, price, yield, holders, mints, redemptions and transfer activity. One row per thing per day, at two grains: asset and deployment.

## Tables

A tab per grain. [Coverage](/docs/catalog/real-world-assets) shows which issuers report which measure.

<Tabs>
  <Tab title="Asset">
    One row per asset per day. Price and yield belong to the asset itself; every other measure is the asset's deployments added together.

    <table>
      <thead>
        <tr>
          <th width="380">Table</th>
          <th width="270">Value column</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr><td><code>metrics\_assets.price\_daily</code></td><td><code>price</code></td><td>Asset price in USD (canonical across sources).</td></tr>
        <tr><td><code>metrics\_assets.app\_tvl\_daily</code></td><td><code>app\_tvl</code></td><td>Value of the asset deposited into onchain apps -- lending markets, DEX pools and vaults</td></tr>
        <tr><td><code>metrics\_assets.apy\_daily</code></td><td><code>apy</code></td><td>Annualized yield, native-market-cap-weighted across deployments.</td></tr>
        <tr><td><code>metrics\_assets.market\_cap\_circulating\_native\_daily</code></td><td><code>market\_cap\_circulating\_native</code></td><td>Circulating market cap of natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_assets.market\_cap\_circulating\_bridged\_daily</code></td><td><code>market\_cap\_circulating\_bridged</code></td><td>Circulating market cap of bridged deployments only, wrapped representations of supply issued elsewhere.</td></tr>
        <tr><td><code>metrics\_assets.market\_cap\_circulating\_total\_daily</code></td><td><code>market\_cap\_circulating\_total</code></td><td>Circulating market cap across every representation of the asset, native issuance plus bridged wrappers plus any off-chain component.</td></tr>
        <tr><td><code>metrics\_assets.market\_cap\_circulating\_offchain\_daily</code></td><td><code>market\_cap\_circulating\_offchain</code></td><td>Circulating market cap the issuer reports off-chain, the portion of a fund's NAV no token contract represents.</td></tr>
        <tr><td><code>metrics\_assets.holders\_native\_daily</code></td><td><code>holders\_native</code></td><td>Distinct holders across the asset's natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_assets.holders\_bridged\_daily</code></td><td><code>holders\_bridged</code></td><td>Distinct holders across the asset's bridged deployments only.</td></tr>
        <tr><td><code>metrics\_assets.mints\_native\_daily</code></td><td><code>mints\_native</code></td><td>Value minted (issued) on natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_assets.mints\_bridged\_daily</code></td><td><code>mints\_bridged</code></td><td>Value minted (issued) on bridged deployments only.</td></tr>
        <tr><td><code>metrics\_assets.mints\_total\_daily</code></td><td><code>mints\_total</code></td><td>Value minted (issued) across every deployment; a bridged mint is a distinct event, so this is a real total.</td></tr>
        <tr><td><code>metrics\_assets.redemptions\_native\_daily</code></td><td><code>redemptions\_native</code></td><td>Value redeemed (burned) on natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_assets.redemptions\_bridged\_daily</code></td><td><code>redemptions\_bridged</code></td><td>Value redeemed (burned) on bridged deployments only.</td></tr>
        <tr><td><code>metrics\_assets.redemptions\_total\_daily</code></td><td><code>redemptions\_total</code></td><td>Value redeemed (burned) across every deployment; a bridged burn is a distinct event, so this is a real total.</td></tr>
        <tr><td><code>metrics\_assets.transfer\_count\_native\_daily</code></td><td><code>transfer\_count\_native</code></td><td>Number of transfers on natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_assets.transfer\_count\_bridged\_daily</code></td><td><code>transfer\_count\_bridged</code></td><td>Number of transfers on bridged deployments only.</td></tr>
        <tr><td><code>metrics\_assets.transfer\_count\_total\_daily</code></td><td><code>transfer\_count\_total</code></td><td>Number of transfers across every deployment; a bridged transfer is a distinct event, so this is a real total.</td></tr>
        <tr><td><code>metrics\_assets.transfer\_volume\_native\_daily</code></td><td><code>transfer\_volume\_native</code></td><td>Value transferred on natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_assets.transfer\_volume\_bridged\_daily</code></td><td><code>transfer\_volume\_bridged</code></td><td>Value transferred on bridged deployments only.</td></tr>
        <tr><td><code>metrics\_assets.transfer\_volume\_total\_daily</code></td><td><code>transfer\_volume\_total</code></td><td>Value transferred across every deployment; a bridged transfer is a distinct event, so this is a real total.</td></tr>
        <tr><td><code>metrics\_assets.user\_dau\_daily</code></td><td><code>user\_dau</code></td><td>Distinct addresses sending the asset on the day, across every deployment.</td></tr>
        <tr><td><code>metrics\_assets.user\_wau\_daily</code></td><td><code>user\_wau</code></td><td>Distinct addresses sending the asset in the trailing 7 days, across every deployment.</td></tr>
        <tr><td><code>metrics\_assets.user\_mau\_daily</code></td><td><code>user\_mau</code></td><td>Distinct addresses sending the asset in the trailing 30 days, across every deployment.</td></tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Deployment">
    One row per deployment per day. Each deployment is either natively issued or bridged in, and its rows sit in the matching `_native` or `_bridged` tables.

    <table>
      <thead>
        <tr>
          <th width="400">Table</th>
          <th width="290">Value column</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr><td><code>metrics\_asset\_tokens.apy\_daily</code></td><td><code>apy</code></td><td>Annualized yield of the deployment.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.market\_cap\_circulating\_native\_daily</code></td><td><code>market\_cap\_circulating\_native</code></td><td>Circulating market cap of the deployment; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.market\_cap\_circulating\_bridged\_daily</code></td><td><code>market\_cap\_circulating\_bridged</code></td><td>Circulating market cap of the deployment; bridged deployments only, wrapped representations of supply issued elsewhere.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.market\_cap\_circulating\_total\_daily</code></td><td><code>market\_cap\_circulating\_total</code></td><td>Circulating market cap of the deployment, native or bridged.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.holders\_native\_daily</code></td><td><code>holders\_native</code></td><td>Addresses holding a non-zero balance of the deployment; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.holders\_bridged\_daily</code></td><td><code>holders\_bridged</code></td><td>Addresses holding a non-zero balance of the deployment; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.mints\_native\_daily</code></td><td><code>mints\_native</code></td><td>Value minted (issued) on the deployment; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.mints\_bridged\_daily</code></td><td><code>mints\_bridged</code></td><td>Value minted (issued) on the deployment; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.mints\_total\_daily</code></td><td><code>mints\_total</code></td><td>Value minted (issued) on the deployment, native or bridged.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.redemptions\_native\_daily</code></td><td><code>redemptions\_native</code></td><td>Value redeemed (burned) on the deployment; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.redemptions\_bridged\_daily</code></td><td><code>redemptions\_bridged</code></td><td>Value redeemed (burned) on the deployment; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.redemptions\_total\_daily</code></td><td><code>redemptions\_total</code></td><td>Value redeemed (burned) on the deployment, native or bridged.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.transfer\_count\_native\_daily</code></td><td><code>transfer\_count\_native</code></td><td>Transfers on the deployment; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.transfer\_count\_bridged\_daily</code></td><td><code>transfer\_count\_bridged</code></td><td>Transfers on the deployment; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.transfer\_count\_total\_daily</code></td><td><code>transfer\_count\_total</code></td><td>Transfers on the deployment, native or bridged.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.transfer\_volume\_native\_daily</code></td><td><code>transfer\_volume\_native</code></td><td>Value transferred on the deployment; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.transfer\_volume\_bridged\_daily</code></td><td><code>transfer\_volume\_bridged</code></td><td>Value transferred on the deployment; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.transfer\_volume\_total\_daily</code></td><td><code>transfer\_volume\_total</code></td><td>Value transferred on the deployment, native or bridged.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.user\_dau\_native\_daily</code></td><td><code>user\_dau\_native</code></td><td>Distinct addresses sending the deployment's token on the day; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.user\_dau\_bridged\_daily</code></td><td><code>user\_dau\_bridged</code></td><td>Distinct addresses sending the deployment's token on the day; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.user\_wau\_native\_daily</code></td><td><code>user\_wau\_native</code></td><td>Distinct addresses sending the deployment's token in the trailing 7 days; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.user\_wau\_bridged\_daily</code></td><td><code>user\_wau\_bridged</code></td><td>Distinct addresses sending the deployment's token in the trailing 7 days; bridged deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.user\_mau\_native\_daily</code></td><td><code>user\_mau\_native</code></td><td>Distinct addresses sending the deployment's token in the trailing 30 days; natively-issued deployments only.</td></tr>
        <tr><td><code>metrics\_asset\_tokens.user\_mau\_bridged\_daily</code></td><td><code>user\_mau\_bridged</code></td><td>Distinct addresses sending the deployment's token in the trailing 30 days; bridged deployments only.</td></tr>
      </tbody>
    </table>
  </Tab>
</Tabs>

## Sample queries

<Tabs>
  <Tab title="One fund's daily read">
    Each measure is its own table, so a row with all three is a join on `asset_id` and `timestamp`, bounded on each side. Join with `full join`: a fund can publish a price on a day no supply figure landed.

    ```sql theme={null}
    with supply as (
        select timestamp, market_cap_circulating_total
        from `metrics_assets.market_cap_circulating_total_daily`
        where asset_id = 'buidl'
          and timestamp >= timestamp('2026-06-01')
    ),

    price as (
        select timestamp, price
        from `metrics_assets.price_daily`
        where asset_id = 'buidl'
          and timestamp >= timestamp('2026-06-01')
    ),

    yield as (
        select timestamp, apy
        from `metrics_assets.apy_daily`
        where asset_id = 'buidl'
          and timestamp >= timestamp('2026-06-01')
    )

    select
        timestamp,
        supply.market_cap_circulating_total,
        price.price,
        yield.apy
    from supply
    full join price
        using (timestamp)
    full join yield
        using (timestamp)
    order by timestamp
    ```
  </Tab>

  <Tab title="Tokenized stocks by supply">
    The metric tables hold every asset type, so the type filter comes from `dimensions.assets` on the join. `market_cap_circulating_native` counts the supply the issuer minted, the figure for how much of the instrument exists.

    ```sql theme={null}
    select
        assets.asset_id,
        assets.symbol,
        daily.market_cap_circulating_native
    from `metrics_assets.market_cap_circulating_native_daily` as daily
    join `dimensions.assets` as assets
        using (asset_id)
    where daily.timestamp = timestamp('2026-08-01')
      and assets.asset_type = 'tokenized-stocks'
    order by daily.market_cap_circulating_native desc
    limit 25
    ```
  </Tab>

  <Tab title="One issuer's book">
    `issuer_project_id` is the project holding the `issuer` relation, and it is the column the coverage matrix groups on. The supply side is a `left join`: an asset enters the registry on the day it is listed, ahead of its first daily figure.

    ```sql theme={null}
    select
        assets.asset_id,
        assets.symbol,
        assets.asset_type,
        daily.market_cap_circulating_total
    from `dimensions.assets` as assets
    left join `metrics_assets.market_cap_circulating_total_daily` as daily
        on daily.asset_id = assets.asset_id
       and daily.timestamp = timestamp('2026-08-01')
    where assets.issuer_project_id = 'securitize'
      and assets.asset_type in (
          'tokenized-stocks', 'tokenized-funds',
          'tokenized-commodities'
      )
    order by daily.market_cap_circulating_total desc
    ```
  </Tab>

  <Tab title="One asset across chains">
    `asset_token_id` is the deployment key, and `dimensions.asset_tokens` has the chain and the `bridged_status` behind it. The deployment rows of an additive measure add back up to the asset row.

    ```sql theme={null}
    select
        deployments.chain_id,
        deployments.bridged_status,
        daily.market_cap_circulating_total
    from `metrics_asset_tokens.market_cap_circulating_total_daily` as daily
    join `dimensions.asset_tokens` as deployments
        using (asset_token_id)
    where daily.timestamp = timestamp('2026-08-01')
      and deployments.asset_id = 'buidl'
    order by daily.market_cap_circulating_total desc
    ```
  </Tab>

  <Tab title="Chains by real-world asset supply">
    Summing the native table across deployments counts each unit of supply once, because a bridged wrapper stands for supply already minted somewhere else. The type filter needs both dimension tables: the chain sits on the deployment, the type on the asset.

    ```sql theme={null}
    select
        deployments.chain_id,
        count(distinct deployments.asset_id) as instruments,
        sum(daily.market_cap_circulating_native) as native_supply
    from `metrics_asset_tokens.market_cap_circulating_native_daily` as daily
    join `dimensions.asset_tokens` as deployments
        using (asset_token_id)
    join `dimensions.assets` as assets
        using (asset_id)
    where daily.timestamp = timestamp('2026-08-01')
      and assets.asset_type in (
          'tokenized-stocks', 'tokenized-funds',
          'tokenized-commodities'
      )
    group by deployments.chain_id
    order by native_supply desc
    ```
  </Tab>

  <Tab title="Yield across a type">
    A rate needs a weight before it reads across assets. Circulating supply is that weight, and it is also how `apy` rolls up onto the asset from its deployments.

    ```sql theme={null}
    select
        daily.timestamp,
        sum(daily.apy * supply.market_cap_circulating_total)
            / sum(supply.market_cap_circulating_total) as weighted_apy
    from `metrics_assets.apy_daily` as daily
    join `metrics_assets.market_cap_circulating_total_daily` as supply
        using (asset_id, timestamp)
    join `dimensions.assets` as assets
        on assets.asset_id = daily.asset_id
    where assets.asset_type = 'tokenized-funds'
      and daily.timestamp >= timestamp('2026-08-01')
    group by daily.timestamp
    order by daily.timestamp
    ```
  </Tab>
</Tabs>
