Skip to main content
rwa_multichain.perp_trades is the cross-venue fill table for RWA perpetual futures — synthetic exposure to a real-world asset with no tokenized share involved. Grain: one taker-leg fill per row, keyed on (blockchain, block_month, block_date, unique_key). Today it carries Hyperliquid HIP-3 markets; the schema is venue-agnostic so other perp venues can be unioned in without a breaking change.

Taker leg only

Every trade has a buyer and a seller, and the source data emits a fill for each. This table keeps only the taker leg, where crossed = true. That is a deliberate choice: it means SUM(notional_usd) matches the volume Hyperliquid itself reports for a market, rather than double-counting both sides. If you sum an exchange feed that includes both legs, you get twice the real number. The trade-off is that maker-side analysis is not possible from this table. You cannot measure market-maker fill rates or maker inventory. closed_pnl is also deliberately absent, since it is only meaningful per-account with the full position history.

Table schema

asset_id is VARCHAR here and joins to rwa_hyperliquid.markets.token_address, also VARCHAR. Do not join it to markets.asset_id, which is the same value typed as INTEGER.A perp has no token_id and never joins to rwa_multichain.tokens — there is no token behind it.

fill_type matters for volume

Liquidations and auto-deleveraging are forced fills, not discretionary trading. In a typical week order fills dominate (~13.8M), followed by twap (~1.2M), liquidation (~42K), and adl (~500). Exclude the forced types when measuring genuine trading demand:
TWAP fills are one order sliced into many small fills, so they inflate trade counts far more than volume. Count distinct twap_id rather than rows if you want order-level counts.

Getting asset class

This table has no asset_class. Join rwa_hyperliquid.markets for classification, issuer, and leverage:

Example query

Liquidation activity:
For pre-aggregated volume, open interest, and funding rather than raw fills, use perp_metrics_hourly or perp_metrics_daily.