Skip to main content

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

The oid (order ID) is assigned by HyperLiquid’s matching engine and is globally unique. It appears in both:
  • Gossip cancel events: data.cancels[].oid
  • Confirmed order_canceled events: data.oid
  • Confirmed order_filled events: data.oid
By tracking oids across both layers, every gossip cancel resolves to one of three outcomes:

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 oid correlation between layers is only possible when both sources are tagged and delivered together
No other HyperLiquid data provider combines pre-consensus gossip with confirmed order flow.