Hasbrouck 信息份额:度量一笔成交告诉市场什么
价格的波动里多少是信息,多少是噪音?Hasbrouck 1991 年用一个双变量 VAR(成交方向和收益)把这个问题变成了可以估计的量。30 多年后它还是标准做法。
每当你下一笔交易,价格都会动。问题是:动多少?其中多大比例是永久的?
如果你用 100 股买苹果,价格只涨了半美分,那基本是噪音,半分钟内就会均值回复。如果你用 100 股买苹果,价格跳了 1 美元并停在那里,那是信息。市场从你这笔交易(或者从对你的推断)里学到了东西。
Hasbrouck 信息份额(Hasbrouck, 1991)就是把第二种情况量化的方法。给定一串成交和一串价格变化,价格变动里有多大比例是”永久的”(信息)vs. “短暂的”(微观结构噪音)?上一篇 Glosten-Milgrom 从理论上告诉你成交为什么会永久移动价格;这一篇给你一台能在真实数据上跑的测量仪。Harris 也给了篇幅(Harris,《Trading and Exchanges》,第 10 和 13 章)。
一个术语提醒:文献里 “information share” 这个词更常指 Hasbrouck 后来那篇跨市场价格发现测度(Hasbrouck, 1995,同一资产在多个市场交易时,哪个市场贡献了价格发现)。本文沿用这个词指 1991 年那篇的”成交流对价格方差的贡献份额”。两者思想同源,但对象不同,查文献时别混。
问题
给你的是:一串成交方向 (或者任何有方向的成交指标;实践中一般从报价对比推断),和一串中间价变化 ,其中 是 时刻的中间价。
你想知道:如果我在 时刻观察到一笔买入,后面跟着各种事件,结果价格波动里有几成是”市场学到了东西”?
Hasbrouck VAR
Hasbrouck 模型是对 的双变量 VAR:
其中 是滞后阶数(日频通常 5–20,高频更小)。残差 和 是相关的,这个相关性决定了后面的信息份额区间。
如果成交和价格无关(价格随机游走、成交随机),非对角元应该为零。真实数据里都不是:过去的收益影响成交方向(追涨杀跌、均值回归),过去的成交方向影响收益(价格冲击)。这两个方程之间的跨方程结构,抓的就是成交流和价格变动之间的反馈。
Hasbrouck 的关键一步不在估计而在解读:把 VAR 转成移动平均表示,看一笔成交冲击对价格的长期响应,把它从短暂的部分里分离出来。
移动平均表示
把 VAR 求逆得到 MA() 形式:
是价格对价格冲击的脉冲响应, 是价格对成交冲击的脉冲响应。 时单个系数都衰减到零( 是平稳的收益序列),有意思的是累积响应。成交冲击的累积响应收敛到一个非零值:
这就是成交冲击的永久价格冲击:一笔成交流量的单位冲击(多一笔买入)把价格水平永久移动 个单位。这正是 Glosten-Milgrom 里”dealer 信念被更新后不再回来”那部分,只不过现在是从数据里估出来的。
方差分解
价格变动的方差可以按冲击来源分解:
其中 ,,。
信息份额是这个方差里归功于成交冲击(第二加第三项)的比例:
麻烦在交叉项: 可正可负,所以 IS 理论上可以超过 1 或为负——两类冲击相关时,“这份方差算谁的”没有唯一答案。标准处理是把交叉项分别全归给一侧,得到一个区间:
点估计取两者均值:
或者干脆报告区间 。区间宽说明两类冲击纠缠得深,点估计别太当真。
诚实起见说明一句:Hasbrouck 原文分解的是有效价格(随机游走分量)创新的方差,上面这个对 的版本是结构相同的简化展示,定性结论一致,但你真要复现论文数字,要按原文对随机游走分量做分解(Hasbrouck 2007 教科书第 5 章有完整推导)。
读数
:价格变动方差一半是”信息”(永久、源于成交流),一半是”噪音”(短暂、会均值回复)。:九成价格变动会弹回来——流动大市值股票在平静日子的常态。:价格变动大部分是信息驱动——小盘股有知情流时,或大市值股票在财报前后的样子。
量级参考:流动美股在平常日子估出来的 IS 多落在 0.2–0.6 一带(Harris 第 10 章对成交信息含量的讨论给了实证脉络),具体数字随样本、频率和方法漂移,量级比小数点可靠。IS 越高,市场越在快速吸收信息;IS 越低,噪声交易占比越大。
永久冲击系数
同一套 MA 表示还免费送你一个跟 IS 相关但不同的量:单位成交的永久价格冲击 。IS 是个比例,回答”方差里几成是信息”; 是个绝对量,回答”多一笔买入,价格长期停在高多少的位置”。做执行的人往往更关心后者,因为它直接就是”要流动性”的永久成本。
经验上,成交的永久冲击随规模近似按平方根增长(第 8 篇细讲):规模 的成交的冲击约与 成比例,而不是与 成比例。这意味着拆单能省的主要是暂时冲击,永久冲击拆不掉多少。
一个数值例子
一个小例子说明结构。假设我们有下面这个 VAR(1):
,,。
严格求逆要联立两个方程;这里交叉反馈是二阶小量(),略掉它可以手算: 对 的 MA 系数近似 ,指数衰减;对 的系数近似 ,也衰减。
永久冲击:
单位成交冲击把价格永久移动 0.143 个单位。三个平方和:
方差贡献:价格冲击 ;成交冲击 ;交叉项 。 合计 。
这个玩具标定下大约 13% 的价格变动方差归因于成交流。数字本身没意义(是我编的参数),结构有意义:成交冲击方差不小(),但它对价格的传导系数小( 从 0.10 起衰减),所以贡献份额不高。真实美股数据上你拿到的 IS 一般更高。
Python 实现
用 statsmodels 的简化版本:
import numpy as np
import pandas as pd
from statsmodels.tsa.api import VAR
def hasbrouck_is(returns, trade_signs, lags=10):
"""
通过双变量 VAR 计算 Hasbrouck 信息份额。
returns: 价格(或中间价)变化数组
trade_signs: 有方向成交指标数组(+1 买,-1 卖)
"""
df = pd.DataFrame({"r": returns, "x": trade_signs})
var = VAR(df)
result = var.fit(maxlags=lags, ic="aic")
res = result.resid
sigma = res.cov()
# 通过仿真脉冲响应求移动平均系数
irf = result.irf(periods=50).irfs # shape (periods+1, 2, 2)
# irf[t, 0, 1] 是 r 在 t 时刻对 x 在 0 时刻单位冲击的响应
alpha = irf[:, 0, 0] # r 对 r-shock 的响应
beta = irf[:, 0, 1] # r 对 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())
真实实现里最脆的一环不在 VAR,在输入:成交方向。
成交方向推断
你常常不知道一笔是买方主导还是卖方主导。标准修法是 Lee-Ready 算法(1991):
- 成交价高于中间价 → 买方主导。
- 低于中间价 → 卖方主导。
- 正好在中间价上 → 用 quote rule 或 tick test(跟上一笔成交价比较)。
Lee-Ready 在美股数据上准确率大约 80–85%。方向标错不是无害噪音——它系统性地把 往零压,IS 会被低估。在高频加密数据上报价可能过时,准确率更差。所以规矩很简单:能拿到交易所侧成交方向数据(部分数据商提供)就用它,拿不到再用 Lee-Ready,并且对结论留出这一层不确定性。Harris 第 10 章讨论过这件事。
一个经验算例
IS 在真实数据上长什么样?构造一个典型情形:一年某美股大盘股的日数据,日中间价收益 ,日买卖方向净值 (来自 Lee-Ready 或数据商)。估计 VAR(5) 得到类似这样的系数:
收益方程里 的同期系数()是即时价格冲击:净买入一个单位的冲击同日推动价格 单位。滞后系数()较小,意味着冲击一部分会衰减。MA 求逆后累积脉冲响应 :一个净买入日永久推动价格 0.20 个单位。信息份额算出来 0.35 左右——日价格方差三分之一是成交驱动的永久部分,其余是噪音(买卖弹跳、暂时的订单流不平衡、均值回复)。
这个模式在美股大盘股的平常日子是典型的,但 IS 不是资产的常数属性。财报前后它能飙到 0.6 以上,因为那时成交流确实有信息;安静的夏季周五能跌到 0.10 以下。同一只股票、同一个月,情景一换数字就换。
跟 Glosten-Milgrom 的联系
在 Glosten-Milgrom 里,dealer 观察到一笔买入后的信念更新意味着价格的永久移动(二元价值、等先验):
在 Hasbrouck 里,一笔成交冲击的永久价格冲击是 。把两者对上,就能从经验冲击反推知情者占比:
其中 是一笔典型规模成交的永久价格冲击。做个量级演示(数字是演示用的,不是标定):假设一笔典型成交把一只 100 美元的股票永久推动约 1 美分,dealer 的基本面不确定区间 美元,那么 。知情流量占比零点几个百分点——和 Glosten-Milgrom 那篇里从价差反推出的量级一致。两个完全不同的入口(价差 vs. 冲击)指向同一个数量级,这正是两个模型互为表里的证据:Glosten-Milgrom 是给 IS 经济含义的结构模型,Hasbrouck 是它的经验测量工具。
后续文献
Hasbrouck (1991) 在 NYSE/AMEX 股票上做了原始实证。这套框架之后被推到更远:Hasbrouck (1995) 把”信息份额”重新定义为跨市场价格发现的归属问题(同一只股票在多个市场交易,谁先发现价格),成为期货 vs. 现货、跨挂牌市场这类研究的标准工具;Hasbrouck 2007 年的教科书给了现代整理。对实战派来说不用追文献细节,记住用法就行:IS 是个市场质量指标,任何有成交和报价数据的资产类都能算,高 IS 的市场在快速吸收信息,低 IS 的市场噪音占主导。
在策略里怎么用
第一个用法是诊断 edge。如果你跑动量策略,而你的成交持续发生在 IS 高的时段,你的 edge 跟知情交易一致;如果你的成交集中在 IS 低的时段,你可能只是在捡噪音——这个体检便宜,值得做。
第二个用法是给冲击定价。知道了某资产的 ,你就知道自己的成交会永久推动多少价格,这是”要流动性”的不可退还部分。第三个用法接着第二个:标定执行算法。你的 TWAP/VWAP 应该预期市场在执行水平期内永久移动约 ( 是总规模);如果算法的价格改善持续小于这个数,你就在冲击上净亏,拆单方式要重新设计。
常见误读,以及它什么时候失灵
“高 IS 意味着市场有效率”——算是半句。IS 高意味着成交流有信息含量,这是效率的一个组成部分,但不意味着价格是基本面价值的无偏估计。“低 IS 意味着没有信息”——也不对,低 IS 只说明信息不通过成交流出来(比如都在报价更新里)。最危险的误读是把 IS 当资产常数:它跨情景剧烈波动,算一次就存档等于没算。
方法本身的边界也要清楚。方差分解在强反馈(价格 → 成交流 → 价格)下会被交叉项主导,IS 区间拉宽、点估计不稳;框架假设有效价格是随机游走,若有效价均值回复则 IS 有偏;成交方向推断的误差直接传进估计;滞后阶数的选择(AIC 是标准做法但不唯一)也会挪动数字。高频应用里实现价差(第 3 篇)通常比 IS 更好解读;IS 最适合日或周频数据,那里随机游走假设站得住。把它当众多工具中的一个,不是真理。
Arithmion 实现
arithmion.microstructure.InformationShare 把上面整条流水线接好了:Lee-Ready 成交方向推断(也接受外部方向)、VAR 自动选滞后阶、IS 点估计加自助法置信区间、永久/暂时冲击分解。输出喂给第 3 篇的 SpreadAnalyzer 和第 8 篇的 ImpactModel。冲击的永久/暂时分解也正是 Almgren-Chriss 执行模型(第 9 篇)的实证地基——那篇把这两个分量放进优化目标里求最优执行轨迹。
参考文献
- Harris, L. Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press, 2003. 第 10 章(成交信息含量),第 13 章(价格发现 / 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. 第 5 章(信息份额)。ISBN: 978-0-19-518115-9(精装)/ 978-0-19-539320-0(平装)。
- Lee, C., Ready, M. “Inferring Trade Direction from Intraday Data.” Journal of Finance, 1991.