量化交易中文教材

第 05 章 高频数据分析与市场微观结构

本章对应 Tsay 原书第 5 章。重点是统计建模:微观结构现象(非同步交易、买卖反弹)如何扭曲收益的统计性质,逐笔价格变化与成交间隔该用什么模型。交易机制、订单类型、做市商与流动性的制度性内容见第 07 册(Harris《Trading and Exchanges》),两章互补。

学习目标

  1. 能推导非同步交易模型下观测收益的均值、方差和自协方差,解释为什么会出现虚假的负自相关和组合层面的虚假领先–滞后。
  2. 掌握 Roll 模型,推导买卖反弹带来的 \(-0.5\) 一阶自相关,会用价格变化自协方差估计有效价差。
  3. 了解逐笔成交数据的四个经验特征(不等间隔、价格离散、日内 U 形、同秒多笔)及数据清洗要点。
  4. 掌握两类价格变化模型:有序 probit 和 ADS 分解模型,会读模型给出的条件概率。
  5. 掌握 ACD 久期模型(EACD/WACD/GACD)的定义、矩性质、风险函数含义和条件极大似然估计,了解门限 ACD、PCD 模型和用 ACD 建模日内极差。

读前导读

这一章在解决什么问题

前几章默认收益是「每天收盘价算出来的、等间隔的、连续取值的」数。到了日内逐笔数据,这三个默认全部失效:成交时间不等间隔,价格只能是最小价位(tick)的整数倍,成交价在买价和卖价之间来回跳。这一章回答两个问题:这些交易机制会怎样扭曲我们算出来的收益统计量?我们又该用什么模型直接描述逐笔价格和成交间隔?

和你已有知识的连接点很多。CFA 的交易成本部分讲过有效价差和隐性交易成本,Roll 模型告诉你如何只用成交价反推价差。CFA 讲过小盘股指数的收益「平滑」问题(以及另类资产估值平滑导致波动率被低估、自相关虚高),非同步交易是同一类现象:价格没有及时更新,导致统计量失真。有序 probit 和 logistic 回归是你在信用评分模型中见过的离散选择模型。ACD 模型则是 GARCH 的「孪生兄弟」:GARCH 描述波动率如何聚集,ACD 描述成交间隔如何聚集,公式几乎一样。

本章的实务意义很直接:用成交价算的短周期收益会出现假反转、假动量,回测时若不处理会高估策略表现。

需要先想起来的数学

1. 几何级数及其导数。 \(\sum_{k\ge0}\pi^k=\frac1{1-\pi}\)(\(|\pi|<1\))。两边对 \(\pi\) 求导得 \(\sum_{k\ge1}k\pi^{k-1}=\frac1{(1-\pi)^2}\),等价于 \(\sum_{k\ge0}(k+1)\pi^k=\frac1{(1-\pi)^2}\)。5.2 节的均值和协方差推导全靠这两个式子。例:\(\pi=0.5\) 时 \(1+2(0.5)+3(0.25)+\cdots=4\)。见 第 00 册第 04 章 级数与收敛 和 第 00 册第 02 章 导数与泰勒展开。

2. 全期望公式(按情形加权)。 若事件 \(B_k\) 两两互斥、覆盖全部情形,则 \(E(X)=\sum_kP(B_k)E(X\mid B_k)\)。非同步交易模型就是把「上次成交是在 \(k\) 期之前」分成无穷多种情形再加权。见 第 00 册第 07 章 概率中的分析工具。

3. 协方差的双线性。 \(\operatorname{Cov}(aX+bY,Z)=a\operatorname{Cov}(X,Z)+b\operatorname{Cov}(Y,Z)\)。Roll 模型的推导只用这一条。

4. 密度、生存函数与风险率。 密度 \(f(x)\),生存函数 \(S(x)=P(X>x)=1-F(x)\)。风险率 \(h=f/S\) 就是信用风险里的违约强度(hazard rate):已经活到 \(x\) 的条件下,下一瞬间「出事」的速率。指数分布的风险率为常数,对应常数违约强度。见 第 00 册第 03 章 积分。

5. 伽马函数 \(\Gamma(\cdot)\)。 阶乘的推广,\(\Gamma(n)=(n-1)!\),\(\Gamma(1)=1\),\(\Gamma(1.5)\approx0.886\)。Weibull 和广义 Gamma 分布的标准化常数中用到它,只需知道它是一个可以查表或用软件算出的数。

怎么读这一章

核心必读:5.2(非同步交易,至少看懂结论和回测警示)、5.3(Roll 模型,推导短而重要)、5.4 的经验特征、5.6.1–5.6.2(ACD 的定义及其与 GARCH 的对应)、5.6.3 的风险函数。第一次可以只看结论的:5.2.2 方差公式中关于 \(\sum(k+1)^2\pi^k\) 的证明、5.6.2 EACD 矩的推导、5.6.3 末尾标准化密度的具体形式、5.6.4 的对数似然表达式(会用代码估计即可)、5.8 PCD 模型、5.9 的门限 ACD 部分。建议顺序:5.1 → 5.3 → 5.2 → 5.4 → 5.6 → 5.5 → 5.7 → 5.9 → 5.8。


5.1 高频数据概述

高频数据(high-frequency data)指在细时间间隔上采集的观测;在金融中常指日频以下的数据,终极形态是逐笔成交(transaction-by-transaction)数据,时间戳精确到秒或更细。原书使用的数据源包括 NYSE 的 TAQ(Trades and Quotes,自 1992 年起收录 Consolidated Tape 上的全部成交和报价)和 TORQ 数据(Hasbrouck 1992)。

高频数据能回答低频数据回答不了的问题:不同交易制度下价格发现效率的比较、买卖报价的动态、订单驱动市场中谁在提供流动性等。一个有趣的例子是 Cho, Russell, Tiao & Tsay (2003) 用台湾 340 多只股票的 5 分钟收益发现,价格接近涨跌停板时有向停板靠拢的磁吸效应(magnet effect)。

本章依次讨论:非同步交易(5.2)、买卖价差(5.3)、逐笔数据的经验特征(5.4)、价格变化模型(5.5)、久期模型(5.6–5.7)、价格变化与久期的二元模型(5.8),以及一个把 ACD 用于日内价格极差的应用(5.9)。


5.2 非同步交易

5.2.1 现象

不同股票交易频率不同,同一股票的交易强度也随时间变化。"日收盘价"是当天最后一笔成交价,但最后一笔成交的时刻每天不同、每只股票不同。如果把日收益当成严格等间隔的 24 小时收益,即使真实收益独立,也会得出关于可预测性的错误结论。

非同步交易(nonsynchronous trading)会导致:(a) 股票收益之间出现滞后 1 的交叉相关;(b) 组合收益出现滞后 1 的序列相关;(c) 某些情形下单只股票收益出现负序列相关。

直观例子:A、B 两只股票相互独立,A 交易频繁,B 交易稀少。收盘前出现的市场消息当天就反映在 A 的收盘价上,而 B 可能当天已无成交,要到次日才反映。于是 A 看起来"领先" B,出现从 A 到 B 的显著滞后 1 交叉相关;同时持有 A、B 的组合则表现出正的滞后 1 自相关。

5.2.2 Lo–MacKinlay 模型

设真实连续复利收益 \(\{r_t\}\) iid,均值 \(\mu\)、方差 \(\sigma^2\);每期不成交的概率为 \(\pi\),与 \(r_t\) 独立。观测收益 \(r_t^o\):无成交时为 0;有成交时为自上次成交以来累积的真实收益。于是

\[r_t^o=\begin{cases}0, & \text{概率 }\pi,\\ r_t, & \text{概率 }(1-\pi)^2,\\ r_t+r_{t-1}, & \text{概率 }(1-\pi)^2\pi,\\ \quad\vdots\\ \sum_{i=0}^{k}r_{t-i}, & \text{概率 }(1-\pi)^2\pi^k,\\ \quad\vdots\end{cases}\tag{5.1}\]

\(r_t^o=\sum_{i=0}^{k}r_{t-i}\) 当且仅当 \(t\) 期成交、\(t-1,\dots,t-k\) 期都不成交、\(t-k-1\) 期成交,概率 \((1-\pi)\pi^k(1-\pi)\)。概率之和 \(\pi+(1-\pi)^2\sum_k\pi^k=\pi+(1-\pi)=1\)。

均值。 利用 \(\sum_{k\ge0}(k+1)\pi^k=1/(1-\pi)^2\):

