Skip to content

KF-R03 / FLOW QUALITY / 22 SEPTEMBER 2026

Toxic flow, measured

Makers do not fear volume. They fear being picked off by it. VPIN puts a number on that fear, and the number is computable from a public trade feed.

HELM / 7 MIN READ

Equal volume buckets fill. Lopsided ones push the reading up and the quote wider.

Adverse selection, in one trade

A resting order is an option that anyone can exercise for free. Most of the time it gets exercised by someone with no view, rebalancing or buying a dip, and the maker earns the spread. Sometimes it gets exercised by someone who knows the next tick, and the maker pays for it. The difference between those two populations is the whole business.

Easley, Kiefer, O'Hara and Paperman built the first tractable model of this, estimating the probability that a given trade came from an informed participant from the daily imbalance of buys and sells (1996). Their PIN estimate needed a day of data and a maximum likelihood fit, which made it a research tool rather than a risk control.

From PIN to VPIN

The volume clock version drops the model fitting. Cut the tape into buckets of equal volume rather than equal time, measure how lopsided the buys and sells are inside each bucket, and average over the last n buckets.

VPIN=1ni=1nViBViSVVPIN = \frac{1}{n}\sum_{i=1}^{n} \frac{\left| V^{B}_{i} - V^{S}_{i} \right|}{V}
Volume synchronised probability of informed trading over n buckets of size V.

A balanced bucket means both sides traded without either one running the other over. A bucket where 90 percent of the volume lifts offers means someone wanted that side badly enough to pay for it. Sustained one sided buckets are the population level signature of informed flow (Easley, Lopez de Prado & O'Hara, 2012).

Volume clocking is the part that makes it work on crypto venues. Quiet hours produce few buckets and busy minutes produce many, so the measure samples the market when the market is actually doing something.

Splitting a bar into buys and sells

Public feeds often give bars rather than a signed tape, so the volume has to be split. Bulk volume classification assigns each bar a fraction of buy volume from the standardised price change over the bar, using the normal cumulative distribution.

VτB=VτΦ ⁣(ΔpτσΔp),VτS=VτVτBV^{B}_{\tau} = V_{\tau}\,\Phi\!\left(\frac{\Delta p_{\tau}}{\sigma_{\Delta p}}\right), \qquad V^{S}_{\tau} = V_{\tau} - V^{B}_{\tau}
Bulk volume classification of a bar, with Phi the standard normal CDF.

A bar that closes flat splits near half and half. A bar that rips assigns nearly all its volume to the buy side. The method is coarse by design; it is meant to survive a feed that does not tell you who initiated (Easley, Lopez de Prado & O'Hara, 2012b).

VPIN, Coinbase ETH-USD
connecting

Reading

VPIN not ready

Buckets filled

0/20

Each column is 25 ETH of traded volume, split into buy and sell by bulk volume classification. Balanced columns keep the reading low; one sided columns push it up. Quiet markets fill buckets slowly, so the window takes a few minutes to build.

VPIN computed live in your browser from the public Coinbase trade feed, 20 buckets of 25 ETH, bulk volume classification.

What a high reading does to a book

The sequence is mechanical. Markouts on recent fills turn negative. Width goes up, because the spread has to cover the expected loss to the informed share of the flow. Size comes down, because inventory built in a toxic regime is expensive to carry. If the regime persists, the maker stops quoting and the book is left to whoever is being paid to stay.

For a venue this shows up as a book that looks fine on the depth column and empties in the minute that matters. The tell is available before it happens: a reading that has been climbing for an hour is a forecast of a thinner book, not a description of one.

Where the measure fails

VPIN has a serious literature against it. Andersen and Bondarenko re-examined the flash crash claims and argued that the metric mostly tracks volatility and depends heavily on the bucket size, the number of buckets, and the classification scheme (2014). Run it with different parameters on the same tape and the level moves.

We use it the way a desk uses any indicator: the level is not a probability, and the shape over the last hour is the signal. Anyone reading our widget should treat it as one reading on one venue with one parameter set, not as a verdict on the market.

Improving the mix

A venue that measures its own flow quality can do something about it. Taker fees are the bluntest tool and they work: a fee that prices the option removes the trades that only made sense when the option was free. Rebates that pay on executed maker volume keep makers quoting through the bad regime instead of pulling. Order types that give makers a defensive priority, such as post only orders processed ahead of aggressors in the same block, cut the cost of being slow.

Volume tells a venue how busy it is. Flow quality tells it what that volume is worth. Those are different questions, and the second one decides how tight anyone will quote.

References

  1. 01Easley, D., Kiefer, N. M., O'Hara, M., & Paperman, J. B. (1996). Liquidity, Information, and Infrequently Traded Stocks. Journal of Finance, 51(4), 1405-1436.
  2. 02Easley, D., Lopez de Prado, M., & O'Hara, M. (2012). Flow Toxicity and Liquidity in a High-Frequency World. Review of Financial Studies, 25(5), 1457-1493.
  3. 03Easley, D., Lopez de Prado, M., & O'Hara, M. (2012b). Bulk Classification of Trading Activity. Johnson School Research Paper Series.
  4. 04Andersen, T. G., & Bondarenko, O. (2014). VPIN and the Flash Crash. Journal of Financial Markets, 17, 1-46.