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

# Yields

> The yield an asset pays, per asset and per deployment.

A yield is a rate written as a fraction: `0.05` is five percent. `apy` is the yield over the past year, measured once per asset per day and never added up across assets, deployments or days.

## Coverage

Every issuer that reports a yield, and the chains it pays on. One row per issuer.

<table>
  <thead>
    <tr>
      <th width="260">Issuer</th>
      <th>Chains</th>
    </tr>
  </thead>

  <tbody>
    <tr><td>`3jane`</td><td>`ethereum`</td></tr>
    <tr><td>`aave`</td><td>`arbitrum`, `avalanche`, `base`, `bsc`, `ethereum`, `gnosis`, `linea`, `optimism`, `plasma`, `polygon`, `scroll`, `sonic`, `zksyncera`</td></tr>
    <tr><td>`accountable`</td><td>`monad`</td></tr>
    <tr><td>`angle`</td><td>`arbitrum`, `ethereum`, `gnosis`</td></tr>
    <tr><td>`anzen`</td><td>`arbitrum`, `base`, `blast`, `ethereum`</td></tr>
    <tr><td>`apyx`</td><td>`base`, `ethereum`</td></tr>
    <tr><td>`capapp`</td><td>`ethereum`, `katananetwork`, `megaeth`, `tempo`</td></tr>
    <tr><td>`centrifuge`</td><td>`arbitrum`, `avalanche`, `base`, `bsc`, `celo`, `ethereum`, `monad`, `optimism`, `plumenetwork`, `solana`, `stellar`</td></tr>
    <tr><td>`circle`</td><td>`bsc`, `ethereum`, `near`, `solana`</td></tr>
    <tr><td>`coinshift`</td><td>`ethereum`</td></tr>
    <tr><td>`curve`</td><td>`ethereum`, `xdc`</td></tr>
    <tr><td>`dtrinity`</td><td>`sonic`</td></tr>
    <tr><td>`ethena`</td><td>`aptos`, `arbitrum`, `avalanche`, `base`, `berachain`, `blast`, `bsc`, `ethereum`, `hyperevm`, `linea`, `manta`, `megaeth`, `monad`, `optimism`, `plasma`, `robinhoodchain`, `solana`, `tempo`, `zksyncera`</td></tr>
    <tr><td>`etherfi`</td><td>`ethereum`</td></tr>
    <tr><td>`falconfinance`</td><td>`ethereum`</td></tr>
    <tr><td>`fraxstablecoin`</td><td>`arbitrum`, `ethereum`, `fraxtal`, `katananetwork`, `seievm`, `sonic`</td></tr>
    <tr><td>`fxprotocol`</td><td>`ethereum`</td></tr>
    <tr><td>`gauntlet`</td><td>`ethereum`</td></tr>
    <tr><td>`gyroscope`</td><td>`arbitrum`, `avalanche`, `ethereum`, `optimism`, `polygon`</td></tr>
    <tr><td>`hastra`</td><td>`ethereum`, `solana`</td></tr>
    <tr><td>`inversefinance`</td><td>`ethereum`</td></tr>
    <tr><td>`k3capital`</td><td>`ethereum`</td></tr>
    <tr><td>`kelpdao`</td><td>`ethereum`, `megaeth`</td></tr>
    <tr><td>`lido`</td><td>`ethereum`, `megaeth`, `robinhoodchain`</td></tr>
    <tr><td>`makerdao`</td><td>`arbitrum`, `base`, `ethereum`, `optimism`, `unichain`</td></tr>
    <tr><td>`mantle`</td><td>`ethereum`</td></tr>
    <tr><td>`maple`</td><td>`arbitrum`, `base`, `ethereum`, `plasma`, `robinhoodchain`, `solana`</td></tr>
    <tr><td>`midas`</td><td>`base`, `ethereum`, `monad`, `plasma`, `rootstock`, `starknet`</td></tr>
    <tr><td>`morpho`</td><td>`arbitrum`, `base`, `ethereum`, `hyperevm`, `monad`, `optimism`, `polygon`, `robinhoodchain`, `unichain`, `worldchain`</td></tr>
    <tr><td>`mountainprotocol`</td><td>`arbitrum`, `avalanche`, `base`, `celo`, `ethereum`, `optimism`, `polygon`, `zksyncera`</td></tr>
    <tr><td>`nest`</td><td>`arbitrum`, `ethereum`, `plasma`, `plumenetwork`, `solana`</td></tr>
    <tr><td>`neutrl`</td><td>`ethereum`</td></tr>
    <tr><td>`noon`</td><td>`ethereum`, `starknet`, `zksyncera`</td></tr>
    <tr><td>`ondo`</td><td>`aptos`, `arbitrum`, `ethereum`, `mantle`, `polygon`, `ripple`, `seievm`, `solana`, `stellar`, `sui`</td></tr>
    <tr><td>`openedendigital`</td><td>`arbitrum`, `bsc`, `ethereum`, `ripple`, `solana`</td></tr>
    <tr><td>`opentrade`</td><td>`avalanche`</td></tr>
    <tr><td>`pareto`</td><td>`ethereum`</td></tr>
    <tr><td>`re`</td><td>`avalanche`, `base`, `ethereum`, `tempo`</td></tr>
    <tr><td>`resupply`</td><td>`ethereum`</td></tr>
    <tr><td>`rocketpool`</td><td>`ethereum`</td></tr>
    <tr><td>`saturn`</td><td>`ethereum`</td></tr>
    <tr><td>`securitize`</td><td>`aptos`, `arbitrum`, `avalanche`, `bsc`, `ethereum`, `optimism`, `polygon`, `solana`</td></tr>
    <tr><td>`sivo`</td><td>`ethereum`</td></tr>
    <tr><td>`spark`</td><td>`robinhoodchain`</td></tr>
    <tr><td>`spiko`</td><td>`arbitrum`, `base`, `ethereum`, `polygon`, `solana`, `starknet`, `stellar`</td></tr>
    <tr><td>`st0x`</td><td>`base`</td></tr>
    <tr><td>`stakewise`</td><td>`ethereum`</td></tr>
    <tr><td>`strata`</td><td>`ethereum`</td></tr>
    <tr><td>`superstate`</td><td>`ethereum`, `solana`</td></tr>
    <tr><td>`swell`</td><td>`ethereum`</td></tr>
    <tr><td>`tenbinlabs`</td><td>`ethereum`</td></tr>
    <tr><td>`textilecredit`</td><td>`base`, `ethereum`</td></tr>
    <tr><td>`theo`</td><td>`arbitrum`, `base`, `ethereum`, `hyperevm`</td></tr>
    <tr><td>`tronusdd`</td><td>`bsc`, `ethereum`</td></tr>
    <tr><td>`upshiftfinance`</td><td>`ethereum`</td></tr>
    <tr><td>`usdai`</td><td>`arbitrum`, `ethereum`, `plasma`</td></tr>
    <tr><td>`usual`</td><td>`ethereum`</td></tr>
    <tr><td>`xsy`</td><td>`base`</td></tr>
    <tr><td>`yieldfi`</td><td>`arbitrum`, `base`, `ethereum`, `katananetwork`, `optimism`, `plumenetwork`, `sonic`</td></tr>
    <tr><td>`yieldnest`</td><td>`ethereum`</td></tr>
    <tr><td>`yieldoptimizer`</td><td>`base`</td></tr>
    <tr><td>`yuzu`</td><td>`plasma`</td></tr>
  </tbody>
