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

# Real-World Assets (RWAs)

> Curated real-world asset datasets on Dune — tokenized treasuries, equities, and commodities, plus synthetic RWA perpetuals

export const PremiumDatasetAccessCard = ({href = "https://dune.com/enterprise#contact-form"}) => <Card title="Premium dataset access" icon="info" href={href}>
    This dataset is part of a premium offering and requires additional access. Contact the Dune enterprise team to request access.
  </Card>;

Real-world assets bring offchain value onchain: tokenized treasuries and money-market funds, tokenized equities, commodities, private credit, and real estate. Dune provides curated RWA data covering both halves of the market — **tokenized RWAs**, where the asset exists as a real token you can hold and transfer, and **synthetic RWA perpetuals** on Hyperliquid HIP-3 markets, where traders get exposure to a real-world asset without any token existing.

<Info>
  **Maintained by:** Dune · **Refresh:** hourly (activity) to daily (balances, NAV) · **Chains:** 19 — Ethereum, Arbitrum, Avalanche, Base, BNB, Ink, Mantle, Monad, Optimism, Plasma, Plume, Polygon, Robinhood Chain, Sei, zkSync, plus Solana, Aptos, Sui, XRPL, and Stellar
</Info>

<PremiumDatasetAccessCard />

<CardGroup cols={2}>
  <Card title="Explore on Dune" icon="arrow-up-right-from-square" href="https://dune.com/dune/rwa-overview">
    The RWA overview dashboard: AUM by asset class, issuer league tables, and chain distribution.
  </Card>

  <Card title="Get This Data" icon="database" href="https://dune.com/enterprise?dataset=rwa">
    Access RWA data via API, Datashare, or the Dune App.
  </Card>
</CardGroup>

## Available Data

<CardGroup cols={2}>
  <Card title="Registry & Classification" icon="book" href="/data-catalog/curated/rwa/registry/tokens">
    Which assets exist, on which chains, and the product behind each one — asset class, issuer, legal wrapper, and eligibility
  </Card>

  <Card title="Holders & Supply" icon="users" href="/data-catalog/curated/rwa/holders-supply/balances">
    Daily holder balances, entity attribution, outstanding supply, and issuance flows
  </Card>

  <Card title="Valuation (NAV)" icon="dollar-sign" href="/data-catalog/curated/rwa/valuation/nav">
    Onchain net asset value from issuer and oracle contracts, with point-in-time pricing windows
  </Card>

  <Card title="Activity & Trading" icon="chart-line" href="/data-catalog/curated/rwa/activity/transfers">
    Token transfers, secondary-market trades, and RWA perpetual futures activity
  </Card>

  <Card title="All Tables" icon="table" href="/data-catalog/curated/rwa/all-tables-overview">
    Complete inventory of all RWA tables
  </Card>
</CardGroup>

## When to Use These Tables

Use RWA tables when you need to:

* Track AUM, supply, and holder growth for tokenized treasuries, funds, and equities
* Measure issuer and platform market share across asset classes
* Analyze holder concentration and entity composition, including CEX and protocol holdings
* Value onchain positions using issuer-published NAV rather than market price
* Monitor issuance and redemption flows against issuer-reported figures
* Track secondary-market liquidity for RWAs on DEXs and RWA-native venues
* Compare tokenized exposure against synthetic perpetual exposure for the same underlying
* Segment products by legal wrapper, custodian, regulator, or investor eligibility

## Query Performance

Activity tables (`transfers`, `trades`, `perp_trades`) are partitioned by `block_month`. Always filter on it, and add `blockchain` when you only need one chain — Robinhood Chain and Solana dominate row counts, so unfiltered scans are expensive. `balances` is a daily snapshot, so filter `day` to a single date unless you need a trend.

```sql theme={null}
-- ✅ Good: partition-pruned and chain-scoped
SELECT * FROM rwa_multichain.transfers
WHERE block_month >= DATE_TRUNC('month', CURRENT_DATE)
  AND blockchain = 'ethereum'
```

## Methodology

