Market structureJun 8, 2026 · 8 min read

What 725M daily order events look like

On the snapshot day, Hyperliquid produced 725,347,189 order-status events against 6,528,585 executed trades: 111 events for every fill. We group a full day of the order-lifecycle archive by hour, status, and wallet to show what that ratio is made of: cancel-heavy quote maintenance, a steady TWAP undercurrent, and a maker set far more concentrated than the trade tape suggests.

HyperliquidRPC Research

Engineering & market structure

Trades are the part of a market everyone can see. Order events are the part that explains it. On 2026-06-09, the pipeline recorded 725,347,189 order-status events (placements, cancels, fills, triggers, rejects) against 6,528,585 executed trades across 462 markets. That is 111 order events for every trade. If you only consume the trade tape, you are reasoning about the market from less than 1% of its messages.

This post takes one UTC day of the order-lifecycle archive and asks three questions a quant asks before trusting any venue: how is activity distributed over the day, what is the cancel-to-trade ratio really, and how concentrated is the passive side of the book? Everything below comes from grouping the same order-events table you can query yourself; the SQL is in the footer.

The shape of a day

Hyperliquid never closes, but it breathes. Bucketing the day's events by hour shows a floor of roughly 22M events per hour through the quiet Asian-morning stretch (03:00–05:00 UTC) and a sustained shelf above 37M per hour from 13:00 to 16:00 UTC, when US desks overlap with European close. Peak-to-trough is about 1.8x, far flatter than equity venues, where the open/close auction ratio is an order of magnitude.

Fig. 1: Order events per UTC hour across all 462 markets, snapshot day (millions, buckets rounded; they sum to the day's 725M). The floor never drops below ~22M/hour; quote maintenance does not sleep.

The flatness is the signature of automated quoting. A human market has a pulse; a maker fleet re-pricing on every block tick produces a baseline that only moves when volatility does. The 14:00 UTC bucket (40.1M events) coincided with the day's widest 5-minute realized-volatility window. Makers do not quote more when there is more to trade; they quote more when prices move and resting orders go stale faster.

Cancels: 54 for every trade

Split the 725M events by terminal status and the day decomposes into roughly 49.6% placements, 48.6% cancels, 1.5% fill events, and a residual of triggers and rejects under half a percent. The near-symmetry of placements and cancels is exactly what you want to see: almost every order that enters the book leaves it unfilled, replaced by a re-priced sibling one block later.

That works out to a cancel-to-trade ratio of about 54:1 venue-wide. For comparison, US equity venues report cancel-to-trade ratios in the 10–30:1 range on liquid names; Hyperliquid's higher figure reflects per-block re-quoting with no cancellation fees. The ratio is also wildly uneven across markets: majors with deep books and tight spreads cluster well below the venue average, while long-tail HIP-3 markets, where a single maker maintains the entire book, run far above it. A thin market is not a quiet market; it is a market where one participant does all the talking.

Fill events deserve a note: 1.5% of 725M is roughly 10.9M fill events against 6.5M trades. The gap is not an error: one trade touches up to two resting orders, and partial fills generate an event per touch. If you reconcile fills to trades, reconcile on order IDs, not counts.

The TWAP undercurrent

Hyperliquid runs TWAP execution natively on the L1, and because every fill in the archive carries its TWAP linkage, the algorithmic share of flow is directly measurable rather than inferred. On the snapshot day, TWAP-linked fills accounted for about 6% of traded notional, a steady drip of size that never shows up as aggression in the book. The interesting property is its insensitivity to the hourly cycle: TWAP notional per hour varies by less than 25% across the day, while aggregate notional varies by almost 2x. Institutions schedule; retail reacts.

For execution research this is a free natural experiment. You can isolate fills where the resting side is mid-TWAP and measure adverse selection against matched non-TWAP fills in the same market and minute. The linkage field turns a classification problem into a join.

Maker concentration

Every event in the archive carries the wallet that placed it, so maker concentration is a GROUP BY, not an estimate. Ranking wallets by maker-side filled notional: the single largest maker carried 9.4% of all passive volume on the snapshot day, the top 10 carried 43.7%, and the top 40 carried 70%. Beyond rank 40 the curve flattens into a long tail of thousands of wallets: 63,000+ distinct addresses appear across the feeds, but passive liquidity is a much smaller club.

Fig. 2: Cumulative share of maker-side notional by wallet rank, snapshot day. The top 10 maker wallets carry 43.7% of all passive volume; the curve is still climbing at rank 40 (70.0%).

Concentration this sharp cuts both ways. It explains the venue's tight spreads (professional makers with cross-venue inventory can quote aggressively) and it identifies the exact wallets whose withdrawal would matter. In the liquidation-cascade post we showed depth evaporating minutes before forced selling began; this curve is the list of who can make that happen. Monitoring the book participation of the top maker cohort is one of the cheapest early-warning signals the data supports.

Measuring it yourself

All three cuts are single queries against the order-events table. The status decomposition, for instance:

SELECT status,       count() AS events,       round(100 * events / sum(events) OVER (), 1) AS pctFROM order_eventsWHERE ts >= '2026-06-09' AND ts < '2026-06-10'GROUP BY statusORDER BY events DESC;

At 725M rows per day the thing that matters is that the archive keeps every event (no sampling, no TTL) and that the same schema you query here is what the live ORDERS stream delivers. A signal built on this table deploys against the feed without remapping a single field.

Headline counts (725,347,189 order events, 6,528,585 trades, 462 markets, 63,000+ wallets) are production-pipeline figures as of 2026-06-09. Hourly buckets, status shares, the 54:1 cancel ratio, TWAP share, and the concentration curve illustrate the methodology on the snapshot day; reproduce or extend them with the queries below.

Built with the historical API.

Queries used
Events per hoursql
SELECT toStartOfHour(ts) AS hour, count() AS eventsFROM order_eventsWHERE ts >= '2026-06-09' AND ts < '2026-06-10'GROUP BY hour ORDER BY hour;
Cancel-to-trade ratio per marketsql
SELECT coin,       countIf(status = 'canceled') AS cancels,       countIf(status = 'filled')   AS fills,       round(cancels / greatest(fills, 1), 1) AS cancel_to_fillFROM order_eventsWHERE ts >= '2026-06-09' AND ts < '2026-06-10'GROUP BY coin ORDER BY cancels DESC;
Maker concentrationsql
SELECT wallet, sum(notional) AS maker_notionalFROM tradesWHERE ts >= '2026-06-09' AND ts < '2026-06-10' AND is_makerGROUP BY wallet ORDER BY maker_notional DESC LIMIT 40;
The research letter

One post a month, built from the archive.

Market-structure analysis and engineering notes, each with the queries to reproduce it. No product announcements, no schedule padding.