5.28 The Market-Maker Feature Catalog: Arrival, Cancellation, and Update Rates
Imbalance tells you how much size rests in the book. Arrival, cancellation, and update rates tell you how fast it churns, and the cancellation rate, measured right with the trade feed, is your spoofing alarm.
Order book imbalance gets all the attention, and the old article "Order Book Imbalance: The First Microstructure Feature to Test" argued it should be your first build because it does most of the work centering fair value. But imbalance is a snapshot of how much size is resting right now. It says nothing about how fast that size is churning. A book sitting at +0.4 imbalance with nobody touching it is a different animal from a book at +0.4 where limits are pouring in and getting yanked twice a second, and a maker who treats them the same gets run over by the second one.
The fix is to stop looking at the level of the book and start measuring its flow rates. Three of them carry most of the information: how fast new orders arrive, how fast they get cancelled, and how fast existing levels get rewritten. Each is a count divided by time, which makes them cheap to compute and easy to bolt onto whatever you already feed your quoting engine.
The three rates
Each rate is the same shape: count an event type over a window, divide by the window length, get a per-second intensity. The events come from two different data feeds, so you need both an L2 (order book delta) stream and a trade stream to build the full set.
Order arrival rate counts new limit orders landing in the book per unit time. Cancellation rate counts orders pulled per unit time. Update rate counts deltas, every change to a level, which folds arrivals, cancels, and partial fills into one number that tells you how violently the book is being rewritten.
$$ \text{arrival} = \frac{\#\,\text{new limit orders}}{\Delta t} \qquad \text{cancellation} = \frac{\#\,\text{cancels}}{\Delta t} \qquad \text{update} = \frac{\#\,\text{deltas}}{\Delta t} $$
Read those as three counters over the same clock. New limits hitting the book go in the first. Orders disappearing without a trade to explain them go in the second. Every book mutation of any kind goes in the third. The update rate is roughly the sum of the other two plus fills, so if you only have bandwidth for one number, it is the densest, but the split between arrival and cancellation is where the behavioral signal lives.
Cancellation is the hard one to measure
Arrival is easy: a new order ID shows up in the feed, you increment. Cancellation is where people cut corners and get it wrong, because a level shrinking does not always mean someone cancelled. Size at the best bid can drop because a market sell ate it, which is a fill, not a cancel. Lump those together and your "cancellation rate" is really a trade-activity rate wearing a disguise.
To separate them you need the trade feed alongside the L2 feed. The rule is mechanical: when the size at a level decreases, check whether a trade printed at that price for that amount in the same instant. If a trade explains the decrease, it is a fill. If the size dropped with no trade to account for it, it is a cancellation. This is why the catalog needs both streams, and why a cancellation rate built from book data alone is contaminated.
The cancellation rate is the feature that smells out spoofing and flighty liquidity. The old article "Spoofing, Sturdy Liquidity, and Book Pressure" made the case that a wall you can rest in front of is only worth anything if it is real, and that telling sturdy size from spoofed size comes down to order lifetime and cancel-on-approach behavior. A high cancellation rate is that behavior measured in aggregate: when cancels per second spike, the book is full of orders nobody intends to honor, and any placement edge you thought you had behind a large resting order is built on sand.
Pressure: the signed cousin
The rate features above are unsigned counts, they tell you intensity but not direction. The directional version comes from the trade feed by signing each execution and summing over time, which gives you flow pressure.
$$ \text{pressure} = \frac{\sum_i \text{side}_i \cdot \text{amount}_i}{\Delta t} \qquad \text{side}_i = +1 \ (\text{taker buy}), \ -1 \ (\text{taker sell}) $$
Each trade contributes its size with a plus if a taker lifted the offer and a minus if a taker hit the bid, and you divide the running sum by the window. This is the per-time form of the net signed flow from the old article "Using Trade Flow to Predict Short-Term Price Movement," and it predicts for the same reason: takers move price, and their flow is autocorrelated, so a stretch of net buying pressure tends to be followed by more of it. Pressure is the direction; the arrival and cancellation rates are the context that tells you whether to trust it.
A worked number
Say you run a 10-second window on BTC perp. In that window you log 40 new limit orders, 32 cancellations, and 18 fills. Arrival rate is 4.0 orders per second, cancellation rate is 3.2 per second, and the update rate is roughly (40 + 32 + 18) / 10 = 9.0 deltas per second. Now the same window during a calm patch: 8 new limits, 5 cancels, 2 fills, giving 0.8 arrival, 0.5 cancellation, 1.5 update. The book in the first window is churning six times faster. A spread calibrated to the second window is dangerously tight in the first, because the same imbalance reading is being driven by transient orders that will not be there when you need them.
Where it plugs in
These rates are inputs, not signals on their own. You feed them into the decisions you already make. The cancellation rate weights how much you trust a resting wall for placement, extending the order-placement logic from the old article "Order Placement Alpha: The Forgotten Edge," where the whole game is resting in front of size that will actually protect your fill. The arrival and update rates feed your volatility estimate, which is the next article in this cluster. Pressure skews your fair value. None of them replaces imbalance; they tell you how seriously to take it.
Two cautions. First, the rates depend on how the exchange reports its feed: some venues aggregate updates, some send every individual order, so a "delta" on Binance is not the same unit as a "delta" on a venue that batches, and you cannot compare update rates across exchanges without normalizing. Second, like everything in this market the rates are non-stationary, so the absolute level of "high churn" drifts with the venue and the regime; use a rolling baseline and read the rates relative to their own recent distribution rather than against a fixed threshold.
Visualizing the feature catalog

KEY POINTS
- Imbalance measures the level of resting size; arrival, cancellation, and update rates measure how fast the book churns, and a maker needs both to know whether a given imbalance is trustworthy.
- Each rate is a count over a window: arrival = new limits / time, cancellation = cancels / time, update = deltas / time. The update rate is the densest single number but the arrival-versus-cancellation split carries the behavioral signal.
- Cancellation rate is the one people measure wrong. A shrinking level can be a fill, not a cancel, so you need the trade feed alongside L2 to separate them, otherwise you are measuring trade activity in disguise.
- A high cancellation rate is spoofing and flighty liquidity in aggregate; use it to discount any placement edge that assumes a resting wall is real.
- Pressure is the signed, directional cousin, signed trade size over time, the per-time form of net trade flow that skews fair value.
- Feed the rates as inputs, not standalone signals: cancellation weights placement trust, arrival and update feed volatility, pressure skews the center. Use a rolling baseline because the rates are non-stationary and venue-dependent.
References
- Limit Order Books (Gould, Porter, Williams, McDonald, Fenn, Howison)
- The Price Impact of Order Book Events (Cont, Kukanov, Stoikov)
- Queue Imbalance as a One-Tick-Ahead Price Predictor (Gould, Bonart)
- Order Cancellations and Market Quality in Limit Order Markets
- The Art of Currency Trading - Brent Donnelly (Amazon)
- The Price Impact of Order Book Events from a Dimension of Time
- Limit Order Book dynamics and order size modelling using multivariate Hawkes processes
- Trade arrival dynamics and quote imbalance in a limit order book
- The determinants of limit order cancellations
- High frequency market making: The role of speed
- Event-Based Limit Order Book Simulation under a Neural Hawkes Process: Application in Market-Making
- Optimal High-Frequency Trading in a Pro-Rata Microstructure with
- The Impact of Market Informedness on Market Makers' Profitability