\[E(r_t^o)=(1-\pi)^2\mu\sum_{k\ge0}(k+1)\pi^k=\mu.\tag{5.2}\]

推导拆解: 第一步(按情形加权):情形「\(r_t^o=\sum_{i=0}^kr_{t-i}\)」的概率是 \((1-\pi)^2\pi^k\),此时 \(r_t^o\) 是 \(k+1\) 个独立真实收益之和,期望为 \((k+1)\mu\);「不成交」情形贡献 \(0\)。所以 \(E(r_t^o)=\sum_{k\ge0}(1-\pi)^2\pi^k(k+1)\mu\)。 第二步(几何级数求导):由 \(\sum_{k\ge0}\pi^{k+1}=\frac{\pi}{1-\pi}\),两边对 \(\pi\) 求导得 \(\sum_{k\ge0}(k+1)\pi^k=\frac{1}{(1-\pi)^2}\)。 第三步:代入后 \((1-\pi)^2\) 恰好约掉,得 \(\mu\)。 直觉:观测收益要么是 0,要么是「攒了好几期」的收益,平均下来正好补齐,不会丢失也不会凭空多出收益。非同步交易只改变收益「何时」被观测到,不改变总量。

方差。 \(E[(\sum_{i=0}^{k}r_{t-i})^2]=(k+1)\sigma^2+(k+1)^2\mu^2\),再用恒等式 \(\sum_{k\ge0}(k+1)^2\pi^k=\frac{2}{(1-\pi)^3}-\frac{1}{(1-\pi)^2}\)(证明:令 \(H=\sum(k+1)^2\pi^k\),\(G=\sum(2k+1)\pi^k\),则 \((1-\pi)H=G\),\((1-\pi)G=1+2\pi+2\pi^2+\cdots=\frac{2}{1-\pi}-1\)),得

\[E[(r_t^o)^2]=\sigma^2+\mu^2\Big(\frac{2}{1-\pi}-1\Big),\qquad \operatorname{Var}(r_t^o)=\sigma^2+\frac{2\pi\mu^2}{1-\pi}.\tag{5.6}\]

自协方差。 \(r_t^or_{t-1}^o\) 非零,要求 \(t\) 和 \(t-1\) 都成交;若 \(t-2\) 也成交(概率 \((1-\pi)^3\)),乘积为 \(r_tr_{t-1}\);若 \(t-1\) 成交前已连续 \(k-1\) 期未成交,乘积为 \(r_t\sum_{i=1}^{k}r_{t-i}\)(概率 \((1-\pi)^3\pi^{k-1}\))。由于不同期独立,\(E(r_tr_{t-j})=\mu^2\),

\[E(r_t^or_{t-1}^o)=(1-\pi)^3\mu^2\sum_{k\ge1}k\pi^{k-1}=(1-\pi)\mu^2,\qquad \operatorname{Cov}(r_t^o,r_{t-1}^o)=-\pi\mu^2.\tag{5.8}\]

推导拆解: 第一步:只有 \(t\) 和 \(t-1\) 都成交时乘积 \(r_t^or_{t-1}^o\) 才非零。此时 \(r_t^o=r_t\)(因为 \(t-1\) 刚成交过,只攒了一期)。 第二步:\(r_{t-1}^o\) 取决于 \(t-1\) 之前连续多少期没成交。若 \(t-2,\dots,t-k\) 都没成交而 \(t-k-1\) 成交,则 \(r_{t-1}^o=\sum_{i=1}^{k}r_{t-i}\),共 \(k\) 项。该情形概率为 \((1-\pi)\)(\(t\) 成交)\(\times(1-\pi)\)(\(t-1\) 成交)\(\times\pi^{k-1}\times(1-\pi)\)(\(t-k-1\) 成交)\(=(1-\pi)^3\pi^{k-1}\)。 第三步:\(r_t\) 与 \(r_{t-1},\dots\) 独立,所以 \(E(r_t\sum_{i=1}^kr_{t-i})=k\mu^2\)。加权求和并用 \(\sum_{k\ge1}k\pi^{k-1}=1/(1-\pi)^2\),得 \((1-\pi)\mu^2\)。 第四步:\(\operatorname{Cov}=E(r_t^or_{t-1}^o)-[E(r_t^o)]^2=(1-\pi)\mu^2-\mu^2=-\pi\mu^2\)。 直觉:负协方差来自「乘积为零」的情形。只要两期中有一期没成交,乘积就是 0,而两期平均值仍是 \(\mu\),所以乘积的平均低于 \(\mu^2\)。

一般地 \(\operatorname{Cov}(r_t^o,r_{t-j}^o)=-\mu^2\pi^j\),\(j\ge1\),一阶自相关

\[\rho_1(r_t^o)=\frac{-(1-\pi)\pi\mu^2}{(1-\pi)\sigma^2+2\pi\mu^2}.\]

结论:只要 \(\mu\ne0\),非同步交易就在单只股票的观测收益中诱导出负自相关。日频下 \(\mu\) 远小于 \(\sigma\),所以这一效应对单只股票通常很小;但推广到 \(N\) 只证券的组合(Campbell, Lo & MacKinlay 1997 第 3 章),组合层面会出现正的滞后相关,在小盘股指数中可能相当显著。在时间序列文献中,这一现象等价于由成交概率支配的随机时间聚合(random temporal aggregation)。

对回测的警示:小盘股组合或指数的显著正滞后 1 自相关不一定是可交易的动量,可能只是成分股非同步交易的产物。

金融直觉:单只股票的偏差为什么小、组合的偏差为什么大?单只股票的一阶自协方差是 \(-\pi\mu^2\),日收益 \(\mu\) 约 0.05%,\(\mu^2\) 微乎其微。组合则不同:昨天下午的市场冲击 \(\epsilon\) 是所有股票共有的,活跃股当天反映、冷门股次日才反映,于是组合今天的收益里有一部分是「昨天市场冲击的延迟兑现」,组合的自协方差与冲击方差 \(\sigma^2\) 同阶,而不是与 \(\mu^2\) 同阶,因此大得多。这和私募股权、房地产基金的「估值平滑」是同一回事:报告的净值滞后于真实价值,导致报告收益序列正自相关、波动率被低估。想交易这种「动量」时,你会发现成交时用的是冷门股的真实价格,那部分超额收益其实不存在。


5.3 买卖价差与 Roll 模型

5.3.1 背景

在 NYSE 这类有做市商的市场,做市商以买价(bid)\(P_b\) 买入、以更高的卖价(ask)\(P_a\) 卖出,向市场提供流动性。\(S=P_a-P_b\) 称买卖价差(bid–ask spread),是做市商的主要收入来源。做市商制度、价差构成(订单处理成本、存货成本、逆向选择成本)的经济学见第 07 册;这里只关心价差对价格序列统计性质的影响。

5.3.2 Roll (1984) 模型

\[P_t=P_t^*+I_t\frac{S}{2},\tag{5.9}\]

\(P_t^*\) 是无摩擦市场中的基本价值,\(I_t\) 是独立的订单方向指示变量,以各 0.5 的概率取 \(+1\)(买方发起,成交在卖价)或 \(-1\)(卖方发起,成交在买价)。

若 \(P_t^*\) 不变,\(\Delta P_t=(I_t-I_{t-1})S/2\)。由 \(E(I_t)=0\)、\(\operatorname{Var}(I_t)=1\):

\[\operatorname{Var}(\Delta P_t)=\frac{S^2}{2},\qquad \operatorname{Cov}(\Delta P_t,\Delta P_{t-1})=-\frac{S^2}{4},\qquad \operatorname{Cov}(\Delta P_t,\Delta P_{t-j})=0\ (j>1),\tag{5.11–5.13}\]
\[\rho_1(\Delta P_t)=-0.5,\qquad \rho_j(\Delta P_t)=0\ (j>1).\tag{5.14}\]

这就是买卖反弹(bid–ask bounce)。直观:成交价只取 \(P_a\) 或 \(P_b\);上一笔在 \(P_a\),这一笔要么不变要么跌到 \(P_b\);上一笔在 \(P_b\),这一笔要么不变要么涨到 \(P_a\)。价格在两个价位间来回弹,所以相邻价格变化负相关,但不会产生滞后 1 以外的相关。

