OFI vs CVD: What the Tape Cannot See, Measured
Integrated order flow imbalance explains about 87% of contemporaneous price variance. Signed trade volume — the raw material of CVD — explains about 33%. And lagged OFI predicts nothing. The published numbers, what they mean at the DOM, and the exact configuration we ship.
Every order-flow trader knows CVD. Almost nobody outside of academic desks uses OFI — which is strange, because the published gap between them is not small. This post is the measured version of the argument, with the numbers, where they come from, and the exact configuration we ship.
The numbers
- ~87% — share of contemporaneous price variance explained by integrated ten-level OFI (Cont, Cucuringu & Zhang, 2023).
- ~71% — same measure, best level only (the original Cont–Kukanov– Stoikov formulation).
- ~33% — signed trade volume, the raw material of CVD.
- Negative — the out-of-sample R² when lagged OFI is used to forecast the next minute. Not small. Negative.
Read those four lines together and you get the honest story: the order book explains price far better than the tape does, and neither one predicts. Any product that sells OFI as a forecasting signal is selling the fourth bullet upside down.
What the tape physically cannot see
CVD only increments when a trade prints. But watch a DOM during a real move: bids stack three levels deep before the breakout trade ever fires; a wall of asks quietly evaporates and price drifts up through the vacuum without a single aggressive buy. None of that touches CVD. All of it is OFI’s raw material — adds, pulls and queue depletion, level by level. That is the mechanical reason behind the 87-versus-33 gap: most of the price formation happens in the book, between the prints.
The plumbing detail that makes it free on futures
The academic pipeline needs a trade classifier (Lee-Ready, BVC) to sign the tape, because equity feeds do not carry the aggressor. A CME feed over Rithmic does — every trade arrives already signed, and the L2 book updates arrive on the same session. Which means the entire OFI computation is a subtraction per level per update: no classifier, no model, no extra data subscription. It was, frankly, sitting in the feed all along.
The configuration we ship
In Senzoukria, the Microstructure (quant) indicator computes three things from the same book stream: the micro-price (imbalance-weighted fair price inside the spread), the best-level queue imbalance (QI), and integrated OFI. The defaults, which you can copy or change:
- OFI levels: 10 — the integrated depth from the research; 1 gives you the classic best-level formulation.
- Normalization: always on — OFI is divided by a slow average of depth per level. A raw OFI is not comparable across hours, let alone instruments.
- Smoothing: 20 book events — the displayed value is an EMA; per-event OFI is flicker.
How we actually use it: not as an entry signal — the fourth bullet above forbids it — but as the book’s opinion at a level chosen for other reasons. Price into an absorption zone with QI pinned positive and OFI climbing is a different trade from the same level with the book leaking the other way. The full mechanics are in the companion guide: OFI explained.
Frequently asked questions
- Should I replace CVD with OFI?
- No — they answer different questions. CVD tells you who won the trades that actually happened; OFI tells you how the resting book is reshaping between those trades. The interesting moments are when they disagree: price and CVD rising while OFI stalls means the rally is consuming a book that is not replenishing behind it.
- Do these published numbers apply to my instrument?
- The headline figures come from equity LOB studies, and the strongest results hold on large-tick instruments — the profile of index futures like ES and MNQ. But numbers travel badly between markets, which is why we surface OFI as a normalized state read rather than a calibrated signal, and why we recommend validating on your own instrument before trusting any threshold.
- Why does the OFI reading need smoothing?
- The book updates dozens of times per second, and per-event OFI is noisy by nature. Senzoukria smooths the displayed value over a configurable number of book events (default 20) so the gauge shows the direction of flow rather than every flicker. Set it to 1 if you want the raw reading.
Order Flow on a Prop-Firm Account: What Actually Works on Apex, Topstep and 4PropTrader
The rules, the feeds and the drawdown maths nobody writes about because they trade their own money.
v0.7.4: Wiring the Full Order Book (MBO), and a Strategy That Became an Indicator
From ~15 visible levels to the whole book: the MBO rebuild, a heatmap that finally shows two sides, and signals with zero order routing.