Trading strategies·mm-information

Order-flow imbalance

still alpha
Reviewed 4 June 2026. As of 2026: a real edge still exists for those who can run it well.

Net pressure from changes in bid versus ask depth over a short window. Strongly positive imbalance (bids growing, asks consumed) predicts a near-term up move. One of the most robust short-horizon signals.

See it move

Order-flow imbalancelive signalIX-OFI
OFI (now)+0.00
Signalneutral
Synthetic price100.000
bids growing / asks consumed → upasks growing / bids consumed → down
Injected pressure+0.0

What to notice. Push the pressure positive and the imbalance bars lean teal while the synthetic price drifts up. OFI is one of the few short-horizon signals robust enough to trade. It leads the mid, it doesn't lag it.

What is order-flow imbalance?

Order-flow imbalance (OFI) is the net signed change in liquidity at the top of the book over a time window. Buy-side events (bid additions, ask depletions, trades and cancels that lift the offer) push OFI positive; sell-side events push it negative. The intuition is that price does not move because of price; it moves because of flow. If buyers keep adding to the bid and lifting the offer while sellers do little, the touch is about to tick up. OFI is the bookkeeping of that pressure: a signed tally of every event that adds buying or removes selling at the best prices.

The key insight of Cont, Kukanov & Stoikov (2014) was that the right object is not just signed trade volume but the full set of top-of-book events: limit-order additions and cancellations at the best bid and ask, alongside trades. A cancelled bid is bearish even though no trade printed; a fresh bid is bullish even though nobody traded. Counting only trades throws away half the information about price formation.

OFI is the empirical, computable cousin of Kyle's λ\lambda (Kyle 1985, in the companion guide). Kyle says price moves linearly in net order flow with coefficient λ\lambda; OFI is a practical definition of "net order flow" you can compute from an L2 feed, and the fitted slope of OFI-versus-return is an estimate of λ\lambda for the top of the book.

Every best-level event signs into one number: more net buy pressure now, higher the next print.
OFI[t,t+Δ]=n(enbidenask)\text{OFI}_{[t,\,t+\Delta]} = \sum_n \left( e_n^{\text{bid}} - e_n^{\text{ask}} \right)

How is OFI defined from book events?

Over each interval, OFI sums signed contributions from changes in the best bid and ask. The one-line gloss: every tick, ask whether the best bid and best ask got more or less aggressive, and add up the signed size changes. For each event nn, the bid contribution is +Qnb+Q_n^{b} if the bid price rose, Qn1b-Q_{n-1}^{b} if it fell, and the size change QnbQn1bQ_n^{b} - Q_{n-1}^{b} if it held; the ask contribution is the mirror image, with a more aggressive ask signed negative because it is sell pressure.