推导拆解:记 \(c=S/2\),\(\Delta P_t=c(I_t-I_{t-1})\)。 方差:\(I_t\) 与 \(I_{t-1}\) 独立且方差都是 1,\(\operatorname{Var}(\Delta P_t)=c^2(1+1)=S^2/2\)。 一阶协方差:用协方差的双线性展开 \(\operatorname{Cov}(I_t-I_{t-1},\,I_{t-1}-I_{t-2})\),四项中只有 \(\operatorname{Cov}(-I_{t-1},I_{t-1})=-1\) 非零(其余各项是不同时刻的 \(I\),独立),所以 \(\operatorname{Cov}(\Delta P_t,\Delta P_{t-1})=-c^2=-S^2/4\)。 二阶协方差:\(\Delta P_t\) 含 \(I_t,I_{t-1}\),\(\Delta P_{t-2}\) 含 \(I_{t-2},I_{t-3}\),没有共同项,协方差为零。 自相关 \(=(-S^2/4)/(S^2/2)=-0.5\)。关键在于两个相邻价格变化共用了 \(I_{t-1}\),而且一个带正号、一个带负号。

更现实地,让基本价值做随机游走 \(\Delta P_t^*=\epsilon_t\)(方差 \(\sigma^2\),与 \(I_t\) 独立):

\[\operatorname{Var}(\Delta P_t)=\sigma^2+\frac{S^2}{2},\qquad \rho_1(\Delta P_t)=\frac{-S^2/4}{S^2/2+\sigma^2}\le0.\]

负相关变弱但仍存在。由 (5.12) 可以反解出Roll 价差估计

\[\hat S=2\sqrt{-\widehat{\operatorname{Cov}}(\Delta P_t,\Delta P_{t-1})},\]

只要样本自协方差为负即可使用。它只需要成交价,不需要报价数据,因此在缺少报价的历史数据或低频数据上常被用来估计交易成本。(原书未明写此式,但它由 (5.12) 直接得到。)

金融直觉:为什么加入基本价值的随机游走后,Roll 估计仍然成立?因为 \(\epsilon_t\) 独立于 \(I_t\) 且自身无自相关,它只增加方差,不贡献一阶自协方差。所以「价格变化的一阶自协方差」只来自买卖反弹,可以干净地反推出价差。数值例子:一只 20 元的股票,日内逐笔价格变化的一阶自协方差为 \(-1.0\times10^{-4}\) 元²,则 \(\hat S=2\times0.01=0.02\) 元,即 10 个基点的价差,单边交易成本约 5 个基点。局限:若样本自协方差为正(例如订单拆分导致连续同向成交,见练习 6,或基本价值有动量),根号下为负,Roll 估计无法使用。

多元情形:若两只股票的订单方向 \(I_{1t},I_{2t}\) 同期正相关(例如同一机构同时买入),价差会在两只股票之间引入负的滞后 1 交叉相关。


5.4 逐笔成交数据的经验特征

记 \(t_i\) 为第 \(i\) 笔成交的日历时间(从午夜起算的秒数),伴随变量有成交价、成交量、当时的买卖报价等,合称交易数据。它们有四个在时间聚合后看不到的特征:

  1. 不等间隔:成交间隔(久期,duration)本身带有信息,例如交易强度。
  2. 价格离散:价格变化是最小价位(tick)的整数倍。NYSE 在 1997-06-24 前 tick 为 1/8 美元,2001-01-29 改为十进制前为 1/16 美元,之后为 1 美分。
  3. 日内周期(diurnal pattern):开盘和收盘交易密集、午间稀疏,交易强度呈 U 形。
  4. 同一秒内多笔成交:在繁忙时段,秒级时间戳太粗,会出现零久期,甚至同一秒内价格不同的成交。

5.4.1 IBM,1990-11 至 1991-01(TORQ,tick = 1/8 美元)

63 个交易日、正常时段(9:30–16:00)内 59,838 个成交间隔,其中 6,531 个为 0(10.91%)。价格变化分布(以 tick 计,%):

≤−3 −2 −1 0 +1 +2 ≥+3
0.66 1.33 14.53 67.06 14.53 1.27 0.63

约 2/3 的成交价格不变,约 29% 变动 1 个 tick,正负近似对称。5 分钟成交笔数的 ACF 呈周期 78 的循环(一天 78 个 5 分钟区间),平均日内曲线呈 U 形。

连续两笔成交的价格变化方向交叉表(行:第 \(i-1\) 笔;列:第 \(i\) 笔):

+ 0 − 合计
+ 441 5,498 3,948 9,887
0 4,867 29,779 5,473 40,119
− 4,580 4,841 410 9,831

连续上涨或连续下跌极少(各占 0.7% 左右);上涨之后更可能不变或下跌。方向序列 \(D_i\in\{+1,0,-1\}\) 的 ACF 只在滞后 1 有一个 −0.389 的尖峰——这是买卖反弹的直接证据。

5.4.2 IBM,1999 年 12 月(TAQ,tick = 1/16 美元)

日内成交增加约 6 倍(12 月共 134,120 笔),零久期比例升至 22.98%;12 月 3 日甚至出现过一秒内 42 笔成交,以及"跌 63 tick 后立即涨 64 tick"这样的异常跳点。价格不变的比例降到约 45.8%——tick 缩小提高了价格变化的概率。

5.4.3 Boeing,2008-12-01(十进制后)

正常时段 43,894 笔成交。价格变化以 1 美分为单位,分布关于 0 对称,58.5% 无变化,±1 美分各约 12%;另有 4.59% 的变化不是 1 美分的整数倍。十进制后价格变化"近似离散"的特征仍然存在。

5.4.4 数据清洗

高频数据的记录质量通常不如低频:缺失观测、时间戳错误(例如盘后时段开始前就出现 16:00 之后的时间戳)、异常跳点都常见。正确的清洗需要深入理解市场运作;必须清楚记录清洗规则,并在推断时考虑其影响。

记号:\(y_i=P_{t_i}-P_{t_{i-1}}\) 为价格变化,\(\Delta t_i=t_i-t_{i-1}\) 为久期,下标 \(i\) 是成交序号而非日历时间。下面先分别建模,再联合建模。


5.5 价格变化模型

日内价格变化离散且集中在零,普通回归不适用。原书介绍两种可引入解释变量的模型。

5.5.1 有序 probit 模型(Hausman, Lo & MacKinlay 1992)

设不可观测的"虚拟价格"变化为连续变量

\[y_i^*=\boldsymbol x_i\boldsymbol\beta+\epsilon_i,\qquad \epsilon_i\mid\boldsymbol x_i\sim N(0,\sigma_i^2),\qquad \sigma_i^2=g(\boldsymbol w_i),\tag{5.15–5.16}\]

\(\boldsymbol x_i\)、\(\boldsymbol w_i\) 都是 \(t_{i-1}\) 时可得的变量(\(\boldsymbol w_i\) 可含久期和条件异方差变量)。观测到的价格变化 \(y_i\) 取 \(k\) 个有序值 \(s_1<\dots<s_k\):

\[y_i=s_j\quad\text{若}\quad\alpha_{j-1}<y_i^*\le\alpha_j,\qquad -\infty=\alpha_0<\alpha_1<\dots<\alpha_k=\infty.\tag{5.17}\]

于是

\[P(y_i=s_j\mid\boldsymbol x_i,\boldsymbol w_i)=\Phi\Big(\frac{\alpha_j-\boldsymbol x_i\boldsymbol\beta}{\sigma_i}\Big)-\Phi\Big(\frac{\alpha_{j-1}-\boldsymbol x_i\boldsymbol\beta}{\sigma_i}\Big),\tag{5.18}\]

两端类别分别取 \(\Phi(\cdot)\) 与 \(1-\Phi(\cdot)\)。参数为 \(\boldsymbol\beta\)、分界点 \(\alpha_1,\dots,\alpha_{k-1}\) 和方差函数参数;识别上需要对方差做标准化(下例把方差函数常数项固定为 1)。

白话解释:这和信用评级的有序 probit 模型完全一样:背后有一个连续的「信用分数」\(y^*\),分数落在哪两个分界点之间就给哪个评级。这里的「评级」换成了「价格变化几个 tick」。数值例子:只有三类 \(\{-1,0,+1\}\),分界点 \(\alpha_1=-1\)、\(\alpha_2=1\),\(\sigma_i=1\)。若 \(\boldsymbol x_i\boldsymbol\beta=0\),则 \(P(y=-1)=\Phi(-1)=0.159\),\(P(y=0)=\Phi(1)-\Phi(-1)=0.683\),\(P(y=+1)=0.159\)。若上一笔是上涨,模型给出 \(\boldsymbol x_i\boldsymbol\beta=-0.5\)(反转),则 \(P(y=-1)=\Phi(-0.5)=0.309\),\(P(y=+1)=1-\Phi(1.5)=0.067\)。识别问题:把 \(y^*\)、全部分界点和 \(\boldsymbol\beta\) 同时乘以 2,概率完全不变,所以必须固定一个尺度,这就是「方差常数项固定为 1」的原因。