</table>

## Tables

**Asset**

One row per asset per day, in `metrics_assets.apy_daily`.

<table>
  <thead>
    <tr>
      <th width="230">Column</th>
      <th width="120">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr><td>`timestamp`</td><td>TIMESTAMP</td><td>Midnight UTC of the day measured.</td></tr>
    <tr><td>`asset_id`</td><td>STRING</td><td>Identifier of the asset, for example `usdc`. Joins `dimensions.assets`.</td></tr>
    <tr><td>`apy`</td><td>FLOAT64</td><td>The asset's yield over the past year, written as a fraction: `0.05` means five percent. Measured once per asset per day, and never added up.</td></tr>
  </tbody>
</table>

**Deployment**

One row per deployment per day, in `metrics_asset_tokens.apy_daily`. A deployment is one token contract on one chain.

<table>
  <thead>
    <tr>
      <th width="230">Column</th>
      <th width="120">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr><td>`timestamp`</td><td>TIMESTAMP</td><td>Midnight UTC of the day measured.</td></tr>
    <tr><td>`asset_token_id`</td><td>STRING</td><td>Identifier of the deployment, formatted `{asset_id}-{token_address}-{chain_id}`. Joins `dimensions.asset_tokens`.</td></tr>
    <tr><td>`apy`</td><td>FLOAT64</td><td>Yield over the past year, written as a fraction and kept within `(0, 0.50]`. Measured once per asset, on the deployment with the largest circulating market cap, then copied onto the asset's other deployments. Never added up.</td></tr>
  </tbody>
</table>

## Sample queries

**Highest asset yields**

Yield and supply are two tables, joined on `asset_id` at one `timestamp`. `market_cap_circulating_native` is the weight to read a rate against.

```sql theme={null}
with yields as (
    select asset_id, apy
    from `metrics_assets.apy_daily`
    where timestamp = timestamp('2026-08-20')
),

supply as (
    select asset_id, market_cap_circulating_native
    from `metrics_assets.market_cap_circulating_native_daily`
    where timestamp = timestamp('2026-08-20')
)

select
    assets.name,
    assets.asset_type,
    yields.apy,
    supply.market_cap_circulating_native
from yields
left join supply
    using (asset_id)
join `dimensions.assets` as assets
    using (asset_id)
order by yields.apy desc
limit 25
```

**One asset over time**

A `full join` on `timestamp` keeps a day with a yield but no supply figure, and the reverse. Bound `timestamp` on both sides: an unbounded side reads its whole table.

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

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

select
    timestamp,
    yields.apy,
    supply.market_cap_circulating_native
from yields
full join supply
    using (timestamp)
order by timestamp
```

**Supply-weighted average**

Each day's rates are weighted by circulating market cap, so a large asset moves the average more than a small one. `asset_type` on `dimensions.assets` is what narrows the average to one class of asset.

```sql theme={null}
with yields as (
    select asset_id, timestamp, apy
    from `metrics_assets.apy_daily`
    where timestamp >= timestamp('2026-07-01')
),

supply as (
    select asset_id, timestamp, market_cap_circulating_native
    from `metrics_assets.market_cap_circulating_native_daily`
    where timestamp >= timestamp('2026-07-01')
      and market_cap_circulating_native > 0
)

select
    yields.timestamp,
    sum(yields.apy * supply.market_cap_circulating_native)
        / sum(supply.market_cap_circulating_native) as weighted_apy
from yields
join supply
    using (asset_id, timestamp)
join `dimensions.assets` as assets
    using (asset_id)
where assets.asset_type = 'rwa'
group by yields.timestamp
order by yields.timestamp
```

**Yield by chain**

The deployment table has `asset_token_id` alone, so the chain comes from `dimensions.asset_tokens`.

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.