Summary
By merging pre-consensus gossip data (cancel actions) with confirmed order flow (fills and cancellations), we can measure how often market makers fail to cancel orders before they get filled. This produces a real-time “market stress” signal that no single data source can provide alone.The two data sources
A cancel in gossip means a user wants to pull an order. A confirmed
order_canceled means it succeeded. A confirmed order_filled on the same oid means it didn’t — the order was taken before the cancel reached the validator.
Correlation methodology
Theoid (order ID) is assigned by HyperLiquid’s matching engine and is globally unique. It appears in both:
- Gossip
cancelevents:data.cancels[].oid - Confirmed
order_canceledevents:data.oid - Confirmed
order_filledevents:data.oid
Measured results
Over a 16-second sample on mainnet (April 14, 2026): Cancel confirmation rate: 49.7% of gossip cancels result in a confirmed cancellation. The remaining 50.3% arrive too late — the order was already filled, previously canceled, or expired. Pre-consensus lead time (cancel oid correlation):
The gossip cancel arrives 1.6 seconds before its confirmed outcome on median.
Cancel velocity as a market signal
Cancel velocity (cancels per second per asset) spikes when market conditions shift. In a 20-second observation window, BTC cancel velocity jumped from 19/sec to 242/sec — a 12x surge involving 264 unique addresses pulling orders simultaneously. This corresponds to a price movement where market makers collectively repriced. Sample stress readings (5-second windows):
High cancel velocity with low fill velocity = market makers pulling quotes (defensive). High cancel velocity with high fill velocity = active repricing under pressure (aggressive).
Cross-user correlation
When a maker cancels and gets filled, the taker is a different address. By joining cancels and fills on the same asset within a time window:- 16 BTC addresses were both canceling AND receiving fills in a 16-second window
- The same heavy market maker address (
0x31ca8395...) appeared across BTC, BCH, TRX, SKY, and LTC — quoting every asset, constantly canceling - Fill events come in matched pairs: one taker buy, one maker sell at the same price and size
Implementing this signal
Subscribe to cancels and fills on the unified stream:Why this only works on hypernode
This signal requires both data layers merged in one stream:- Gossip cancels are not available through any public HyperLiquid API
- Confirmed fills with oids come from the confirmed event stream
- The
oidcorrelation between layers is only possible when both sources are tagged and delivered together