例 5.1(IBM 1988 年,206,794 笔成交)。 9 个类别 \(\{-4,\dots,4\}\) tick。均值方程包含:标准化久期 \(\Delta t_i^*\)、3 个滞后价格变化、3 个滞后 S&P 500 期货 5 分钟收益 \(SP5\)、3 个滞后的成交价相对中点位置指示 \(IBS\)(高于中点 +1,等于 0,低于 −1)、以及 Box–Cox 变换后的成交量与 \(IBS\) 的交互项;方差方程 \(\sigma_i^2=1+\gamma_1^2\Delta t_i^*+\gamma_2^2AB_{i-1}\),\(AB\) 为价差。主要估计(括号为 t 比):

变量 系数
分界点 \(\alpha_1,\dots,\alpha_8\) −4.67, −4.16, −3.11, −1.34, 1.33, 3.13, 4.21, 4.73
\(\gamma_1\)(久期→方差),\(\gamma_2\)(价差→方差) 0.40 (15.6),0.52 (71.1)
\(\Delta t^*\) −0.12 (−11.4)
\(y_{i-1},y_{i-2},y_{i-3}\) −1.01 (−135.6),−0.53 (−85.0),−0.21 (−47.2)
\(SP5_{i-1},SP5_{i-2},SP5_{i-3}\) 1.12 (54.2),−0.26 (−12.1),0.01 (0.26)
\(IBS_{i-1},IBS_{i-2},IBS_{i-3}\) −1.14 (−63.6),−0.37 (−21.6),−0.17 (−10.3)

结论:分界点不等距但关于 0 近似对称;久期同时影响条件均值和方差;滞后价格变化系数强烈为负——价格反转;前一时刻价差显著提高条件方差;股指期货的滞后收益正向领先个股(\(\beta=1.12\)),体现期货的价格发现作用。

5.5.2 ADS 分解模型(Rydberg & Shephard 2003;McCulloch & Tsay 2000)

把价格变化分解为"是否变化 × 方向 × 大小":

\[y_i=A_iD_iS_i,\tag{5.21}\]

\(A_i\in\{0,1\}\) 指示是否有价格变化;\(D_i\in\{+1,-1\}\) 为方向(仅当 \(A_i=1\) 时有定义);\(S_i\) 为变化大小(tick 数,正整数)。条件分布按顺序分解:

\[P(y_i\mid F_{i-1})=P(S_i\mid D_i,A_i,F_{i-1})\,P(D_i\mid A_i,F_{i-1})\,P(A_i\mid F_{i-1}).\tag{5.24}\]

各成分设定为

\[\operatorname{logit}p_i=\boldsymbol x_i\boldsymbol\beta,\quad p_i=P(A_i=1);\qquad \operatorname{logit}\delta_i=\boldsymbol z_i\boldsymbol\gamma,\quad\delta_i=P(D_i=1\mid A_i=1);\]
\[S_i\mid(D_i,A_i=1)\sim1+\begin{cases}g(\lambda_{u,i}), & D_i=1,\\ g(\lambda_{d,i}), & D_i=-1,\end{cases}\qquad \operatorname{logit}\lambda_{j,i}=\boldsymbol w_i\boldsymbol\theta_j,\tag{5.27–5.28}\]

\(g(\lambda)\) 为几何分布 \(P(m)=\lambda(1-\lambda)^m\),\(m=0,1,\dots\);加 1 保证有变化时至少 1 tick;上涨、下跌分开参数以允许不对称。对数似然可拆成三块分别估计——前两块就是两次普通 logistic 回归。与有序 probit 相比,ADS 不需要对大幅变化做截断或合并类别。

白话解释:(5.24) 是概率的乘法法则 \(P(A,B,C)=P(C\mid B,A)P(B\mid A)P(A)\) 的直接应用,就像把「一笔贷款损失多少」拆成「违约概率 PD × 违约后损失率 LGD」:先问「会不会动」,再问「往哪动」,最后问「动多少」。三个因子各有自己的参数、互不重叠,取对数后似然变成三项之和,所以可以分别最大化。\(\operatorname{logit}p=\ln\frac{p}{1-p}\) 是对数几率,反函数为 \(p=1/(1+e^{-z})\),把线性组合映射到 \((0,1)\)。几何分布 \(P(m)=\lambda(1-\lambda)^m\) 的含义是:每多涨一个 tick,都要再「过一关」,过关概率为 \(1-\lambda\),所以大幅变化的概率按几何速度递减。

例 5.2(IBM 1990-11 至 1991-01,59,838 笔)。 只保留显著的滞后变量:

\[\operatorname{logit}p_i=\beta_0+\beta_1A_{i-1},\quad \operatorname{logit}\delta_i=\gamma_0+\gamma_1D_{i-1},\quad \operatorname{logit}\lambda_{u,i}=\theta_{u,0}+\theta_{u,1}S_{i-1},\quad \operatorname{logit}\lambda_{d,i}=\theta_{d,0}+\theta_{d,1}S_{i-1}.\]

估计:\(\beta_0=-1.057\),\(\beta_1=0.962\);\(\gamma_0=-0.067\),\(\gamma_1=-2.307\);\(\theta_{u,0}=2.235\),\(\theta_{u,1}=-0.670\);\(\theta_{d,0}=2.085\),\(\theta_{d,1}=-0.509\)。解读:

  1. 价格变化成簇:\(P(A_i=1\mid A_{i-1}=0)=0.258\),\(P(A_i=1\mid A_{i-1}=1)=0.476\)。
  2. 强烈反转:前一笔无变化时,上涨概率 0.483;前一笔上涨,本笔(若变化)上涨概率仅 0.085;前一笔下跌,上涨概率 0.904。
  3. 大小:\(S_{i-1}=1,2,3\) 时,上涨幅度恰为 1 tick 的概率分别为 0.827、0.709、0.556(例如 \(1/(1+e^{-(2.235-0.670)})=0.827\)),大变化之后更可能跟着大变化。

5.6 久期模型:ACD

5.6.1 动机与日内调整

久期长说明交易清淡、没有新信息;久期短说明信息到达或流动性需求集中。Engle & Russell (1998) 借鉴 ARCH 的思想提出自回归条件久期(autoregressive conditional duration,ACD)模型。

由于日内 U 形模式,先构造调整久期

\[\Delta t_i^*=\frac{\Delta t_i}{f(t_i)},\tag{5.31}\]

\(f(t_i)\) 是久期的确定性日内成分。原书对 IBM 数据用 \(f(t_i)=\exp[d(t_i)]\),\(d(t_i)\) 是若干以正午为中心的二次函数和开盘、收盘时段指示变量的线性组合,用 OLS 回归 \(\ln\Delta t_i\) 得到。调整前 5 分钟区间平均久期在 10–40 秒之间呈明显日内模式,调整后基本消失。实践中也常用平滑样条或"按时段求跨日平均"的方法,没有哪种方法占绝对优势。

5.6.2 模型

记 \(x_i=\Delta t_i^*\),\(\psi_i=E(x_i\mid F_{i-1})\)。ACD(\(r,s\)):

\[x_i=\psi_i\epsilon_i,\qquad \psi_i=\omega+\sum_{j=1}^{r}\gamma_jx_{i-j}+\sum_{j=1}^{s}\omega_j\psi_{i-j},\tag{5.33–5.34}\]

\(\{\epsilon_i\}\) 是 iid 非负随机变量,\(E(\epsilon_i)=1\)。\(\epsilon_i\) 取标准指数分布时称 EACD,取标准化 Weibull 时称 WACD,取标准化广义 Gamma 时称 GACD。与 GARCH 的对应关系一目了然:\(x_i\leftrightarrow a_t^2\),\(\psi_i\leftrightarrow\sigma_t^2\)。

ARMA 表示。 令 \(\eta_i=x_i-\psi_i\)(鞅差序列),

\[x_i=\omega+\sum_{j=1}^{\max(r,s)}(\gamma_j+\omega_j)x_{i-j}-\sum_{j=1}^{s}\omega_j\eta_{i-j}+\eta_i,\tag{5.35}\]

