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

# rwa_hyperliquid.markets

> Registry of Hyperliquid HIP-3 builder-deployed perpetual markets that reference a real-world asset, classified by asset class and asset type.

export const PremiumDatasetAccessCard = ({href = "https://dune.com/enterprise#contact-form", note = null}) => <Card title="Gated dataset" icon="lock" href={href}>
    Querying this dataset requires an entitlement on your workspace. See <a href="/data-catalog/overview#access-tiers-public-vs-gated-datasets">access tiers</a>, or contact the Dune team to enable access.
    {note && <><br /><br />{note}</>}
  </Card>;

`rwa_hyperliquid.markets` is the dimension table for synthetic RWA exposure. Grain: one row per HIP-3 builder-deployed perpetual market that maps to a real-world asset, keyed on `(perp_dex, market_symbol)`. `token_address` is also unique and stores the numeric HIP-3 asset id as `VARCHAR`.

<PremiumDatasetAccessCard />

## RWA market scope

This table contains HIP-3 markets classified as exposure to a real-world asset. Crypto perps, crypto-dominance indices, and compute-price indices are outside its scope, so no additional RWA filter is required.

For every market on the venue, first-party and HIP-3 alike, use [`hyperliquid.perp_market_details`](/data-catalog/curated/perpetuals/hyperliquid/perp-market-details) in the [Perpetuals Trading](/data-catalog/curated/perpetuals/overview) collection. It is keyed on `coin` and carries no RWA filter.

Classification is keyed per market rather than per ticker, because the same symbol behaves differently across builder DEXs — quote convention, contract scale, and spec all vary. `mkts:US500` is roughly one-tenth the contract size of `xyz:SP500`, so the two are separate rows with separate descriptions.

## Table schema

| Column | Type | Description |
| - | - | - |
| `token_address` | `VARCHAR` | Integer HIP-3 asset id (`100000 + dex_index * 10000 + asset_index`) as `VARCHAR`. Exists for column parity with the tokenized RWA dimensions |
| `token_standard` | `VARCHAR` | Always `hyperliquid_perp` |
| `perp_dex` | `VARCHAR` | Builder DEX short code (`xyz`, `flx`, `vntl`, `km`, `cash`, `mkts`, and others) |
| `coin` | `VARCHAR` | Full market id in `dex:SYMBOL` form, e.g. `xyz:TSLA` |
| `market_symbol` | `VARCHAR` | Market ticker within the builder DEX |
| `asset_id` | `INTEGER` | Numeric form of the HIP-3 asset id |
| `symbol` | `VARCHAR` | Asset ticker |
| `name` | `VARCHAR` | Asset name |
| `asset_class` | `VARCHAR` | Shared RWA product taxonomy: `credit`, `fixed_income`, `cash_equivalent`, `equities`, `multi_asset`, `commodities`, `real_estate`, `fx`, `other` |
| `asset_type` | `VARCHAR` | Finer classification within `asset_class`, e.g. `equities_synthetic`, `equities_index`, `metals`, `cash_fx` |
| `description` | `VARCHAR` | Curated description of the underlying reference, including contract unit where the DEX spec states one (e.g. "1 troy ounce of gold") |
| `underlying_ticker` | `VARCHAR` | Ticker of the referenced real-world instrument |
| `issuer_id` | `VARCHAR` | Issuer identifier |
| `issuer_name` | `VARCHAR` | Same as `builder_name`. Exists for column parity with the tokenized RWA dimensions |
| `platform_id` | `VARCHAR` | Platform identifier |
| `platform_name` | `VARCHAR` | Same as `builder_name` |
| `builder_name` | `VARCHAR` | Builder DEX full name, e.g. XYZ, Ventuals, Felix Exchange. This is the name carried on the trades and metrics tables |
| `deployer` | `VARCHAR` | Address that deployed the market |
| `dex_index` | `INTEGER` | Index of the builder DEX |
| `max_leverage` | `INTEGER` | Configured max leverage. Can change via growth mode. Hyperliquid's default when a trader never sets one is `min(20, max_leverage)` |
| `margin_mode` | `VARCHAR` | Margin regime set by the deployer: `cross` (cross margin permitted, traders may still pick isolated), `noCross` (isolated only), `strictIsolated` (isolated only and position margin fixed after open). What traders actually chose per fill is [`rwa_hyperliquid.perp_trades.margin_mode`](/data-catalog/curated/rwa/activity/perp-trades) |
| `only_isolated` | `BOOLEAN` | `true` when `margin_mode != 'cross'` |
| `is_delisted` | `BOOLEAN` | `true` once the market has been delisted |
| `last_updated` | `DATE` | Date a curated taxonomy field on the row last changed |
| `_updated_at` | `TIMESTAMP` | Latest refresh timestamp |

<Note>
  For HIP-3 perps the builder DEX operator is both the issuer and the platform of the synthetic contract, so `issuer_name`, `platform_name`, and `builder_name` all carry the same value. The three columns exist so this dimension lines up with the tokenized RWA dimensions.
</Note>

## Asset class taxonomy

HIP-3 markets use the product-metadata asset-class vocabulary so tokenized and synthetic exposure can be grouped without a separate mapping. Legacy perp-only classes such as `rates` and `private_funds` are not used.

## Example query

```sql theme={null}
-- Market registry with asset classification, by builder DEX
SELECT
  builder_name,
  asset_class,
  COUNT(*) AS markets,
  MAX(max_leverage) AS max_leverage
FROM rwa_hyperliquid.markets
WHERE NOT is_delisted
GROUP BY 1, 2
ORDER BY 3 DESC
```

**Join to perp fills for asset-class attribution:**

```sql theme={null}
SELECT
  m.asset_class,
  m.underlying_ticker,
  COUNT(*) AS fills,
  SUM(p.notional_usd) AS volume_usd
FROM rwa_hyperliquid.perp_trades AS p
INNER JOIN rwa_hyperliquid.markets AS m
  ON m.asset_id = p.asset_id
WHERE p.block_date >= current_date - INTERVAL '7' day
GROUP BY 1, 2
ORDER BY 4 DESC
LIMIT 25
```


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