The bid contribution: a stronger bid is buy pressure (positive), a weaker bid removes it (negative), a held bid contributes its size change.
enbid={+Qnbpnb>pn1bQnbQn1bpnb=pn1bQn1bpnb<pn1be_n^{\text{bid}} = \begin{cases} +Q_n^{b} & p_n^{b} \gt p_{n-1}^{b} \\[2pt] Q_n^{b} - Q_{n-1}^{b} & p_n^{b} = p_{n-1}^{b} \\[2pt] -Q_{n-1}^{b} & p_n^{b} \lt p_{n-1}^{b} \end{cases}

This handles the three event types uniformly: a trade that lifts the offer depletes ask size (buy pressure); a new bid at a better price adds buy pressure; a cancel of the best bid removes it. That is why OFI dominates plain signed-trade-volume: it sees the additions and cancellations that move the touch without a trade printing, which is much of real price formation.

One caveat is inherited from upstream: where the feed does not label trade direction, OFI's trade component depends on trade-sign inference (the tick rule, Lee–Ready 1991), so OFI inherits that classifier's error rate. The pure book-event part (adds and cancels) is unambiguous; the trade part is only as clean as your signing.

Show the regression form optional

Cont, Kukanov & Stoikov (2014) regress the mid-price change over an interval on the interval's OFI. Empirically this is strongly linear with high R2R^2 at short horizons.

ΔP=βOFI+ε\Delta P = \beta \cdot \text{OFI} + \varepsilon

The slope β\beta is the price impact per unit of OFI (a top-of-book analogue of Kyle's λ\lambda) and it scales inversely with the average top-of-book depth DD: a deeper book gives a smaller move per unit of imbalance.

βcD\beta \approx \frac{c}{D}

The same paper shows OFI explains contemporaneous price changes far better than trade imbalance alone, and that the relationship is stable across stocks once normalised by depth. The derivation rests on a stylised model where the price moves one tick when cumulative net top-of-book pressure exhausts the depth at the touch.

Why does OFI predict the next move, and how robustly?

OFI predicts because price formation is the net pressure at the touch. The best ask holds a finite quantity; once net buy pressure (trades plus cancels plus new bids stepping up) consumes it, the touch moves up a tick. OFI measures exactly the pressure that does the consuming, so its link to the next move is causal at the microstructure level, not a statistical coincidence. That is why it survives where curve-fit signals do not.

Robustness is the headline property. The OFI-versus-return relationship reappears across equities, futures, FX and crypto, across decades, once you normalise by depth. It is to short-horizon price prediction what the square-root law is to impact: a near-universal empirical regularity, and for a self-taught quant the single most reliable thing you can compute off an order-book feed.

But robust and public means crowded. Precisely because OFI is so replicable and so widely known, the raw one-feature signal is heavily traded in liquid lit markets, so the easy money has been arbitraged toward the cost floor. The 2026 reality is that OFI is a utility input, not a standalone alpha, in mature equity markets. The surviving edge is in execution (being fast enough to act on the imbalance before it resolves); in combination (OFI as one feature among many, such as multi-level OFI, cross-asset OFI and regime conditioning); and in younger venues like crypto and prediction markets, where the field is thinner and the signal less competed.

There is no free horizon: lengthen the look-back and the signal smooths but lags; shorten it and you react faster on noisier pressure.
ΔP^[t,t+Δ]=βOFI[tw,t]\widehat{\Delta P}_{[t,\,t+\Delta]} = \beta \cdot \text{OFI}_{[t-w,\,t]}

For the market maker, OFI is a toxicity and fair-value input: a strong one-sided OFI is exactly the signature of informed flow, and it is the empirical engine behind the microprice's imbalance adjustment. A maker watches OFI to widen, skew, or re-centre before it gets picked off.

Worked example

Take a synthetic top-of-book sequence, as of 2026; reproduce it in the interactive above. At t0t_0 the best bid is 100.00 × 500 lots and the best ask 100.01 × 500 lots, so the depth at the touch is D500D \approx 500. Over the next 200 ms the events are: 200 lots added to the bid (buy pressure); 150 lots of the ask traded away (buy pressure); the bid ticks up to 100.01 with 300 lots (buy pressure); and 80 lots of new ask appear (sell pressure).

Tallying every best-level event gives a strongly positive OFI: net buy pressure over the window.
OFI=+200bid add+150ask depleted+300bid stepped up80ask add=+570\text{OFI} = \underbrace{+200}_{\text{bid add}} + \underbrace{150}_{\text{ask depleted}} + \underbrace{300}_{\text{bid stepped up}} - \underbrace{80}_{\text{ask add}} = +570

Predicted move. With a depth-normalised slope β=0.000018\beta = 0.000018 price units per lot of OFI (calibrated on the synthetic tape) the predicted mid change is βOFI=0.000018×570+0.0103\beta \cdot \text{OFI} = 0.000018 \times 570 \approx +0.0103, about one tick up. The interactive draws this as an up-arrow on the book; over the synthetic tape the realised next-interval move averages close to it, with the scatter's R2R^2 showing how reliably.

Trades-only would have missed it. Counting only the 150 lots traded gives a far smaller signed-volume figure and a weaker prediction: the 500 lots of added and stepped-up bids and the cancelled-versus-added asks are the bulk of the pressure, and trades-only throws them away. Flip the interactive's toggle and watch the scatter's R2R^2 drop and the arrow shrink: visual proof that full OFI beats trade imbalance.

Crowding reality check. In a liquid lit equity, this +570+570 OFI and its one-tick prediction are visible to everyone with the same feed; by the time a software-latency trader acts, faster participants have often already moved the touch. The same +570+570 in a thinner crypto book, or a Polymarket outcome token, is far less contested, which is the 2026 "where does OFI still pay" answer. The numbers are synthetic and rounded; the slope β\beta, the depth normalisation and the predictive R2R^2 must be fitted per instrument and dated, and OFI inherits the noise of your trade-sign inference. The shape (linear, depth-normalised) is robust; the exploitable residual depends on your speed and venue.

Where this fits

Common questions

What is order-flow imbalance?
Order-flow imbalance (OFI) measures the net pressure from changes in bid versus ask depth and trades over a short window. A strongly positive imbalance (bids growing, asks consumed) predicts a near-term upward price move; negative predicts down. It is one of the most robust short-horizon microstructure signals and underlies both microprice and many market-making quote adjustments.