这是非高斯新息的 ARMA。弱平稳时 \(E(x_i)=\omega/[1-\sum(\gamma_j+\omega_j)]\),要求 \(\omega>0\)、\(\sum(\gamma_j+\omega_j)<1\)。

推导拆解(以 ACD(1,1) 为例): 第一步:由定义 \(\psi_i=x_i-\eta_i\),\(\psi_{i-1}=x_{i-1}-\eta_{i-1}\)。 第二步:代入 \(\psi_i=\omega+\gamma_1x_{i-1}+\omega_1\psi_{i-1}\),得 \(x_i-\eta_i=\omega+\gamma_1x_{i-1}+\omega_1(x_{i-1}-\eta_{i-1})\)。 第三步:整理得 \(x_i=\omega+(\gamma_1+\omega_1)x_{i-1}-\omega_1\eta_{i-1}+\eta_i\),即 ARMA(1,1)。 第四步:两边取期望,\(E\eta=0\),平稳时 \(E x_i=E x_{i-1}=\mu_x\),得 \(\mu_x=\omega/(1-\gamma_1-\omega_1)\)。 「鞅差序列」指 \(E(\eta_i\mid F_{i-1})=0\):它不可预测,但方差可以随时间变化,所以不是 iid。这和 GARCH 中 \(a_t^2-\sigma_t^2\) 的作用完全一样。

金融直觉:把 \(\psi_i\) 理解为「市场对下一笔成交要等多久的预期」。刚刚等了很久(\(x_{i-1}\) 大),预期上调;预期本身有惯性(\(\omega_1\psi_{i-1}\))。和 GARCH 中「昨天大波动 → 今天预期波动上升」同构。例 5.4 的持续性 0.949 意味着交易活跃度的冲击消散得很慢,正如波动率聚集。

EACD(1,1) 的矩。 \(\epsilon_i\) 标准指数,\(E\epsilon_i^2=2\)。

  • 均值:\(\mu_x=\omega/(1-\gamma_1-\omega_1)\)。

  • 对 \(\psi_i\) 平方取期望,利用 \(E x_{i-1}^2=2E\psi_{i-1}^2\)、\(E(x_{i-1}\psi_{i-1})=E\psi_{i-1}^2\):

    \[E(\psi_i^2)=\mu_x^2\frac{1-(\gamma_1+\omega_1)^2}{1-2\gamma_1^2-\omega_1^2-2\gamma_1\omega_1}.\tag{5.39}\]

    推导拆解:记 \(s=\gamma_1+\omega_1\)。 第一步:把 \(\psi_i=\omega+\gamma_1x_{i-1}+\omega_1\psi_{i-1}\) 平方再取期望,展开六项:\(\omega^2+\gamma_1^2Ex^2+\omega_1^2E\psi^2+2\omega\gamma_1\mu_x+2\omega\omega_1\mu_x+2\gamma_1\omega_1E(x\psi)\)(用了 \(E\psi=Ex=\mu_x\))。 第二步:因为 \(x_{i-1}=\psi_{i-1}\epsilon_{i-1}\),\(\epsilon\) 独立于 \(\psi\)、\(E\epsilon=1\)、\(E\epsilon^2=2\),所以 \(Ex^2=2E\psi^2\),\(E(x\psi)=E\psi^2\)。 第三步:平稳时 \(E\psi_i^2=E\psi_{i-1}^2\),移项得 \(E\psi^2(1-2\gamma_1^2-\omega_1^2-2\gamma_1\omega_1)=\omega^2+2\omega s\mu_x\)。 第四步:把 \(\omega=\mu_x(1-s)\) 代入右边,\(\mu_x^2[(1-s)^2+2s(1-s)]=\mu_x^2(1-s^2)\),即得 (5.39)。

  • 方差:

    \[\operatorname{Var}(x_i)=2E(\psi_i^2)-\mu_x^2=\mu_x^2\,\frac{1-\omega_1^2-2\gamma_1\omega_1}{1-\omega_1^2-2\gamma_1\omega_1-2\gamma_1^2},\]

    方差有限要求 \(2\gamma_1^2+\omega_1^2+2\gamma_1\omega_1<1\)。由于分母小于分子,\(\operatorname{Var}(x_i)>\mu_x^2\),即久期过度离散(overdispersion)——指数分布的方差恰等于均值平方,ACD 产生的久期比指数分布更分散,这正是成交"一阵密一阵疏"的聚集现象。

5.6.3 风险函数与新息分布的选择

生存函数 \(S(x)=P(X>x)\),风险函数(hazard function)

\[h(x)=\frac{f(x)}{S(x)}\tag{5.58}\]

表示"已经等了 \(x\) 秒仍未成交,下一瞬间成交的条件强度"。对 Weibull 分布 \(h(x)=\frac{\alpha}{\beta^\alpha}x^{\alpha-1}\):

  • \(\alpha=1\)(指数):风险为常数,无记忆;
  • \(\alpha>1\):风险递增,等得越久越可能马上成交;
  • \(\alpha<1\):风险递减,刚成交后更可能马上再成交。

白话解释:风险函数就是信用风险中的违约强度,只是把「违约」换成「下一笔成交」。\(h(x)\,dx\) 近似等于「已等了 \(x\) 秒仍未成交,接下来 \(dx\) 秒内成交」的概率。数值例子:Weibull 取 \(\beta=1\)。\(\alpha=1\) 时 \(h\equiv1\),无论已等多久,下一秒成交的强度都一样(指数分布的无记忆性)。\(\alpha=0.5\) 时 \(h(x)=0.5x^{-0.5}\),\(h(0.25)=1\),\(h(4)=0.25\):刚成交不久强度很高,等得越久越「冷」,对应交易成簇、冷清时段持续冷清。\(\alpha=2\) 时 \(h(x)=2x\),等得越久越可能马上成交,对应「订单堆积到一定程度后必然成交」。例 5.4 的 \(\hat\alpha=0.879<1\) 属于第一种情况。

指数和 Weibull 的风险函数只能是常数或单调的,限制太强。Zhang, Russell & Tsay (2001) 用广义 Gamma 分布,其风险函数可以呈 U 形或倒 U 形,称 GACD。指数、Weibull 都是广义 Gamma 的特例(\(\kappa=1\) 为 Weibull,再令 \(\alpha=1\) 为指数)。

几个单位均值的标准化密度(原书第 5 章附录 A):

  • 标准化 Weibull:\(f(y\mid\alpha)=\alpha\big[\Gamma(1+\tfrac1\alpha)\big]^\alpha y^{\alpha-1}\exp\{-[\Gamma(1+\tfrac1\alpha)y]^\alpha\}\),\(\operatorname{Var}=\frac{\Gamma(1+2/\alpha)}{\Gamma^2(1+1/\alpha)}-1\)。
  • 标准化广义 Gamma:\(f(y\mid\alpha,\kappa)=\dfrac{\alpha y^{\kappa\alpha-1}}{\lambda^{\kappa\alpha}\Gamma(\kappa)}\exp[-(y/\lambda)^\alpha]\),\(\lambda=\Gamma(\kappa)/\Gamma(\kappa+1/\alpha)\)。

5.6.4 估计

令 \(i_o=\max(r,s)\),忽略前 \(i_o\) 个观测的边际密度(其影响随样本增大而消失),用条件似然。WACD 的条件对数似然为

\[\ell=\sum_{i=i_o+1}^{T}\Big\{\alpha\ln\Gamma\big(1+\tfrac1\alpha\big)+\ln\frac{\alpha}{x_i}+\alpha\ln\frac{x_i}{\psi_i}-\Big[\frac{\Gamma(1+1/\alpha)x_i}{\psi_i}\Big]^\alpha\Big\},\tag{5.41}\]

\(\alpha=1\) 时退化为 EACD 的 \(\sum[-\ln\psi_i-x_i/\psi_i]\)。GACD 的对数似然为

\[\ell=\sum\Big\{\ln\frac{\alpha}{\Gamma(\kappa)}+(\kappa\alpha-1)\ln x_i-\kappa\alpha\ln(\lambda\psi_i)-\Big(\frac{x_i}{\lambda\psi_i}\Big)^\alpha\Big\}.\tag{5.42}\]

一个实用的观察(Engle & Russell 1998):指数似然 \(-\ln\psi_i-x_i/\psi_i\) 与正态 GARCH 似然 \(-\tfrac12\ln\sigma_t^2-\tfrac12a_t^2/\sigma_t^2\) 形式相同,所以把 \(\sqrt{x_i}\) 当作"收益"、用零均值 GARCH 程序估计,就得到 EACD 的拟极大似然估计(QMLE)——即使真实分布不是指数分布,估计仍相合。

