rwa_hyperliquid.perp_trades is the 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 (block_month, block_date, unique_key). It covers Hyperliquid HIP-3 builder-deployed markets.
Taker leg only
Each row represents the taker leg of a fill. As a result,SUM(notional_usd) matches the volume Hyperliquid reports for the market without double-counting both sides.
Leverage and margin, per fill
Three columns carry the trader’s risk posture at fill time, and nothing else in the RWA catalog has them — not even the pre-aggregated metrics tables:Table schema
fill_type matters for volume
Liquidations, auto-deleveraging (adl), and market-delisting settlement fills are not discretionary trading. order fills dominate, followed by twap, with forced closes a small tail. Keep only user-initiated fills when measuring genuine trading demand:
twap_id rather than rows if you want order-level counts.
Getting asset class
This table has noasset_class. Join rwa_hyperliquid.markets for classification, issuer, and leverage caps:
leverage_setting decides whether leverage is a choice
market_default fills use Hyperliquid’s default of min(20, max_leverage) rather than trader-selected leverage.
Filter to explicit whenever you are measuring trader risk appetite — mixing the two makes the default look like a popular choice:
margin_mode here is the trader’s choice, not the market’s rule
Two different columns share this name, and they mean different things:rwa_hyperliquid.markets.margin_modeis the regime the deployer set for the market:cross,noCross, orstrictIsolated.perp_trades.margin_modeis what the trader actually used on that position:crossorisolated.
margin_mode = 'cross' permits both, and in practice sees both — traders on cross-enabled markets still pick isolated a meaningful share of the time. A noCross or strictIsolated market only ever produces isolated fills. So the market-level column tells you what was allowed and the trade-level column tells you what was chosen; they are not interchangeable.
Example query
For pre-aggregated volume, open interest, and funding rather than raw fills, use
perp_metrics_hourly or perp_metrics_daily. Neither carries leverage — this table is the only source for it.