Hasbrouck's Information Share: Measuring What a Trade Tells the Market
How much of a price move is information, and how much is noise? Hasbrouck's 1991 paper turned that question into something you can estimate with a bivariate VAR on trade signs and returns. Thirty-plus years later it's still the standard approach.
Every time you trade, you move the price. The question is: by how much, and what part of that move is permanent?
If you buy 100 shares of Apple and the price ticks up half a cent, that’s mostly noise. It will mean-revert in 30 seconds. If you buy 100 shares and the price jumps $1 and stays there, that’s information. The market learned something from your trade (or inferred it).
Hasbrouck’s information share (Hasbrouck, 1991) is a way to quantify the second thing. Given a sequence of trades and a sequence of price changes, what fraction of price variance is “permanent” (information) versus “transitory” (microstructure noise)? The previous article, Glosten-Milgrom, told you why trades move prices permanently, in theory. This one hands you a measuring instrument that runs on real data. Harris devotes space to the topic as well (Harris, Trading and Exchanges, Ch. 10 and Ch. 13).
One terminology warning before we start. In the literature, “information share” more often refers to Hasbrouck’s later cross-market price-discovery measure (Hasbrouck, 1995: when one asset trades in several markets, which market contributes the price discovery). This article uses the term for the 1991 paper’s “share of price variance attributable to trade flow.” The two are close cousins but different objects; don’t mix them up when searching the literature.
The Problem
You’re given a series of trade signs (or any signed trade indicator; in practice you infer signs from quote comparisons), and a series of midprice changes where is the midprice at time .
You want to know: if I observe a buy at time followed by various other events, what part of the resulting price move is “the market learning something”?
The Hasbrouck VAR
The Hasbrouck model is a bivariate VAR on :
where is the lag length (typically 5–20 for daily data, smaller for high-frequency). The residuals and are correlated, and that correlation is what drives the information-share bounds later.
If trades and prices were independent (random-walk prices, random trade flow), the off-diagonal terms would be zero. In real data they aren’t: past returns drive trade signs (momentum chasing, mean reversion), and past trade signs drive returns (price impact). The cross-equation structure captures exactly this feedback between trade flow and price movement.
Hasbrouck’s key step is not the estimation but the reading: convert the VAR to its moving-average representation, look at the long-run response of price to a trade shock, and separate it from the part that decays.
The Moving-Average Representation
Invert the VAR to get the MA() form:
The are the impulse response of price to a price shock, the the impulse response of price to a trade shock. As every individual coefficient decays to zero ( is a stationary return series); the interesting object is the cumulative response. For trade shocks it converges to a non-zero value:
This is the permanent price impact of a trade shock: a unit shock to trade flow (one extra buy) permanently moves the price level by units. It’s the empirical counterpart of the Glosten-Milgrom belief update that never reverses — except now it’s estimated from data.
The Variance Decomposition
Price-change variance decomposes by shock source:
where , , and .
The information share is the fraction attributable to the trade shock (second and third terms):
The trouble is the cross-term: can be positive or negative, so the IS can in principle exceed 1 or go negative — when the two shocks are correlated, “whose variance is this” has no unique answer. The standard treatment attributes the cross-term fully to each side in turn, which yields a bracket:
with the point estimate taken as the average:
Or simply report the range . A wide range means the two shocks are deeply entangled; don’t over-trust the point estimate.
One honesty note: Hasbrouck’s original paper decomposes the variance of the efficient-price (random-walk component) innovation, not directly. The version above is a structurally identical simplification for exposition; the qualitative conclusions match, but if you want to reproduce published numbers, follow the original random-walk decomposition (Hasbrouck’s 2007 textbook, Ch. 5, has the full treatment).
Reading the Number
: half of price-change variance is “information” (permanent, trade-driven), half is “noise” (transitory, mean-reverting). : ninety percent of price moves bounce back — the normal state of a liquid large-cap on a quiet day. : price movement is mostly information-driven — what a small-cap with informed flow, or a large-cap around earnings, looks like.
As a magnitude anchor: estimates for liquid US equities on ordinary days tend to land somewhere in the 0.2–0.6 band (Harris Ch. 10 gives the empirical context on trade informativeness), with the exact figure drifting by sample, frequency, and method — trust the order of magnitude, not the decimals. Higher IS means the market is absorbing information faster; lower IS means noise trading dominates.
The Permanent Impact Coefficient
The same MA representation gives you a second quantity, related to the IS but distinct: the permanent price impact per unit trade, . The IS is a ratio — “what share of variance is information.” is an absolute quantity — “one extra buy leaves the price permanently how much higher.” Execution people usually care more about the latter, because it is precisely the non-refundable part of the cost of demanding liquidity.
Empirically, the permanent impact of a trade grows roughly with the square root of its size (article 8 goes deep on this): the impact of a size- trade scales like , not like . One implication: slicing a parent order mostly saves you temporary impact; the permanent part largely cannot be sliced away.
A Numerical Example
A tiny example illustrates the structure. Suppose we have the following VAR(1):
with , , .
Exact inversion requires solving the two equations jointly; here the cross-feedback is second-order (), so dropping it lets us work by hand: the MA coefficients of on are approximately , decaying exponentially, and on approximately , also decaying.
Permanent impact:
A unit trade shock permanently moves the price by 0.143 units. The three sums of squares:
Variance contributions: price shock ; trade shock ; cross-term . Total .
Roughly 13% of price variance is attributable to trade flow under this toy calibration. The number itself means nothing (I made the parameters up); the structure does: trade-shock variance is sizable () but its transmission into price is weak ( starting at 0.10 and decaying), so its share ends up modest. On real US equity data you generally get higher.
Python Implementation
A simplified version using statsmodels:
import numpy as np
import pandas as pd
from statsmodels.tsa.api import VAR
def hasbrouck_is(returns, trade_signs, lags=10):
"""
Compute Hasbrouck information share from a bivariate VAR.
returns: array of price (or midprice) changes
trade_signs: array of signed trade indicators (+1 buy, -1 sell)
"""
df = pd.DataFrame({"r": returns, "x": trade_signs})
var = VAR(df)
result = var.fit(maxlags=lags, ic="aic")
res = result.resid
sigma = res.cov()
# Moving-average coefficients via simulation impulse responses
irf = result.irf(periods=50).irfs # shape (periods+1, 2, 2)
# irf[t, 0, 1] is response of r at t to a unit shock to x at time 0
alpha = irf[:, 0, 0] # response of r to r-shock
beta = irf[:, 0, 1] # response of r to x-shock
var_r = sigma.iloc[0, 0] * np.sum(alpha**2) + \
sigma.iloc[1, 1] * np.sum(beta**2) + \
2 * sigma.iloc[0, 1] * np.sum(alpha * beta)
trade_contrib = sigma.iloc[1, 1] * np.sum(beta**2)
cross = 2 * sigma.iloc[0, 1] * np.sum(alpha * beta)
is_max = (trade_contrib + abs(cross)) / var_r
is_min = (trade_contrib - abs(cross)) / var_r
return float((is_max + is_min) / 2), float(beta.sum())
The most fragile link in a real implementation is not the VAR. It’s the input: the trade signs.
Trade Sign Inference
You don’t always know whether a trade was buyer- or seller-initiated. The standard fix is the Lee-Ready algorithm (1991):
- If the trade price is above the midprice → buyer-initiated.
- If below → seller-initiated.
- If exactly at the mid → use the quote rule or tick test (compare to the last trade price).
Lee-Ready runs at roughly 80–85% accuracy on US equity data. Misclassified signs are not harmless noise — they systematically shrink the estimated toward zero, so the IS gets biased down. On high-frequency crypto data, where quotes go stale, accuracy is worse. The rule is simple: use exchange-side trade sign data when a vendor provides it, fall back to Lee-Ready otherwise, and carry that layer of uncertainty into your conclusions. Harris Ch. 10 discusses this.
A Worked Empirical Example
What does the IS look like on real data? Construct a typical case: a year of daily observations on a US large-cap, daily midprice returns , daily net buy-minus-sell signs (from Lee-Ready or a vendor). Estimating a VAR(5) yields coefficients like:
The contemporaneous coefficient on in the return equation (0.12) is the immediate price impact: a 1-unit shock to net buying moves the price 0.12 units the same day. The lagged coefficients (0.05, 0.02) are smaller — part of the impact decays. After MA inversion the cumulative impulse response is : one net-buy day moves the price 0.20 units permanently. The information share works out to about 0.35 — a third of daily price variance is permanent and trade-driven, the rest is noise (bid-ask bounce, temporary order-flow imbalance, mean reversion).
That pattern is typical for US large-caps on ordinary days, but the IS is not a constant property of the asset. Around earnings it spikes toward 0.6 or higher, because trade flow genuinely carries information then; on quiet summer Fridays it can drop below 0.10. Same stock, same month — change the regime and the number changes.
Connection to Glosten-Milgrom
In Glosten-Milgrom, the dealer’s belief update after observing a buy implies a permanent price move (binary value, equal priors):
In Hasbrouck, the permanent price impact of a trade shock is . Identify the two, and you can back out the informed-trader share from empirical impact:
where is the permanent price impact of a typical-size trade. As a magnitude demonstration (illustrative numbers, not a calibration): suppose a typical trade permanently moves a $100 stock by about one cent, and the dealer's fundamental uncertainty range is $V_H - V_L \approx 5$dollars. Then$\pi \approx 2 \times 0.01 / 5 = 0.004$ — informed flow in the tenths-of-a-percent range, the same order of magnitude the Glosten-Milgrom article recovered from spreads. Two completely different entry points — spreads versus impact — pointing at the same magnitude is exactly the evidence that the two models are two faces of one mechanism: Glosten-Milgrom is the structural model that gives the IS its economic meaning; Hasbrouck is the measurement tool.
The Literature Since
Hasbrouck (1991) ran the original empirics on NYSE/AMEX stocks. The framework was then pushed further: Hasbrouck (1995) recast “information share” as a cross-market price-discovery attribution — when the same stock trades in several venues, who discovers the price first — and that version became the standard tool for futures-versus-spot and cross-listing studies; Hasbrouck’s 2007 textbook is the modern consolidation. Practitioners don’t need the paper trail so much as the usage: the IS is a market-quality indicator, computable for any asset class with trade and quote data. High-IS markets are absorbing information fast; low-IS markets are dominated by noise.
Using It in a Strategy
The first use is diagnosing your edge. If you run a momentum strategy and your trades persistently land in high-IS regimes, your edge is consistent with informed trading; if your trades cluster in low-IS regimes, you may be harvesting noise. This checkup is cheap and worth running.
The second use is pricing your impact. Knowing for an asset tells you how much of your trade’s price move is non-refundable — the permanent cost of demanding liquidity. The third use follows from the second: calibrating execution algos. Your TWAP/VWAP should expect the market to move permanently by roughly over the execution horizon, where is total size. If the algo’s price improvement keeps coming in below that number, you are losing money to impact and the slicing scheme needs a redesign.
Misreadings, and Where the Method Breaks
“High IS means the market is efficient” — half true. High IS means trade flow is informative, which is one component of efficiency; it does not mean prices are unbiased estimates of fundamental value. “Low IS means no information” — also wrong; it only means the information isn’t flowing through trades (it might be arriving via quote updates instead). The most dangerous misreading is treating the IS as an asset constant: it swings hard across regimes, so computing it once and filing it away is the same as not computing it.
The method has its own edges. The variance decomposition gets dominated by the cross-term under strong feedback (price → trade flow → price), widening the bracket and destabilizing the point estimate; the framework assumes the efficient price is a random walk, and a mean-reverting efficient price biases the IS; sign-inference errors propagate straight into the estimate; and the lag choice (AIC is standard but not unique) moves the numbers. For high-frequency applications the realized spread (article 3) is usually more interpretable; the IS is best on daily or weekly data, where the random-walk assumption is plausible. Treat it as one tool among many, not ground truth.
The Arithmion Implementation
arithmion.microstructure.InformationShare wires the whole pipeline: Lee-Ready sign inference (or external signs), VAR estimation with automatic lag selection, IS point estimate with bootstrap confidence interval, and the permanent/temporary impact decomposition. The output feeds the SpreadAnalyzer (article 3) and the ImpactModel (article 8). The permanent/temporary split is also the empirical foundation of the Almgren-Chriss execution model (article 9), which puts those two components into an optimization and solves for the execution trajectory.
References
- Harris, L. Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press, 2003. Ch. 10 (trade informativeness), Ch. 13 (price discovery / dealers). ISBN: 978-0-19-514470-3.
- Hasbrouck, J. “Measuring the Information Content of Stock Trades.” Journal of Finance, 1991.
- Hasbrouck, J. “One Security, Many Markets: Determining the Contributions to Price Discovery.” Journal of Finance, 1995.
- Hasbrouck, J. Empirical Market Microstructure. Oxford University Press, 2007. Ch. 5 (information share). ISBN: 978-0-19-518115-9 (hardcover) / 978-0-19-539320-0 (paperback).
- Lee, C., Ready, M. “Inferring Trade Direction from Intraday Data.” Journal of Finance, 1991.