白话解释:「拟极大似然」指明知分布设错了,仍用一个方便的似然去估计。它之所以可行,是因为指数似然 \(-\ln\psi_i-x_i/\psi_i\) 对 \(\psi_i\) 求导后,期望为零的条件恰好是 \(E(x_i\mid F_{i-1})=\psi_i\),即「条件均值设定正确」。只要均值方程对,参数估计就会收敛到真值(相合),代价是效率低一些、标准误需要用稳健公式修正。这和 OLS 在误差不服从正态时仍然无偏是同一道理。把 \(\sqrt{x_i}\) 当作「收益」的技巧成立,是因为 \((\sqrt{x_i})^2=x_i\) 正好对应 GARCH 中的 \(a_t^2\),而 \(\psi_i\) 对应 \(\sigma_t^2\)。

模拟验证(例 5.3)。 从 \(\psi_i=0.3+0.2x_{i-1}+0.7\psi_{i-1}\) 生成 500 个观测:WACD(\(\alpha=1.5\))的估计为 0.364、0.100、0.767、1.477;GACD(\(\alpha=0.5,\kappa=1.5\))的估计为 0.401、0.343、0.561、0.436、2.077。500 个观测时 \(\gamma_1,\omega_1\) 的估计误差相当大。

例 5.4(IBM 1990 年 11 月前 5 个交易日,3,534 个正的调整久期)。 WACD(1,1):

\[\psi_i=0.169+0.064x_{i-1}+0.885\psi_{i-1},\qquad\hat\alpha=0.879\,(0.012),\]

标准化残差及其平方的 \(Q(10)\)、\(Q(20)\) 均不显著。持续性 \(0.064+0.885=0.949\);隐含期望调整久期 \(0.169/(1-0.949)=3.31\) 秒,与样本均值 3.29 吻合。\(\hat\alpha<1\):风险函数缓慢递减,刚成交后更可能马上再成交。GACD(1,1):\(\psi_i=0.141+0.063x_{i-1}+0.897\psi_{i-1}\),\(\hat\kappa=4.248\),\(\hat\alpha=0.395\),期望久期 3.52,持续性 0.96。


5.7 非线性久期模型:门限 ACD

对例 5.4 WACD 的标准化残差做第 04b 章的非线性检验(基于 AR(4)):Ori-F 为 0.343(p=0.969),不显著;但 TAR-F(\(d=1,2,3\))为 3.29、3.14、3.13(p≈0.006–0.008),显著——没有二次型非线性,但有门限型非线性。

于是拟合以 \(x_{i-1}\) 为门限变量、门限 3.79 的门限 WACD(1,1):

\[\psi_i=\begin{cases}0.020+0.257x_{i-1}+0.847\psi_{i-1},\quad\epsilon_i\sim w(0.901), & x_{i-1}\le3.79,\\ 1.808+0.027x_{i-1}+0.501\psi_{i-1},\quad\epsilon_i\sim w(0.845), & x_{i-1}>3.79,\end{cases}\tag{5.45}\]

两区制分别有 2,503、1,030 个观测,重做非线性检验后全部不显著。去掉不显著参数后的精简模型为区制 1:\(0.225x_{i-1}+0.867\psi_{i-1}\);区制 2:\(1.618+0.614\psi_{i-1}\)。两区制可理解为交易密集期与清淡期:即使去除了日内周期,两种状态下的交易动态依然不同,说明市场活动由信息到达驱动。


5.8 价格变化与久期的二元模型(PCD)

大量成交的价格不变,它们与交易强度相关但不直接带来价格信息。McCulloch & Tsay (2000) 只关注有价格变化的成交,并把中间不变价的成交笔数作为一个变量。重新定义:\(t_i\) 为第 \(i\) 次价格变化的时刻,\(\Delta t_i\) 为相邻两次价格变化之间的久期,\(N_i\) 为其间价格不变的成交笔数,\(D_i\)、\(S_i\) 为方向与大小,\(P_{t_i}=P_{t_{i-1}}+D_iS_i\)。好处是样本量大幅减少(IBM 三个月 60,265 笔成交中只有 19,022 次价格变化),而且价格变化之间的久期没有明显的日内周期;价格不变的成交不改变价格路径。

联合分布分解为

\[f(\Delta t_i,N_i,D_i,S_i\mid F_{i-1})=f(S_i\mid D_i,N_i,\Delta t_i,F_{i-1})\,f(D_i\mid N_i,\Delta t_i,F_{i-1})\,f(N_i\mid\Delta t_i,F_{i-1})\,f(\Delta t_i\mid F_{i-1}),\tag{5.47}\]

各成分:

  1. 久期:\(\ln\Delta t_i=\beta_0+\beta_1\ln\Delta t_{i-1}+\beta_2S_{i-1}+\sigma\epsilon_i\);
  2. 无变化笔数:\(P(N_i=0)\) 用 logistic,\(N_i\mid N_i>0\sim1+g(\lambda_i)\)(几何分布),参数依赖 \(\ln\Delta t_i\);
  3. 方向:\(D_i=\operatorname{sign}(\mu_i+\sigma_i\epsilon)\),\(\mu_i=\omega_0+\omega_1D_{i-1}+\omega_2\ln\Delta t_i\),\(\ln\sigma_i=\beta|D_{i-1}+D_{i-2}+D_{i-3}+D_{i-4}|\)——负的 \(\omega_1\) 刻画反转;过去 4 次方向一致时方差增大,使正负概率趋于均等,从而允许偶发的局部趋势;
  4. 大小:\(S_i-1\) 服从泊松分布,上涨、下跌分开参数,\(\ln\lambda\) 依赖 \(N_i\)、\(\ln\Delta t_i\)、\(S_{i-1}\)。

例 5.5(IBM 1990-11-21,194 次价格变化,MCMC 估计)。 久期方程几乎无动态依赖(\(\ln\Delta t_{i-1}\) 系数 0.032,后验标准差 0.073);久期越长,出现无变化成交的可能越大,\(N_i\) 也越大;方向方程 \(\mu_i=0.049-0.840D_{i-1}-0.004\ln\Delta t_i\),\(D_{i-1}\) 的系数显著为负——价格反转;大小方程中 \(N_i\) 的系数为负,即区间内无变化的成交越多,价格变化幅度越小(没有新信息)。扩展到 63 个交易日的层次模型后,许多参数变得显著,例如久期方程中 \(\ln\Delta t_{i-1}\) 的系数在 0.04–0.1 之间。


5.9 应用:用 ACD 刻画日内价格极差

ACD 的乘性误差结构 \(x_i=\psi_i\epsilon_i\) 适用于任何正值序列,这一思想后来被推广为乘性误差模型(MEM)。原书把它用于 Apple 股票的日对数价格极差 \(x_t=\ln H_t-\ln L_t\)(1999-01-04 至 2007-11-20,2,235 个观测)。极差是波动率的稳健代理(第 03b 章 3.15 节),用对数价格的极差还可以免去拆股调整。样本均值 0.0407、标准差 0.0218,ACF 高度显著且衰减缓慢。

模型 \(\alpha_0\) \(\alpha_1\) \(\beta_1\) 形状 \(\alpha\) \(\kappa\) \(Q(10)\) \(Q^*(10)\)
EACD 0.0007 (0.0005) 0.133 0.849 — — 16.65 (0.082) 12.12 (0.277)
WACD 0.0013 (0.0003) 0.131 0.835 2.377 — 13.66 (0.189) 9.74 (0.464)
GACD 0.0010 (0.0002) 0.133 0.843 1.622 2.104 14.62 (0.147) 11.21 (0.341)

三个模型的动态参数非常稳定;EACD 的常数项不显著、拟合略差。形状参数 \(\alpha>1\) 说明极差的风险函数递增,与波动率聚集一致。(原书给出的 GACD 残差描述统计顺序有误,合理解读为最小值 0.203、最大值 4.497、均值 0.999、标准差 0.436。)

门限 ACD。 初步分析表明两区制主要差在 Weibull 形状参数,于是拟合仅形状参数随区制变化的 TWACD(2;1,1),门限在 \(x_{t-1}\) 的 60%–95% 分位上网格搜索,对数似然在 70% 分位(0.04753)处最大:

\[\psi_t=0.0013+0.1539x_{t-1}+0.8131\psi_{t-1},\qquad \epsilon_t\sim\begin{cases}W(2.2756), & x_{t-1}\le0.04753,\\ W(2.7119), & \text{否则}.\end{cases}\]

干预分析。 美国股市在 2001-01-29 改为十进制报价。用 Box & Tiao (1975) 的干预分析,定义 \(I_t=1\)(\(t\le522\),即改制前)、否则为 0:

\[\psi_t=\alpha_0+\gamma I_t+\alpha_1x_{t-1}+\beta_1\psi_{t-1}.\tag{5.54}\]

估计 \(\psi_t=0.0021+0.0011I_t+0.1595x_{t-1}+0.7828\psi_{t-1}\),\(\hat\gamma\) 在 1% 水平显著为正。改制后与改制前的期望日极差分别为

\[\frac{0.0021}{1-0.1595-0.7828}\approx0.036,\qquad \frac{0.0021+0.0011}{0.0577}\approx0.055.\]

结论:十进制改革降低了 Apple 的期望日极差,即降低了波动率。这个框架可直接用于评估 tick size、涨跌停、交易费用等制度变化的影响。


量化实战

应用场景

  1. 回测中的微观结构偏差。 用成交价算短周期收益会同时受买卖反弹(单只股票的虚假反转)和非同步交易(组合的虚假动量、虚假领先–滞后)污染。对策:用中间价(mid-quote)而非成交价计算收益;信号与成交之间跳过一期;用 5.2、5.3 节的公式估计偏差量级。
  2. 交易成本估计。 Roll 价差 \(2\sqrt{-\operatorname{Cov}}\) 只需要价格序列,常用于缺少报价数据时估计有效价差,也可作为股票流动性因子。
  3. 执行与做市。 ADS 模型给出"下一次价格变化的方向"的条件概率(上一次上涨后再涨的概率只有约 8.5%),是预测下一个 tick 方向的基础;ACD 给出下一笔成交的期望等待时间,可用于判断当前流动性、安排拆单节奏。
  4. 日内季节性与成交量曲线。 5.6.1 节的日内调整方法同样适用于成交量,VWAP 算法依赖的正是日内 U 形成交量曲线。
  5. 波动率预测。 日极差的 ACD/CARR 模型、5 分钟收益的已实现波动率都是日频波动率预测器;它们比只用收盘价的 GARCH 利用了更多日内信息。
  6. 事件研究。 5.9 节的干预分析可评估制度变化对波动率和流动性的影响。

Python 示例

代码依次:(1) 模拟非同步交易,验证 \(\operatorname{Var}(r_t^o)\) 和 \(\operatorname{Cov}(r_t^o,r_{t-j}^o)=-\mu^2\pi^j\);(2) 模拟 Roll 模型并用自协方差估计价差;(3) 模拟 WACD(1,1) 并按式 (5.41) 做条件极大似然估计;(4) 用原书表 5.6 的参数生成 ADS 数据,再用两次 logistic 回归还原。

import numpy as np
from scipy import optimize, special
from statsmodels.stats.diagnostic import acorr_ljungbox
import statsmodels.api as sm

rng = np.random.default_rng(2024)

# ---------- 1. 非同步交易:验证 Cov(r_t^o, r_{t-1}^o) = -pi*mu^2 ----------
mu, sigma, pi, T = 0.5, 1.0, 0.4, 2_000_000
r = mu + sigma * rng.standard_normal(T)
trade = rng.random(T) > pi                      # 以概率 1-pi 成交
cum, ro = 0.0, np.zeros(T)
for t in range(T):                              # 观测收益 = 自上次成交以来的累计真实收益
    cum += r[t]
    if trade[t]:
        ro[t], cum = cum, 0.0
ro = ro[1:]
print("非同步交易:")
print(f"  Var(r^o)   模拟 {ro.var():.4f}  理论 {sigma**2 + 2*pi*mu**2/(1-pi):.4f}")
for j in (1, 2):
    c = np.cov(ro[j:], ro[:-j])[0, 1]
    print(f"  Cov(lag {j}) 模拟 {c: .4f}  理论 {-mu**2 * pi**j: .4f}")

# ---------- 2. Roll 模型:由价格变化的一阶自协方差估计价差 ----------
S, s_eps, n = 0.02, 0.01, 200_000
p_star = 10 + np.cumsum(s_eps * rng.standard_normal(n))
I = rng.choice([-1, 1], n)
P = p_star + I * S / 2
dP = np.diff(P)
cov1 = np.cov(dP[1:], dP[:-1])[0, 1]
print(f"\nRoll 模型: rho1 = {np.corrcoef(dP[1:], dP[:-1])[0,1]:.3f} "
      f"(理论 {-(S**2/4)/(S**2/2 + s_eps**2):.3f}), 估计价差 = {2*np.sqrt(-cov1):.4f} (真值 {S})")

# ---------- 3. WACD(1,1):模拟 + 条件极大似然估计 ----------
def sim_wacd(n, omega, gam, beta, alpha):
    c = special.gamma(1 + 1/alpha)
    eps = rng.weibull(alpha, n) / c             # 标准化 Weibull,均值 1
    x, psi = np.zeros(n), np.zeros(n)
    psi[0] = omega / (1 - gam - beta); x[0] = psi[0] * eps[0]
    for i in range(1, n):
        psi[i] = omega + gam * x[i-1] + beta * psi[i-1]
        x[i] = psi[i] * eps[i]
    return x

def wacd_negll(theta, x):
    omega, gam, beta, alpha = theta
    if omega <= 0 or gam < 0 or beta < 0 or gam + beta >= 1 or alpha <= 0:
        return 1e10
    psi = np.empty_like(x); psi[0] = x.mean()
    for i in range(1, len(x)):
        psi[i] = omega + gam * x[i-1] + beta * psi[i-1]
    lg = special.gammaln(1 + 1/alpha)
    z = np.exp(lg) * x[1:] / psi[1:]
    ll = alpha*lg + np.log(alpha/x[1:]) + alpha*np.log(x[1:]/psi[1:]) - z**alpha   # 式 (5.41)
    return -ll.sum()

x = sim_wacd(5000, 0.3, 0.2, 0.7, 1.5)
fit = optimize.minimize(wacd_negll, [0.2, 0.1, 0.8, 1.0], args=(x,), method="Nelder-Mead",
                        options={"maxiter": 4000, "xatol": 1e-6, "fatol": 1e-6})
om, ga, be, al = fit.x
print(f"\nWACD(1,1) 真值 (0.3, 0.2, 0.7, 1.5)  估计 ({om:.3f}, {ga:.3f}, {be:.3f}, {al:.3f})")
print(f"  期望久期: 理论 {0.3/(1-0.2-0.7):.2f}, 样本 {x.mean():.2f}, 模型隐含 {om/(1-ga-be):.2f}")
psi = np.empty_like(x); psi[0] = x.mean()
for i in range(1, len(x)):
    psi[i] = om + ga * x[i-1] + be * psi[i-1]
eps_hat = x / psi
print(f"  Q(10) 原久期 p={acorr_ljungbox(x, lags=[10])['lb_pvalue'].iloc[0]:.3g}, "
      f"标准化残差 p={acorr_ljungbox(eps_hat, lags=[10])['lb_pvalue'].iloc[0]:.3f}")

# ---------- 4. ADS 分解模型:两次 logistic 回归 ----------
n = 60000
A, D = np.zeros(n, int), np.zeros(n, int)
for i in range(1, n):
    pA = 1/(1+np.exp(-(-1.057 + 0.962*A[i-1])))          # 用原书表 5.6 的参数生成数据
    A[i] = rng.random() < pA
    if A[i]:
        pU = 1/(1+np.exp(-(-0.067 - 2.307*D[i-1])))
        D[i] = 1 if rng.random() < pU else -1