**Tokenized RWAs** are built around `rwa_multichain.tokens`, the canonical registry of every tracked asset. Its `token_id` column normalizes each chain's native identifier — EVM contract address, Solana mint address, Aptos asset type, Sui coin type, XRPL and Stellar asset ids — into one value, so a single query spans all 19 chains. `transfers`, `balances`, and `trades` all join back to it on `(blockchain, token_id)`, and `token_metadata` supplies the product behind the token — asset class, issuer, platform, plus the legal wrapper, custodian, regulator, and investor eligibility.

**Valuation** uses NAV rather than market price, because most tokenized RWAs either barely trade onchain or trade at a price pinned to NAV. `nav` records each onchain NAV update event; `nav_intervals` forward-fills those events into `valid_from` / `valid_to` windows so point-in-time pricing is a plain range join. Note that the NAV tables key on `asset_address` as `VARBINARY`, which matches `token_address` on the activity tables rather than `token_id`, so joins need a cast: `'0x' || lower(to_hex(asset_address))`.

**Synthetic RWA perpetuals** use a native perp schema — side, price, size, notional, funding, open interest — not a two-token swap schema. `rwa_hyperliquid.markets` is the registry of curated HIP-3 markets, `rwa_multichain.perp_trades` holds taker-leg fills, and `perp_metrics_hourly` / `perp_metrics_daily` pre-aggregate volume, open interest, and funding. Perp fills keep the taker leg only, so volume matches Hyperliquid's own reported figures instead of double-counting both sides, and open interest is reported both-sides (longs plus shorts) to match the Hyperliquid UI.

Each half classifies exposure with the vocabulary that fits it. `token_metadata` uses `credit`, `equities`, `commodities`, `cash_equivalent`, `real_estate`, `other`; the Hyperliquid tables use `rates`, `equities`, `credit`, `fx`, `commodities`, `private_funds`, `real_estate`. `equities`, `credit`, `commodities`, and `real_estate` mean the same thing on both sides, so those compare directly — for the rest, map to whichever grouping your analysis needs. The two halves never share token identifiers: a perpetual has no token behind it, so it never joins to `rwa_multichain.tokens`.

## Example Queries

**Largest tokenized assets by AUM and holder count:**

```sql theme={null}
SELECT
  token_symbol,
  blockchain,
  COUNT(DISTINCT address) AS holders,
  SUM(balance_usd) AS aum_usd
FROM rwa_multichain.balances
WHERE day = CURRENT_DATE - INTERVAL '1' DAY
  AND balance > 0
GROUP BY 1, 2
ORDER BY 4 DESC NULLS LAST
LIMIT 25
```

**Point-in-time USD value using the NAV in force on each day:**

```sql theme={null}
SELECT
  b.day,
  b.token_symbol,
  n.issuer,
  SUM(b.balance * n.usd_nav_price) AS aum_usd
FROM rwa_multichain.balances b
JOIN rwa_multichain.nav_intervals n
  ON n.blockchain = b.blockchain
  AND '0x' || lower(to_hex(n.asset_address)) = b.token_address
  AND b.day >= DATE(n.valid_from)
  AND (n.valid_to IS NULL OR b.day < DATE(n.valid_to))
WHERE b.day >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1, 2, 3
ORDER BY 1 DESC, 4 DESC
```

**Synthetic perp volume and open interest by asset class:**

```sql theme={null}
SELECT
  asset_class,
  SUM(volume_usd) AS volume_usd,
  SUM(open_interest_usd) AS open_interest_usd
FROM rwa_hyperliquid.perp_metrics_daily
WHERE block_date >= CURRENT_DATE - INTERVAL '7' DAY
  AND block_date < CURRENT_DATE
GROUP BY 1
ORDER BY 2 DESC
```

## Related Tables

* `prices.day` / `prices.hour` — market prices for RWAs that also trade as ordinary crypto assets
* `tokens.transfers` — all token transfers, unfiltered by RWA scope
* `dex.trades` — full DEX trade coverage; `rwa_multichain.trades` is the RWA-scoped subset plus RWA-native venues

<CardGroup cols={2}>
  <Card title="Enterprise Data Solutions" icon="building" href="https://dune.com/enterprise">
    Need custom RWA datasets, additional chains, or dedicated support? Talk to our enterprise team.
  </Card>

  <Card title="Build Custom Models" icon="code" href="/api-reference/connectors/overview">
    Build private RWA analytics pipelines with the dbt Connector.
  </Card>
</CardGroup>
