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

# Yields

> The yield an asset pays and the rates a lending market quotes.

A yield is a rate, written as a fraction: `0.05` is five percent. Asset yields are the `apy` column on [`metrics.assets_daily`](/docs/catalog/assets/metrics) and `metrics.asset_tokens_daily`, one figure per asset per day. Lending rates are the `deposit_rate` and `borrow_rate` pair on [`facts.lending_market_interest_rates`](/docs/catalog/lending/interest-rates), one pair per market per rate change.

Every column is documented at [Assets ▸ Metrics](/docs/catalog/assets/metrics) and [Lending ▸ Interest rates](/docs/catalog/lending/interest-rates).

Rates never add up, across assets, markets or days. Average an asset yield with a supply weight, or read it one asset at a time.

## Sample queries

<Warning>
  The asset tables carry one row per asset per day. Bound `timestamp` in every query, and read the asset table rather than the deployment table when the question is about the asset.
</Warning>

<Tabs>
  <Tab title="Highest asset yields">
    **Rank tokenized assets by the yield they pay.** `market_cap_circulating_total` gives the weight to read the rate against.

    ```sql theme={null}
    select
        assets.name,
        assets.asset_type,
        daily.apy,
        daily.market_cap_circulating_total
    from `metrics.assets_daily` as daily
    join `dimensions.assets` as assets
        using (asset_id)
    where daily.timestamp = timestamp('2026-08-20')
      and daily.apy is not null
    order by daily.apy desc
    limit 25
    ```
  </Tab>

  <Tab title="One asset over time">
    **Read one asset's yield against its supply.** Both figures sit on the same asset row.

    ```sql theme={null}
    select
        timestamp,
        apy,
        market_cap_circulating_total
    from `metrics.assets_daily`
    where asset_id = 'buidl'
      and timestamp >= timestamp('2026-06-01')
    order by timestamp
    ```
  </Tab>

  <Tab title="Supply-weighted average">
    **Average the yield across a class of assets, weighted by supply.** An unweighted average of rates has no meaning.

    ```sql theme={null}
    select
        daily.timestamp,
        sum(daily.apy * daily.market_cap_circulating_total)
            / sum(daily.market_cap_circulating_total) as weighted_apy
    from `metrics.assets_daily` as daily
    join `dimensions.assets` as assets
        using (asset_id)
    where assets.asset_type = 'rwa'
      and daily.timestamp >= timestamp('2026-07-01')
      and daily.apy is not null
      and daily.market_cap_circulating_total > 0
    group by daily.timestamp
    order by daily.timestamp
    ```
  </Tab>

  <Tab title="Lending rates">
    **In progress.** `facts.lending_market_interest_rates` is not served yet. The query below reads the rate pair per market once it lands.

    ```sql theme={null}
    select
        rates.block_timestamp,
        markets.project_id,
        markets.underlying_symbol,
        rates.deposit_rate,
        rates.borrow_rate
    from `facts.lending_market_interest_rates` as rates
    join `dimensions.lending_markets` as markets
        using (lending_market_id)
    where markets.project_id = 'aave'
      and markets.chain_id = 'ethereum'
      and rates.block_timestamp >= timestamp('2026-08-01')
      and rates.block_timestamp < timestamp('2026-08-08')
    order by rates.block_timestamp
    ```
  </Tab>
</Tabs>