m1 = sm.Logit(A[1:], sm.add_constant(A[:-1])).fit(disp=0)
sel = A[1:] == 1
m2 = sm.Logit((D[1:][sel] + 1)//2, sm.add_constant(D[:-1][sel])).fit(disp=0)
print(f"\nADS: P(A_i=1) 方程 {np.round(m1.params, 3)}, 方向方程 {np.round(m2.params, 3)}")
for dprev in (1, 0, -1):
    print(f"  上一笔方向 D_(i-1)={dprev:+d} 时本笔上涨概率 = {1/(1+np.exp(-(m2.params[0]+m2.params[1]*dprev))):.3f}")

关键输出:

非同步交易:
  Var(r^o)   模拟 1.3380  理论 1.3333
  Cov(lag 1) 模拟 -0.0992  理论 -0.1000
  Cov(lag 2) 模拟 -0.0411  理论 -0.0400

Roll 模型: rho1 = -0.335 (理论 -0.333), 估计价差 = 0.0201 (真值 0.02)

WACD(1,1) 真值 (0.3, 0.2, 0.7, 1.5)  估计 (0.310, 0.192, 0.704, 1.515)
  期望久期: 理论 3.00, 样本 2.97, 模型隐含 2.99
  Q(10) 原久期 p=0, 标准化残差 p=0.357

ADS: P(A_i=1) 方程 [-1.061  0.955], 方向方程 [-0.095 -2.33 ]
  上一笔方向 D_(i-1)=+1 时本笔上涨概率 = 0.081
  上一笔方向 D_(i-1)=+0 时本笔上涨概率 = 0.476
  上一笔方向 D_(i-1)=-1 时本笔上涨概率 = 0.903

模拟与理论公式高度吻合。为了让效应看得清楚,非同步交易例子把 \(\mu\) 设为 \(\sigma\) 的一半;真实日收益中 \(\mu/\sigma\) 通常小于 0.1,单只股票的偏差因此很小,组合层面的交叉效应才是主要问题。WACD 在 5,000 个观测下估计准确,标准化残差已无序列相关,而原久期序列的 Q 统计量极其显著。实际数据还应先去除日内周期。


本章小结

高频数据的统计性质深受市场微观结构影响:非同步交易让单只股票出现 \(-\mu^2\pi^j\) 的负自协方差、让组合出现虚假的正相关;买卖反弹让价格变化在无基本面变化时有 \(-0.5\) 的一阶自相关,反过来可用于估计价差。逐笔数据不等间隔、价格离散、有日内 U 形和同秒多笔,清洗与日内调整是必经步骤。价格变化可用有序 probit(潜变量 + 分界点)或 ADS 分解(是否变化 × 方向 × 大小)建模,实证都显示强烈的价格反转。久期用 ACD 建模,它是 GARCH 在正值序列上的翻版,新息分布决定风险函数的形状;门限 ACD 区分了密集与清淡两种交易状态。ACD 思想可推广到任何正值序列,如日内价格极差。

概念 / 公式 要点
非同步交易 \(E r^o=\mu\);\(\operatorname{Var}r^o=\sigma^2+\frac{2\pi\mu^2}{1-\pi}\);\(\operatorname{Cov}(r^o_t,r^o_{t-j})=-\mu^2\pi^j\)
Roll 模型 \(P_t=P_t^*+I_tS/2\) \(\operatorname{Cov}(\Delta P_t,\Delta P_{t-1})=-S^2/4\);\(\rho_1=-\frac{S^2/4}{S^2/2+\sigma^2}\)
Roll 价差估计 \(\hat S=2\sqrt{-\widehat{\operatorname{Cov}}(\Delta P_t,\Delta P_{t-1})}\)
有序 probit \(P(y_i=s_j)=\Phi(\frac{\alpha_j-\boldsymbol x_i\boldsymbol\beta}{\sigma_i})-\Phi(\frac{\alpha_{j-1}-\boldsymbol x_i\boldsymbol\beta}{\sigma_i})\)
ADS 分解 \(y_i=A_iD_iS_i\);两次 logistic + 几何分布
调整久期 \(\Delta t_i^*=\Delta t_i/f(t_i)\)
ACD(\(r,s\)) \(x_i=\psi_i\epsilon_i\),\(\psi_i=\omega+\sum\gamma_jx_{i-j}+\sum\omega_j\psi_{i-j}\)
EACD(1,1) 方差 \(\mu_x^2\frac{1-\omega_1^2-2\gamma_1\omega_1}{1-\omega_1^2-2\gamma_1\omega_1-2\gamma_1^2}>\mu_x^2\)(过度离散)
风险函数 \(h=f/S\);Weibull:\(\alpha=1\) 常数,\(>1\) 递增,\(<1\) 递减;广义 Gamma 可 U 形
WACD 对数似然 式 (5.41)
干预分析 \(\psi_t=\alpha_0+\gamma I_t+\alpha_1x_{t-1}+\beta_1\psi_{t-1}\)

练习

基础

  1. (原书习题 5.1)\(r_t\) 为均值 0.05、方差 1.5 的高斯白噪声,每期成交概率 40%(即 \(\pi=0.6\))。观测收益是否序列相关?求前三阶自相关。 提示:\(\operatorname{Var}(r^o)=1.5+\frac{2\times0.6\times0.0025}{0.4}=1.5075\);\(\rho_j=-0.0025\times0.6^j/1.5075\),即 \(-0.00100,\,-0.00060,\,-0.00036\)。相关存在但极小。
  2. (原书习题 5.2)Roll 模型中 \(\Delta P_t^*\) 方差为 1.0,价差为 2 个 tick。tick 为 1/8 美元和 1/16 美元时,\(\Delta P_t\) 的一阶自相关各是多少? 提示:\(S=0.25\) 时 \(\rho_1=-0.015625/1.03125=-0.0152\);\(S=0.125\) 时 \(\rho_1=-0.00390625/1.0078=-0.0039\)。
  3. 某股票成交价变化的一阶样本自协方差为 \(-2.5\times10^{-5}\)(单位:美元²),用 Roll 方法估计有效价差。 提示:\(\hat S=2\sqrt{2.5\times10^{-5}}=0.01\) 美元。
  4. EACD(1,1) 中 \(\omega=0.2\)、\(\gamma_1=0.1\)、\(\omega_1=0.8\),求期望久期和久期方差,并验证过度离散。 提示:\(\mu_x=2\);方差 \(=4\times\frac{1-0.64-0.16}{1-0.64-0.16-0.02}=4\times\frac{0.20}{0.18}=4.44>4\)。
  5. 写出 Weibull 分布 \(\alpha=0.5\) 和 \(\alpha=2\) 时的风险函数形状,并分别解释它们对成交间隔意味着什么。

进阶

  1. 证明 Roll 模型中 \(\operatorname{Cov}(\Delta P_t,\Delta P_{t-2})=0\)。若订单方向 \(I_t\) 是一阶马尔可夫的、滞后 \(k\) 自相关为 \(\rho^k\)(\(\rho>0\),订单拆分导致连续同向成交),重新推导 \(\operatorname{Cov}(\Delta P_t,\Delta P_{t-1})\),并说明此时 Roll 估计会怎样偏差。 提示:\(\operatorname{Cov}=\frac{S^2}{4}[2\rho-1-\rho^2]=-\frac{S^2}{4}(1-\rho)^2\),Roll 估计低估价差。
  2. 修改本章代码,用 EACD 的 QMLE(即把指数似然用于 Weibull 数据)估计同一组模拟 WACD 数据,比较动态参数估计与 (5.41) 的 MLE 结果。
  3. (原书习题 5.5 改编)模拟一个"真实价格为 GBM + Roll 买卖反弹"的逐笔序列,按 1、5、30 分钟采样计算已实现波动率(日内收益平方和),观察采样频率越高、已实现方差越被价差噪声抬高的现象。
  4. (原书习题 5.6 改编)给模拟久期乘上一个 U 形日内因子,再用"按时段求跨日平均对数久期"的方法去季节性,检验调整后是否仍有日内模式,并拟合 WACD。

原书推荐习题:5.1、5.2(手算非同步交易与 Roll 模型);5.4、5.7、5.10(真实逐笔数据的日内模式与买卖反弹);5.5(已实现波动率及其偏差);5.6(去日内周期 + 三种 ACD 比较);5.8、5.9(不同采样频率下的收益序列相关)。


原书对照

本章小节 原书章节 PDF 页码
5.1 高频数据概述 第 5 章引言 p.251–252
5.2 非同步交易 5.1 p.252–255
5.3 买卖价差与 Roll 模型 5.2 p.255–257
5.4 逐笔数据经验特征 5.3 p.257–264
5.5 有序 probit、ADS 5.4 p.264–273
5.6 ACD 模型 5.5 p.273–284
5.7 门限 ACD 5.6 p.284–285
5.8 PCD 模型 5.7 p.285–290
5.9 日内极差的 ACD 与干预分析 5.8 p.290–296
概率分布回顾、风险函数、RATS 程序 附录 A、B、C p.296–302
习题 第 5 章习题 p.302–304

(原书印刷页码约等于 PDF 页码减 20。)