量化交易中文教材

第 16 章 动态因果效应的估计

学习目标

读完本章,你应当能够:

  1. 在「同一受试者在不同时点接受随机处理」的框架下理解动态因果效应,并用分布滞后模型表示它。
  2. 区分(过去与现在)外生性和严格外生性,判断具体应用中哪一种可信。
  3. 计算并解释动态乘数、累积动态乘数与长期累积乘数,用变形回归直接得到累积乘数及其标准误。
  4. 理解误差序列相关时常规标准误为什么失效,掌握 HAC(Newey–West)标准误的公式、截断参数的选择与敏感性检查。
  5. 理解严格外生时 ADL 与 GLS(Cochrane–Orcutt)为何更有效、仅外生时为何不一致。
  6. 在量化研究中正确处理冲击响应、重叠收益、因子收益均值检验等序列相关场景。

读前导读

这一章在解决什么问题

第 15a 章只管预测,不问因果。本章回到因果,但加了时间维度:一个冲击(霜冻、加息、盈利意外)发生后,对价格的影响是一次到位,还是分好几个月慢慢释放?累计起来一共多大?这就是动态因果效应。你做过事件研究,累积异常收益(CAR)曲线就是本章的「累积动态乘数」在单个事件上的样子;本章用回归的方式把它系统化。

本章的第二个主题对量化研究者可能更重要:HAC 标准误(Newey–West)。时间序列回归的残差往往自相关,这时 OLS 系数本身没问题,但软件默认给出的标准误偏小、t 值偏大。用月度数据预测未来 12 个月收益(重叠收益)、检验因子收益均值、算策略夏普比率的置信区间,都会碰上这个问题。本章给出修正公式和截断参数的经验规则。

第三个主题是外生性的两个层次:「外生」只要求误差与当前和过去的 \(X\) 无关,「严格外生」还要求与未来的 \(X\) 无关。金融市场里价格包含对未来的预期,所以严格外生常常不成立。这决定了你能不能用 GLS 这类「更有效」的方法——用错了,会得到一个非常精确、但完全错误的数。

需要先想起来的数学

  • 和的方差:\(\text{var}(\sum_tv_t)=\sum_t\text{var}(v_t)+2\sum_{s<t}\text{cov}(v_s,v_t)\)。若 \(v_t\) 互不相关,只剩第一项;若正相关,方差变大。这是 HAC 的全部出发点,和组合方差公式是同一件事(把每一期看作一个资产)。见 第 00 册第 07 章 概率中的分析工具。
  • 几何级数:\(\sum_{j=1}^\infty a^j=a/(1-a)\)(\(|a|<1\))。用于计算 \(f_\infty\) 和由 ADL 推出长期乘数。例:\(a=0.5\) 时和为 1。见 第 00 册第 04 章 级数与收敛。
  • 条件期望的性质:\(E(u_t\mid X_t,X_{t-1},\dots)=0\) 与 \(E(u_t\mid\dots,X_{t+1},X_t,\dots)=0\) 的区别只在于条件集合里有没有未来的 \(X\)。条件集合越大,要求越强。同见第 07 章。
  • 滞后算子与多项式求逆:\((1-\phi L)^{-1}=1+\phi L+\phi^2L^2+\cdots\),与 \(1/(1-\phi)=1+\phi+\phi^2+\cdots\) 形式完全相同。用来把 ADL 转成分布滞后形式。第一次读可以只记这一个式子。
  • 大 O 与收敛速度:「方差与 \(1/T\) 成比例」「\(m\) 随 \(T\) 增长但远慢于 \(T\)」这类说法,见第 07 章的大 O 小 o 部分。

怎么读这一章

核心必读:16.2(两种外生性,读懂 KC 16.1 和橙汁交易者的例子)、16.3.2(动态乘数与累积乘数,以及变形回归 16.7)、16.4 全节(HAC 是本章对量化最有用的部分)、16.5.2(为什么 GLS 需要严格外生)、16.6.3(橙汁为何不严格外生)。16.5.3–16.5.4 的 ADL 乘数计算和 Cochrane–Orcutt 可以先只看数值例和结论。16.7 的宏观例子帮助建立「外生性要靠制度知识判断」的直觉,读得快一些即可。量化实战中关于重叠收益的部分强烈建议细读。


16.0 本章要解决的问题

电影《颠倒乾坤》(Trading Places, 1983)里,两位主角利用佛罗里达柑橘收成的内幕消息,在冷冻浓缩橙汁期货市场上赚了几百万。现实中,橙汁期货交易者确实密切关注佛罗里达的天气:霜冻会冻死橙子,供给下降,价格上涨。但天气变坏时价格到底涨多少?一次涨到位还是有延迟?延迟多久?这些是交易者需要回答的问题。

本章研究 \(X\) 的变化对 \(Y\) 当前与未来值的效应,即动态因果效应。起点是分布滞后回归模型(distributed lag regression model):把 \(Y_t\) 写成 \(X_t\) 当前值及过去值的函数。本章的结构是:

  • 16.1 节用橙汁与天气数据初探分布滞后模型;16.2 节说明动态因果效应的确切含义和两种外生性。
  • 16.3 节:若误差对 \(X\) 当前与过去值的条件均值为零(外生性),OLS 一致;16.4 节:误差通常序列相关,需要 HAC 标准误。
  • 16.5 节:若 \(X\) 严格外生,可以用 ADL 或 GLS 更有效地估计。
  • 16.6 节:橙汁价格的完整分析;16.7 节:宏观与金融应用中外生性是否可信。

本章只需要第 15a 章 15.1–15.4 节的知识;16.6 节有一小段用到第 15b 章的 QLR 检验。


16.1 橙汁数据初探

奥兰多是佛罗里达柑橘产区的中心,通常温暖,偶有寒潮。气温在冰点以下太久,橙子会掉落;寒潮严重时树会冻死。霜冻后浓缩橙汁的供给下降、价格上涨,但时点很微妙:浓缩橙汁可以储存,价格不仅取决于当前供给,还取决于对未来供给的预期。今天的霜冻意味着未来供给少,而现有库存既可以满足当前需求也可以满足未来需求,所以现有浓缩汁的价格今天就会上涨。

数据为 1950 年 1 月到 2000 年 12 月的月度数据:

  • 冷冻浓缩橙汁的实际价格(用成品生产者价格指数平减),月度百分比变化 \(\%ChgP_t=100\Delta\ln(P^{OJ}_t)\);
  • 奥兰多机场的冰冻度日数(freezing degree days, FDD):当月各日最低温低于冰点(32°F)的度数之和。例:1950 年 11 月 25 日最低 31°F、29 日最低 29°F,FDD \(=(32-31)+(32-29)=4\)。

只含当期 FDD 的回归(\(T=612\),括号内为下面要讲的 HAC 标准误):

\[\widehat{\%ChgP_t}=\underset{(0.22)}{-0.40}+\underset{(0.13)}{0.47}FDD_t. \tag{16.1}\]

一个冰冻度日使当月价格上涨 0.47%;4 个冰冻度日的月份(如 1950 年 11 月),价格比无冰冻月份高 \(4\times0.47\%=1.88\%\)。

为捕捉后续影响,加入过去 6 个月的 FDD:

\[\widehat{\%ChgP_t}=\underset{(0.23)}{-0.65}+\underset{(0.14)}{0.47}FDD_t+\underset{(0.08)}{0.14}FDD_{t-1}+\underset{(0.06)}{0.06}FDD_{t-2}+\underset{(0.05)}{0.07}FDD_{t-3}+\underset{(0.03)}{0.03}FDD_{t-4}+\underset{(0.03)}{0.05}FDD_{t-5}+\underset{(0.04)}{0.05}FDD_{t-6}. \tag{16.2}\]

\(FDD_{t-1}\) 的系数是上个月一个冰冻度日对本月价格的影响,等价于霜冻一个月后的效应,依此类推。系数序列就是 FDD 对价格的动态效应估计。1950 年 11 月的 4 个冰冻度日,估计使当月价格涨 1.88%,12 月再涨 0.56%(\(4\times0.14\)),1951 年 1 月再涨 0.24%(\(4\times0.06\))……


16.2 动态因果效应

16.2.1 时间序列中的因果效应

第 1 章用理想随机对照实验定义因果效应:番茄地随机施肥,比较施肥与未施肥地块的产量。这需要多个受试者,从而有处理组和对照组。时间序列中只有一个受试者——例如美国经济。研究央行意外加息对 GDP 的影响,字面意义上的实验需要美国的「克隆体」,这做不到。

替代的理解是:同一受试者在不同时点接受不同的、随机决定的处理。美国经济在 1970 年代、1980 年代……的不同时点,有时美联储改变利率,有时不改;同一个受试者在不同时间轮流扮演处理组和对照组。由于数据跨越时间,可以估计处理影响结果的时间路径。例如:意外加息 2 个百分点并维持一个季度,起初对产出影响可以忽略,两个季度后 GDP 增长放缓,六个季度后放缓最多,此后两年恢复正常。

在橙汁例子中,处理是「佛罗里达的天气」。可以设想两种实验:只改变佛罗里达天气而保持其他产区(如德州葡萄柚)天气不变,测的是偏效应;或者改变整个天气模式。若竞争作物产区的天气与佛罗里达相关,两者不同。本章估计的是后者——佛罗里达天气变化的效应,不固定其他地区的天气。

16.2.2 分布滞后模型与动态乘数

\[Y_t=\beta_0+\beta_1X_t+\beta_2X_{t-1}+\beta_3X_{t-2}+\cdots+\beta_{r+1}X_{t-r}+u_t, \tag{16.3}\]

\(u_t\) 包括 \(Y_t\) 的测量误差和遗漏决定因素。

一个多年施肥实验帮助理解:地块随机分四组——仅第一年施肥、仅第二年、仅第三年、从不施肥,称量第三年收成。\(\beta_1\) 是当年施肥的效应,\(\beta_2\) 是一年前施肥的效应,\(\beta_3\) 是两年前施肥的效应。

一般地,\(\beta_1\) 是 \(X_t\) 单位变化对 \(Y_t\) 的同期效应;\(\beta_2\) 是 \(X_{t-1}\) 对 \(Y_t\) 的效应,等价于 \(X_t\) 对 \(Y_{t+1}\) 的效应;\(X_{t-h}\) 的系数是 \(X\) 单位变化 \(h\) 期后对 \(Y\) 的效应。动态因果效应就是对 \(Y_t,Y_{t+1},Y_{t+2},\dots\) 的效应序列 \(\beta_1,\beta_2,\dots,\beta_{r+1}\)。

两个实证含义:(1) 动态因果效应在样本期内不应变化——由联合平稳性保证,可以用 QLR 检验或分子样本估计;(2) \(X\) 必须与误差项不相关。

16.2.3 两种外生性

Key Concept 16.1 分布滞后模型与外生性

在 \(Y_t=\beta_0+\beta_1X_t+\cdots+\beta_{r+1}X_{t-r}+u_t\)(16.4)中:

  • (过去与现在)外生性(exogeneity):\(E(u_t\mid X_t,X_{t-1},X_{t-2},\dots)=0\)。(16.5)
  • 严格外生性(strict exogeneity):\(E(u_t\mid\dots,X_{t+2},X_{t+1},X_t,X_{t-1},X_{t-2},\dots)=0\)。(16.6)

严格外生蕴含外生,反之不然。

白话解释:两个条件的差别只在竖线右边多了 \(\dots,X_{t+2},X_{t+1}\)。外生:知道了今天和过去的 \(X\),对今天误差的最佳猜测仍是 0。严格外生:即使连未来的 \(X\) 也告诉你,对今天误差的最佳猜测仍是 0。后者更强,因为给的信息更多,「仍然猜不出」更难做到。

金融直觉:设 \(X\) 是公司的季度盈利,\(Y\) 是股票收益。盈利对收益的同期和滞后影响是我们想估的。但股价会提前反映分析师对下季度盈利的预期,所以今天收益中「回归没解释的部分」\(u_t\) 与下季度盈利 \(X_{t+1}\) 相关。盈利可能是外生的(股价不会改变已经发生的盈利),但几乎肯定不是严格外生的。凡是 \(Y\) 是价格、\(X\) 是基本面,都要先想到这一点。

外生性条件对 \(X\) 的全部过去值取条件,比截面回归只对所含回归元取条件更强:它意味着滞后 \(r\) 以外的因果效应都为零,模型中的 \(r+1\) 个系数构成全部非零动态效应。

严格外生还要求误差与未来的 \(X\) 不相关。若 \(Y\) 的变化会导致 \(X\) 未来的变化(反馈),或误差里包含对未来 \(X\) 的预期,\(X\) 就不是严格外生的,尽管可能是外生的。

  • 施肥:施肥随机决定,外生;今天的产量不取决于未来施多少肥,严格外生。
  • 橙汁:天气不受人控制,可视为随机分配,若效应线性且 \(r\) 个月后为零,FDD 外生。但是否严格外生?如果市场参与者根据天气预报决定买卖,价格(从而误差 \(u_t\))就包含了对未来 FDD 的预测,\(u_t\) 与未来 FDD 相关——FDD 外生但不严格外生。与施肥的区别在于:番茄不受未来施肥影响,而橙汁交易者受未来天气预期影响。

16.3 外生回归元下的估计

16.3.1 分布滞后模型的假设

Key Concept 16.2 分布滞后模型的假设(\(\beta_1,\dots,\beta_{r+1}\) 为动态因果效应)

  1. \(X\) 外生:\(E(u_t\mid X_t,X_{t-1},X_{t-2},\dots)=0\);
  2. (a) \(Y_t\)、\(X_t\) 的分布平稳;(b) \((Y_t,X_t)\) 与 \((Y_{t-j},X_{t-j})\) 随 \(j\) 增大趋于独立;
  3. 不太可能有大异常值:\(Y_t\)、\(X_t\) 有超过八阶的非零有限矩;
  4. 无完全多重共线。

假设 2 与第 15a 章 ADL 的假设相同。假设 3 比其他章节的「四阶矩」更强,是 HAC 方差估计量的数学证明所需。

在这些假设下,OLS 一致估计动态乘数。但误差 \(u_t\) 可能自相关,因为遗漏因素本身序列相关。例如橙汁需求取决于消费者收入,收入随经济周期起伏,是序列相关的遗漏变量,于是 \(u_t\) 序列相关。自相关不影响 OLS 的一致性,但常规标准误不再有效,就像异方差下「仅同方差标准误」是错的一样。解决办法是 16.4 节的 HAC 标准误。

16.3.2 动态乘数与累积动态乘数

动态因果效应又称动态乘数(dynamic multiplier)。\(X\) 单位变化 \(h\) 期后对 \(Y\) 的效应是 \(\beta_{h+1}\),称为 \(h\) 期动态乘数;零期乘数 \(\beta_1\) 也称冲击效应(impact effect)。

\(h\) 期累积动态乘数(cumulative dynamic multiplier)是接下来 \(h\) 期效应的累积和:零期 \(\beta_1\),一期 \(\beta_1+\beta_2\),\(h\) 期 \(\beta_1+\cdots+\beta_{h+1}\)。全部之和 \(\beta_1+\cdots+\beta_{r+1}\) 称为长期累积动态乘数(long-run cumulative dynamic multiplier)。

若 \(Y\) 是价格的百分比变化,累积乘数就是对价格水平的累积影响(原书复习题 16.3)。例 (16.2):冲击效应 0.47%,一个月累积 \(0.47+0.14=0.61\%\),两个月累积 \(0.67\%\)。

直接估计累积乘数的变形回归:

\[Y_t=\delta_0+\delta_1\Delta X_t+\delta_2\Delta X_{t-1}+\cdots+\delta_r\Delta X_{t-r+1}+\delta_{r+1}X_{t-r}+u_t. \tag{16.7}\]

推导拆解:以 \(r=1\) 为例看 (16.7) 怎么来。

  1. 原模型 \(Y_t=\beta_0+\beta_1X_t+\beta_2X_{t-1}+u_t\)。
  2. 把 \(X_t\) 写成 \(\Delta X_t+X_{t-1}\)(这只是 \(\Delta X_t=X_t-X_{t-1}\) 移项)。
  3. 代入:\(Y_t=\beta_0+\beta_1\Delta X_t+\beta_1X_{t-1}+\beta_2X_{t-1}+u_t=\beta_0+\beta_1\Delta X_t+(\beta_1+\beta_2)X_{t-1}+u_t\)。
  4. 所以 \(\Delta X_t\) 的系数 \(\delta_1=\beta_1\),\(X_{t-1}\) 的系数 \(\delta_2=\beta_1+\beta_2\),正是一期累积乘数。

直观上:(16.7) 只是对同一组回归元做了可逆的线性重组,拟合值、残差完全不变,只是系数换了一种「记账方式」,让你要的那个和直接成为某一个系数。你想检验「一年后累积效应是否为零」,就不用再手算 \(\text{var}(\hat\beta_1+\cdots+\hat\beta_{13})\) 里一大堆协方差项。

(原书习题 16.5)利用 \(X_t=\Delta X_t+\Delta X_{t-1}+\cdots+\Delta X_{t-r+1}+X_{t-r}\) 代入 (16.4) 可以证明二者等价,且 \(\delta_1=\beta_1\),\(\delta_2=\beta_1+\beta_2\),……,\(\delta_{r+1}=\beta_1+\cdots+\beta_{r+1}\)。OLS 估计也对应相等。好处是:(16.7) 各系数的 HAC 标准误直接就是累积乘数的 HAC 标准误,不需要另算系数之和的方差。


16.4 异方差与自相关一致(HAC)标准误

16.4.1 自相关误差下 OLS 的方差

考虑单回归元 \(Y_t=\beta_0+\beta_1X_t+u_t\)(16.8)。由第 4 章附录,

\[\hat\beta_1-\beta_1=\frac{\frac1T\sum_t(X_t-\bar X)u_t}{\frac1T\sum_t(X_t-\bar X)^2}\cong\frac{\bar v}{\sigma_X^2},\qquad v_t=(X_t-\mu_X)u_t. \tag{16.9–16.10}\]

所以 \(\text{var}(\hat\beta_1)=\text{var}(\bar v)/(\sigma_X^2)^2\)(16.11)。若 \(v_t\) i.i.d.,\(\text{var}(\bar v)=\sigma_v^2/T\),就是熟悉的公式。若 \(v_t\) 序列相关,

\[\text{var}(\bar v)=\frac1{T^2}\Big[T\sigma_v^2+2(T-1)\text{cov}(v_t,v_{t-1})+2(T-2)\text{cov}(v_t,v_{t-2})+\cdots\Big]=\frac{\sigma_v^2}Tf_T, \tag{16.12}\]
\[f_T=1+2\sum_{j=1}^{T-1}\Big(\frac{T-j}T\Big)\rho_j,\qquad\rho_j=\text{corr}(v_t,v_{t-j}). \tag{16.13}\]

推导拆解:(16.12) 和 (16.13) 是怎么来的。

  1. \(\bar v=\frac1T\sum_tv_t\),所以 \(\text{var}(\bar v)=\frac1{T^2}\text{var}(\sum_tv_t)\)。
  2. \(\text{var}(\sum_tv_t)\) 展开是一个 \(T\times T\) 的「协方差表」所有格子之和:对角线 \(T\) 格,每格 \(\sigma_v^2\);紧挨对角线的两条斜线各有 \(T-1\) 格,每格 \(\text{cov}(v_t,v_{t-1})\);再外一层各 \(T-2\) 格……这就是方括号里的系数 \(T\)、\(2(T-1)\)、\(2(T-2)\) 的来源。
  3. 提出 \(T\sigma_v^2\):方括号 \(=T\sigma_v^2\big[1+2\sum_j\frac{T-j}T\rho_j\big]\),其中 \(\rho_j=\text{cov}(v_t,v_{t-j})/\sigma_v^2\)。代回得 \(\frac{\sigma_v^2}Tf_T\)。
  4. \(T\to\infty\) 时,固定 \(j\) 的权重 \((T-j)/T\to1\),于是 \(f_T\to1+2\sum_j\rho_j\)。

\(f_\infty\sigma_v^2\) 称为 \(v_t\) 的「长期方差」。和组合方差类比:\(T\) 期的 \(v\) 就像 \(T\) 只资产,若彼此正相关,等权组合的方差就不会按 \(1/T\) 下降那么快,「有效样本量」只有 \(T/f_T\)。\(f_T=4\) 意味着 600 个月的数据只相当于 150 个独立观测。

大样本下 \(f_T\to f_\infty=1+2\sum_{j=1}^\infty\rho_j\)。合起来

\[\text{var}(\hat\beta_1)=\Big[\frac1T\frac{\sigma_v^2}{(\sigma_X^2)^2}\Big]f_T. \tag{16.14}\]

方括号是没有序列相关时的方差,\(f_T\) 是序列相关修正因子。常规(异方差稳健)标准误漏掉了这个因子。\(X\) 和 \(u\) 都正自相关时 \(\rho_j>0\),\(f_T>1\),常规标准误低估不确定性,t 值被夸大。

\(f_\infty\) 有多大?(原书习题 16.6)若 \(X_t\)、\(u_t\) 是相互独立的平稳 AR(1),系数分别为 \(\gamma_1\)、\(\phi_1\),则 \(v_t\) 的 \(j\) 阶自相关为 \((\phi_1\gamma_1)^j\),

\[f_\infty=1+2\sum_{j=1}^\infty(\phi_1\gamma_1)^j=\frac{1+\phi_1\gamma_1}{1-\phi_1\gamma_1}.\]

\(\phi_1=\gamma_1=0.5\) 时 \(f_\infty=1.67\),标准误被低估约 23%;\(\phi_1=\gamma_1=0.9\) 时 \(f_\infty=9.5\),标准误应扩大约 3 倍。持续性预测变量回归正是后一种情形。

推导拆解:\(v_t\) 的自相关为什么是 \((\phi_1\gamma_1)^j\)。

  1. \(\text{cov}(v_t,v_{t-j})=E[(X_tu_t)(X_{t-j}u_{t-j})]\)(均值已设为 0)。
  2. \(X\) 与 \(u\) 相互独立,期望可以拆开:\(=E(X_tX_{t-j})\cdot E(u_tu_{t-j})\)。
  3. 两个 AR(1) 的自协方差分别是 \(\gamma_1^j\sigma_X^2\)、\(\phi_1^j\sigma_u^2\),相乘得 \((\phi_1\gamma_1)^j\sigma_X^2\sigma_u^2\);除以 \(\text{var}(v_t)=\sigma_X^2\sigma_u^2\) 得自相关 \((\phi_1\gamma_1)^j\)。
  4. \(f_\infty=1+2\sum_{j\ge1}a^j\),\(a=\phi_1\gamma_1\),几何级数 \(=1+\frac{2a}{1-a}=\frac{1+a}{1-a}\)。

要点:只有 \(X\) 和 \(u\) 都自相关时问题才严重。若 \(X\) 是白噪声(\(\gamma_1=0\)),哪怕误差自相关很强,\(f_\infty=1\),常规标准误也没问题。这解释了为什么用「不持续的信号」(如上月收益)做回归问题不大,而用估值比率、利差这类「慢变量」时问题很大。

16.4.2 Newey–West 估计量

\(f_T\) 依赖未知的自相关,必须估计。含此修正、无论是否异方差和自相关都一致的方差估计量称为 HAC 方差估计量(heteroskedasticity- and autocorrelation-consistent),其平方根为 HAC 标准误:

\[\tilde\sigma^2_{\hat\beta_1}=\hat\sigma^2_{\hat\beta_1}\hat f_T, \tag{16.15}\]

\(\hat\sigma^2_{\hat\beta_1}\) 是无序列相关时的(异方差稳健)方差估计。

估计 \(f_T\) 的两难:用全部 \(T-1\) 个样本自相关,估计误差太多,不一致;只用很少几个,又忽略了高阶自相关,也不一致。折中是使用的自相关个数随 \(T\) 增大而增加,但远少于 \(T\):

\[\hat f_T=1+2\sum_{j=1}^{m-1}\Big(\frac{m-j}m\Big)\tilde\rho_j,\qquad\tilde\rho_j=\frac{\sum_{t=j+1}^T\hat v_t\hat v_{t-j}}{\sum_{t=1}^T\hat v_t^2},\qquad\hat v_t=(X_t-\bar X)\hat u_t. \tag{16.16}\]

\(m\) 称为截断参数(truncation parameter),求和保留 \(m-1\) 个自相关,权重 \((m-j)/m\) 线性递减(Bartlett 核),保证方差估计非负。(16.15)+(16.16) 称为 Newey–West 方差估计量(Newey & West 1987)。

白话解释:(16.16) 和 (16.13) 对比只改了两处:用样本自相关 \(\tilde\rho_j\) 代替真值,求和只到 \(m-1\) 而不是 \(T-1\),权重从 \((T-j)/T\) 换成 \((m-j)/m\)。以 \(m=4\) 为例:\(\hat f_T=1+2\big(\tfrac34\tilde\rho_1+\tfrac24\tilde\rho_2+\tfrac14\tilde\rho_3\big)\)。越远的自相关估计得越不准,权重越小,到第 \(m\) 阶降为 0。

为什么不直接用权重 1(简单截断)?那样 \(\hat f_T\) 可能算出负数(比如某个 \(\tilde\rho_j\) 恰好是大负数),方差为负毫无意义。线性递减的权重在数学上保证了结果非负。

\(m=0.75T^{1/3}\) 的增长速度:\(T=100\) 时约 3.5,\(T=1000\) 时 7.5,\(T=10000\) 时约 16。样本增加 100 倍,截断参数只增加约 4.6 倍。

\(m\) 的经验规则:

\[m=0.75\,T^{1/3}, \tag{16.17}\]

取整。它在 \(u_t\)、\(X_t\) 都是一阶自相关 0.5 的 AR(1) 时最优(Andrews 1991)。\(v_t\) 序列相关很强时应增大 \(m\),很弱时减小。由于 \(m\) 的选择有模糊性,好的做法是对至少一个设定再试一两个 \(m\),确认结论不敏感。用其他核(权重)时 (16.17) 不适用。

多元回归同理:误差序列相关时常规标准误不可靠,应使用 HAC;矩阵公式已内置于各种软件。

Key Concept 16.3 HAC 标准误:分布滞后模型(以及一般时间序列回归)的误差可能序列相关,OLS 系数仍一致,但常规标准误不一致,导致误导性的检验与置信区间。用 HAC 方差估计量计算标准误;以 \(m=0.75T^{1/3}\) 为基准,根据序列相关的强弱增减。

软件对应:statsmodels 中 fit(cov_type="HAC", cov_kwds={"maxlags": L}) 的 Bartlett 权重为 \(1-j/(L+1)\),所以 maxlags \(=m-1\) 对应 (16.16)。


16.5 严格外生回归元下的估计

\(X\) 严格外生时有两种更有效的方法:(1) 估计 ADL 模型,再由其系数算出动态乘数,可能需要的系数更少;(2) 用广义最小二乘(generalized least squares, GLS)估计分布滞后模型,系数个数相同但方差更小。以一阶滞后、AR(1) 误差为例说明。

16.5.1 带 AR(1) 误差的分布滞后模型

\[Y_t=\beta_0+\beta_1X_t+\beta_2X_{t-1}+u_t, \tag{16.18}\]
\[u_t=\phi_1u_{t-1}+\tilde u_t, \tag{16.19}\]

\(\tilde u_t\) 无序列相关。把 (16.18) 滞后一期乘以 \(\phi_1\) 后相减:

\[Y_t-\phi_1Y_{t-1}=\beta_0(1-\phi_1)+\beta_1X_t+(\beta_2-\phi_1\beta_1)X_{t-1}-\phi_1\beta_2X_{t-2}+\tilde u_t. \tag{16.20}\]

ADL 表示:

\[Y_t=\alpha_0+\phi_1Y_{t-1}+\delta_0X_t+\delta_1X_{t-1}+\delta_2X_{t-2}+\tilde u_t, \tag{16.21}\]
\[\alpha_0=\beta_0(1-\phi_1),\quad\delta_0=\beta_1,\quad\delta_1=\beta_2-\phi_1\beta_1,\quad\delta_2=-\phi_1\beta_2. \tag{16.22}\]

准差分表示:定义准差分(quasi-difference)\(\tilde Y_t=Y_t-\phi_1Y_{t-1}\)、\(\tilde X_t=X_t-\phi_1X_{t-1}\),

\[\tilde Y_t=\alpha_0+\beta_1\tilde X_t+\beta_2\tilde X_{t-1}+\tilde u_t. \tag{16.23}\]

两种表示等价,误差都无序列相关,但提示了不同的估计策略。

推导拆解:(16.20) 的每一步。

  1. 把 (16.18) 写成 \(t-1\) 期:\(Y_{t-1}=\beta_0+\beta_1X_{t-1}+\beta_2X_{t-2}+u_{t-1}\),两边乘 \(\phi_1\)。
  2. 用 \(t\) 期的 (16.18) 减去它:左边 \(Y_t-\phi_1Y_{t-1}\);截距 \(\beta_0-\phi_1\beta_0\);\(X_t\) 项 \(\beta_1X_t\);\(X_{t-1}\) 项 \(\beta_2X_{t-1}-\phi_1\beta_1X_{t-1}\);\(X_{t-2}\) 项 \(-\phi_1\beta_2X_{t-2}\);误差 \(u_t-\phi_1u_{t-1}\)。
  3. 由 (16.19),\(u_t-\phi_1u_{t-1}=\tilde u_t\),无序列相关。

思路是:误差自相关是因为 \(u_t\) 里有一部分 \(\phi_1u_{t-1}\) 是「上期遗留」的;用 \(Y_{t-1}\) 等去把它减掉,剩下的就是新息。代价是模型里多出 \(Y_{t-1}\) 和 \(X_{t-2}\),并且系数之间有非线性约束(如 \(\delta_2=-\phi_1\beta_2\))。

16.5.2 为什么需要严格外生

(16.23) 的关键假设是 \(E(\tilde u_t\mid\tilde X_t,\tilde X_{t-1},\dots)=0\)(16.24)。以 \(\tilde X\) 的全部历史为条件等价于以 \(X\) 的全部历史为条件,又 \(\tilde u_t=u_t-\phi_1u_{t-1}\),所以条件等价于

\[0=E(u_t\mid X_t,X_{t-1},\dots)-\phi_1E(u_{t-1}\mid X_t,X_{t-1},\dots). \tag{16.25}\]

对一般的 \(\phi_1\) 成立,需要两项都为零。第二项把时间前移一期,就是

\[E(u_t\mid X_{t+1},X_t,X_{t-1},\dots)=0, \tag{16.26}\]

即误差与下一期的 \(X\) 也不相关。这由严格外生蕴含,但不由(过去与现在)外生蕴含。

白话解释:(16.25) 第二项为何要求未来 \(X\) 的信息?\(E(u_{t-1}\mid X_t,X_{t-1},\dots)\) 是在问:「站在 \(t-1\) 期的误差看,下一期的 \(X_t\) 有没有信息?」把时间整体后移一期,就是 \(E(u_t\mid X_{t+1},X_t,\dots)\)。准差分把 \(u_{t-1}\) 和 \(X_t\) 放进了同一个方程,所以 \(X_t\) 与 \(u_{t-1}\) 的相关(即「\(X\) 与过去误差相关」)就变成了回归元与误差的相关,导致偏误。

而普通分布滞后 OLS 只把 \(u_t\) 和 \(X_t,X_{t-1},\dots\) 放在一起,只需要外生。所以「更有效的方法需要更强的假设」在这里是一个可以写出来的具体条件。所以估计 ADL 或准差分模型需要(至少对一期未来的)严格外生,仅外生不够。原书附录 16.2 推广到 AR(p) 误差:需要 \(E(u_t\mid X_{t+p},X_{t+p-1},\dots)=0\);\(p\to\infty\) 时就是严格外生。

16.5.3 用 OLS 估计 ADL 并计算动态乘数

加入 \(Y\) 的滞后和多一期 \(X\) 的滞后后,误差无序列相关(在 AR(1) 误差假设下),可以用常规(异方差稳健)标准误。ADL 系数本身不是动态乘数,但可以由它们算出:把估计的回归函数(省略截距)

\[\hat Y_t=\hat\phi_1Y_{t-1}+\hat\delta_0X_t+\hat\delta_1X_{t-1}+\hat\delta_2X_{t-2} \tag{16.27}\]

中的 \(Y_{t-1}\) 反复代入,得到

\[\hat Y_t=\hat\delta_0X_t+(\hat\delta_1+\hat\phi_1\hat\delta_0)X_{t-1}+(\hat\delta_2+\hat\phi_1\hat\delta_1+\hat\phi_1^2\hat\delta_0)X_{t-2}+\hat\phi_1(\hat\delta_2+\hat\phi_1\hat\delta_1+\hat\phi_1^2\hat\delta_0)X_{t-3}+\cdots \tag{16.29}\]

各项系数就是动态乘数的估计。若 (16.22) 的约束精确成立,第二个以后的乘数都为零(\(\delta_2+\phi_1\delta_1+\phi_1^2\delta_0=0\));无约束 OLS 下一般不为零。用滞后算子写,\(\hat\beta^{ADL}(L)=\hat\phi(L)^{-1}\hat\delta(L)\)(16.35),其中 \((1-\phi L)^{-1}=\sum_{j\ge0}\phi^jL^j\),要求 \(|\phi|<1\)(原书习题 16.11)。

数值例(原书习题 16.10):严格外生的 ADL \(Y_t=5.3+0.2Y_{t-1}+1.5X_t-0.1X_{t-1}+\tilde u_t\)。冲击效应 1.5;一期乘数 \(0.2\times1.5-0.1=0.2\);之后每期乘以 0.2:0.04、0.008、0.0016……长期累积乘数 \(=(1.5-0.1)/(1-0.2)=1.75\)。

推导拆解:用「脉冲实验」理解这些数字。设 \(X\) 在第 0 期等于 1、其他期都为 0,误差为 0,看 \(Y\) 偏离稳态多少。

  • 第 0 期:\(Y_0=1.5\times1=1.5\)。
  • 第 1 期:\(Y_1=0.2\times Y_0-0.1\times X_0=0.3-0.1=0.2\)。
  • 第 2 期:\(Y_2=0.2\times0.2=0.04\)(\(X\) 已无直接作用,只剩 \(Y\) 的自回归传递)。以此类推。

长期累积乘数:设 \(X\) 永久上升 1 单位,新稳态满足 \(\Delta Y^*=0.2\Delta Y^*+1.5-0.1\),解得 \(\Delta Y^*=1.4/0.8=1.75\)。一般公式是「\(X\) 各滞后系数之和 ÷(1 − \(Y\) 各滞后系数之和)」,和 AR(1) 均值 \(\beta_0/(1-\beta_1)\) 是同一结构。

16.5.4 GLS 估计

  • 不可行 GLS(infeasible GLS):若 \(\phi_1\) 已知,直接计算准差分,用 OLS 估计 (16.23)。现实中 \(\phi_1\) 未知。
  • 可行 GLS(feasible GLS):先用 OLS 估计 (16.18),用残差 \(\hat u_t\) 估计 (16.19) 得到 \(\hat\phi_1\),再用 \(\hat\phi_1\) 计算准差分并做 OLS。这就是 Cochrane–Orcutt 估计量(1949)。用新的系数估计更新残差、重估 \(\phi_1\)、重算准差分……直至收敛,称为迭代 Cochrane–Orcutt,它等价于在 (16.22) 非线性约束下对 ADL 做非线性最小二乘。

有效性:\(X\) 严格外生且 \(\tilde u_t\) 同方差时,由高斯–马尔可夫定理,不可行 GLS 是 BLUE;可行 GLS 的 \(\hat\phi_1\) 一致,大样本下与不可行 GLS 等价,因而在大样本下也是 BLUE,比 16.3 节的分布滞后 OLS 更有效。

但若 \(X\) 只是外生而非严格外生,GLS 不一致。原书习题 16.7–16.8 给出一个构造性的例子:\(X_t=\tilde u_{t+1}\),它与当期及过去的误差无关(外生),但与下一期的误差相关(不严格外生)。此时 OLS 一致,不可行 GLS 收敛到 \(\beta_1-\phi_1/(1+\phi_1^2)\)。本章代码第 4 部分会验证这一点。

推导拆解:极限 \(\beta_1-\phi_1/(1+\phi_1^2)\) 的来源(练习 8 的提示展开)。

  1. 准差分后回归为 \(\tilde Y_t=\alpha_0+\beta_1\tilde X_t+\tilde u_t\),其中 \(\tilde X_t=X_t-\phi_1X_{t-1}=\tilde u_{t+1}-\phi_1\tilde u_t\)。
  2. 回归元与误差的协方差:\(\text{cov}(\tilde X_t,\tilde u_t)=\text{cov}(\tilde u_{t+1}-\phi_1\tilde u_t,\ \tilde u_t)=0-\phi_1\sigma^2\)。(\(\tilde u\) 各期不相关。)
  3. 回归元方差:\(\text{var}(\tilde X_t)=\sigma^2+\phi_1^2\sigma^2\)。
  4. 单变量 OLS 的极限 \(=\beta_1+\text{cov}(\tilde X,\tilde u)/\text{var}(\tilde X)=\beta_1-\phi_1/(1+\phi_1^2)\)。这就是遗漏变量偏误公式的同一结构。

问题出在第 2 步:准差分把 \(X_{t-1}=\tilde u_t\) 带进了回归元,而它恰恰就是当期误差。原始的 OLS 回归元 \(X_t=\tilde u_{t+1}\) 与 \(u_t\)(由 \(\tilde u_t,\tilde u_{t-1},\dots\) 组成)无关,所以没有这个问题。

一般规则:GLS 先变换模型,使误差同方差且无序列相关,再对变换后的模型做 OLS(矩阵推导见原书 19.6 节)。效率提升以更强的外生性假设为代价;假设不成立时,「更有效」的估计量收敛到错误的值。


16.6 橙汁价格与寒冷天气

两个问题:霜冻对价格的影响持续多久?这个动态效应在 51 年里是否稳定?

16.6.1 分布滞后 OLS 估计

FDD 外生(人无法影响天气,作为工作假设视为随机分配是合适的),用 OLS 估计分布滞后模型;误差可能序列相关,使用 Newey–West 标准误:\(T=612\),\(m=0.75\times612^{1/3}=6.37\),向上取整为 7。

表 16.1 FDD 对橙汁价格的动态效应(因变量为月度实际价格百分比变化,1950:1–2000:12;括号内为 Newey–West 标准误)

滞后 (1) 动态乘数 (2) 累积乘数 (3) 累积乘数 (4) 累积乘数
0 0.50 (0.14) 0.50 (0.14) 0.50 (0.14) 0.51 (0.15)
1 0.17 (0.09) 0.67 (0.14) 0.67 (0.13) 0.70 (0.15)
2 0.07 (0.06) 0.74 (0.17) 0.74 (0.16) 0.76 (0.18)
3 0.07 (0.04) 0.81 (0.18) 0.81 (0.18) 0.84 (0.19)
4 0.02 (0.03) 0.84 (0.19) 0.84 (0.19) 0.87 (0.20)
5 0.03 (0.03) 0.87 (0.19) 0.87 (0.19) 0.89 (0.20)
6 0.03 (0.05) 0.90 (0.20) 0.90 (0.21) 0.91 (0.21)
12 −0.14 (0.08) 0.54 (0.27) 0.54 (0.28) 0.54 (0.28)
18 0.00 (0.02) 0.37 (0.30) 0.37 (0.31) 0.37 (0.30)
月度哑变量 否 否 否 是,F=1.01 (p=0.43)
HAC 截断参数 \(m\) 7 7 14 7

所有回归都包含 FDD\(_t\) 及其 18 个滞后;表中只列出部分滞后。

  • 一个冰冻度日使当月价格上涨 0.50%,下月再涨 0.17%,再下月 0.07%。\(R^2=0.12\):月度价格变化的大部分不能由天气解释。
  • 动态乘数(原书图 16.2a):初始急涨,之后每月小幅上涨;除第一个月外,单个月份的乘数在 5% 水平都不显著。
  • 累积乘数(图 16.2b):1 个月后 0.67%,2 个月 0.74%,6 个月 0.90%,约第 7 个月见顶;之后乘数转负,价格从峰值缓慢回落,18 个月后累积只剩 0.37%(\(t=0.37/0.30=1.23\),10% 水平不显著)。
  • 结论:霜冻使橙汁价格水平明显上涨,约 7 个月后见顶,之后部分回落。

白话解释:为什么单个乘数大多不显著,累积乘数却显著?单个乘数(如 0.07,SE 0.06)都很小,各自淹没在噪声里;但它们大多同号,加起来的信号在增长,而累积和的标准误(0.14 → 0.20)增长得没有那么快。这和「单只股票 alpha 不显著、但一篮子同方向 alpha 的组合显著」是同一道理。反过来,到 18 个月时累积和回落到 0.37,标准误却已累积到 0.30,就不显著了。

金融直觉:「冲击效应 0.50、一个月后累积 0.67、7 个月见顶 0.90、之后回吐」这个形态说明,市场对霜冻消息的吸收并不是一次完成的。若市场完全有效,价格应在霜冻当月一次跳到新水平,之后的乘数都为零。滞后乘数显著为正意味着存在可交易的漂移(类似盈利公告后的漂移 PEAD),只是本例中滞后乘数单个都不显著,且需要扣除交易成本和期货展期才能判断是否真有利可图。

16.6.2 敏感性分析

  1. HAC 截断参数:第 (3) 列把 \(m\) 加倍到 14,系数不变,标准误变化很小,对 \(m\) 不敏感。
  2. 遗漏变量:霜冻只发生在冬季,不是全年随机分配;若橙汁需求有季节性,季节需求可能与 FDD 相关。加入橙汁销量会带来联立偏误(价格和数量同时决定),但可以加入月度哑变量捕捉需求的季节成分。第 (4) 列加入 11 个月度哑变量,联合不显著(\(p=0.43\)),累积乘数基本不变。
  3. 稳定性(用到第 15b 章的 QLR):对第 (1) 列所有系数(FDD 当期、18 个滞后和截距,\(q=20\))做 QLR 检验(15% 修剪、HAC 方差),QLR \(=21.19\),远超 1% 临界值 2.43;只用 6 个滞后(\(q=8\))重做也在 1% 水平拒绝。动态乘数不稳定。分三段(1950–1966、1967–1983、1984–2000)估计(图 16.3):1950 年代与 1960 年代初,霜冻影响大而持久;1970 年代幅度变小但仍持久;1980 年代后期与 1990 年代,短期影响与 1970 年代相当,但持久性大大降低,约一年后基本消失。

专栏:橙树在行军。 为什么效应会变?一个解释是橙园南迁。1980 年代的严重霜冻促使种植者寻找更温暖的地方:易受霜冻的北部和西部县橙园面积从 1981 年的 232,000 英亩降到 1985 年的 53,000 英亩,南部和中部县从 1985 年的 413,000 英亩增到 1993 年的 588,000 英亩。橙园南移后,北部城市奥兰多的气温对收成的影响变小,价格对它的敏感度自然下降——「非平稳性」有了字面意义(原书借用了《麦克白》中「森林行军」的典故)。2000 年后又有需求下降、巴西进口增加和柑橘黄龙病(citrus greening)的冲击,2000–2015 年佛罗里达橙子产量下降约 60%。

16.6.3 能否用 ADL 或 GLS?

如果 FDD 严格外生,误差又序列相关,ADL 或 GLS 会更有效。但 FDD 严格外生吗?第 (1) 列回归的误差,是价格与「基于过去 18 个月天气的预测」之差。交易者使用天气预报:若预报说冬天特别冷,他们会提前把它计入价格,价格高于回归预测(\(u_t>0\));若预报准确,未来确实会冷(\(X_{t+1}>0\))。于是 \(\text{corr}(X_{t+1},u_t)>0\)。交易者不能影响天气,但能预测天气,所以 FDD 外生但不严格外生,GLS 与 ADL 估计量不一致,本应用不使用它们。

原书复习题 16.4 给出一个检验思路:在 (16.2) 中加入 \(FDD_{t+1}\)。严格外生时其系数应为零;只外生时可能不为零。

专栏:商品交易员让迪士尼世界打寒战。 Roll (1984) 用 1975–1981 年纽约棉花交易所的橙汁期货日价格和奥兰多的日夜气温研究二者关系。他不仅研究寒冷对价格的影响,也研究价格变化对天气的「影响」:交易日内期货价格上涨预示当晚奥兰多会冷(尤其是霜冻),预测力强到能预测美国政府官方天气预报的误差。这正是上面推理的证据:价格包含了对未来天气的预期。Roll 也发现,详细的天气数据只能解释期货价格日度变动的一小部分,他由此提出橙汁期货市场存在「过度波动」(excess volatility)。这个发现也说明了预测与因果的区别:期货价格上涨是寒冷天气的有用预测指标(价格 Granger 因果天气),但交易员不能让气温下降。


16.7 外生性可信吗?若干例子

与截面回归一样,把分布滞后系数解释为动态因果效应取决于 \(X\) 外生。经济时间序列中最重要的威胁是联立因果(第 9、12 章)。

  1. 美国收入与澳大利亚出口:用澳大利亚对美出口对美国收入回归。严格说存在反馈(澳出口下降 → 澳收入下降 → 对美进口需求下降 → 美收入下降),但澳经济远小于美国,效应很小,美国收入可视为外生。换成欧盟对美出口,欧盟需求占美国出口需求的很大部分,两者联立决定,美国收入可能不外生。外生与否取决于情境。
  2. 油价与通胀:油价主要由外国产油国决定,乍看外生;但 OPEC 策略性地设定产量,会考虑包括美国通胀在内的世界经济状况,油价可能内生。
  3. 货币政策与通胀:短期利率由央行决定,但不是随机设定,而是根据当前与预期的未来通胀决定。通胀取决于利率,利率又取决于通胀,所以用通胀对当前与过去利率回归,不能一致估计利率的动态因果效应。
  4. GDP 增长与期限利差:第 15a 章用利差的滞后预测 GDP 增长。滞后值发生在过去,似乎不受当前 GDP 反馈;但过去的利差与过去的 GDP 增长是同时决定的,\(u_t\) 中影响 GDP 增长的其他因素与过去的利差相关,利差不外生。由 ADL(如式 15.15)算出的「乘数」不是利差变化对 GDP 的因果效应——但这不妨碍它用于预测。

原书习题 16.1–16.3 用 Hamilton 的「油价净上涨」变量研究油价冲击对 GDP 增长和利率的动态效应,并提出一个重要的区分:「油价随机上涨、央行按常规规则反应」(实验 A)与「油价随机上涨、央行保持利率不变」(实验 B)是两个不同的实验;分布滞后回归估计的是 A,即包含政策反应在内的总效应。


16.8 结论

时间序列数据使我们能估计 \(X\) 对 \(Y\) 影响的时间路径。用分布滞后回归估计时,\(X\) 必须外生,就像理想实验中随机设定的处理;若严格外生,还可以用更有效的 ADL 或 GLS。误差通常序列相关,推断要用 HAC 标准误。橙汁例子中天气外生的理由令人信服,但经济推理表明它不严格外生,所以只能用分布滞后 OLS。许多计量经济学家关心的关系存在联立因果,回归元连外生都谈不上。判断外生性最终要结合经济理论、制度知识和审慎的判断。


量化实战

本章方法在量化里的位置

冲击的动态响应。 分布滞后模型与累积动态乘数是衡量冲击对资产价格逐期与累积影响的标准工具:天气与库存报告之于商品期货,宏观数据意外之于利率和汇率,盈利意外之于个股,指数调整与资金流之于成分股。累积乘数就是事件研究中的累积异常收益路径。橙汁的例子本身就是商品交易的经典案例:价格对冲击的吸收并非一步到位,前几个月持续累积、之后部分回吐,这类「反应不足—过度反应」的模式正是事件驱动策略关心的。用 (16.7) 的变形回归可以直接得到每个持有期的累积效应及其 HAC 标准误。

HAC 标准误在量化研究中几乎必备。 只要回归残差可能序列相关,就要用 HAC:

  • 重叠收益:用月度数据预测未来 12 个月收益,相邻观测共享 11 个月的收益,残差至少是 MA(11),常规 t 值严重夸大。截断参数至少要覆盖重叠长度(Newey–West 取 \(m-1\ge h-1\),实践中常取 \(1.5h\) 左右),或用 Hansen–Hodrick 标准误。
  • 持续性预测变量:估值比率、利差的自相关接近 1,与持续的误差相乘,\(f_\infty=(1+\phi\gamma)/(1-\phi\gamma)\) 可以很大。
  • 因子收益均值检验与 Fama–MacBeth:检验因子平均收益或 Fama–MacBeth 第二步的系数均值,本质上是对一个时间序列的均值做推断(原书习题 16.12:\(\sqrt T(\bar Y-\mu)\) 的长期方差为 \(\sigma^2_{\tilde u}/(1-\phi_1)^2\)),因子收益若有自相关,就要用 Newey–West 标准误。
  • 策略收益的置信区间:平均收益与夏普比率的置信区间同样要考虑序列相关。

截断参数的选择和敏感性检查应写进研究规范。注意,在高度持续的回归元和较短样本下,即使用了 Newey–West,检验仍会过度拒绝(见下面的代码),这时要更保守,或改用更大的 \(m\)、自助法或专门的方法。

外生性与前视偏差。 严格外生的讨论揭示了金融中「价格领先基本面」的普遍现象:价格包含对未来基本面的预期。用价格解释基本面、或用基本面解释价格时,要警惕反向因果;依赖严格外生的 GLS、ADL 等方法在金融数据上常常不适用,HAC + OLS 更稳健。

结构变化。 橙园南迁使动态乘数改变,提示历史估计的冲击响应在市场结构变化后可能失效;用 QLR 与分段估计检测信号的衰减(第 15b 章)。

宏观冲击的内生性。 利率、油价对资产价格的效应估计面临政策内生性。直接回归得到的不是因果效应;需要识别外生冲击,例如用利率期货隐含的意外部分、在议息公告前后的窄窗口内测量(高频识别)。

示例:分布滞后与累积乘数、手算 Newey–West、重叠收益、GLS 的陷阱

import numpy as np
import pandas as pd
import statsmodels.api as sm

rng = np.random.default_rng(16)

def ar1(n, phi, sd, rng):
    e = rng.normal(0, sd, n); z = np.zeros(n)
    for t in range(1, n): z[t] = phi*z[t-1] + e[t]
    return z

# ---- 1. 外生冲击的分布滞后回归:动态乘数、累积乘数与 HAC ----
T, r = 612, 6
cold = ar1(T, 0.6, 1.0, rng)                                               # 潜在的“寒冷程度”,有持续性
shock = 3*np.maximum(cold - 0.8, 0)                                        # 只在足够冷时为正(类似冰冻度日)
beta = np.array([0.50, 0.17, 0.07, 0.07, 0.02, 0.03, 0.03])                 # 真实动态乘数
u = ar1(T, 0.6, 2.0, rng)                                                   # 序列相关的误差
X = pd.concat({f"L{j}": pd.Series(shock).shift(j) for j in range(r+1)}, axis=1)
y = -0.4 + X.fillna(0).values @ beta + u
d = pd.concat([pd.Series(y, name="y"), X], axis=1).dropna()
m = int(np.ceil(0.75*len(d)**(1/3)))                                        # (16.17) 截断参数
fit_nw = sm.OLS(d["y"], sm.add_constant(d.drop(columns="y"))).fit(cov_type="HAC",
                                                                    cov_kwds={"maxlags": m-1})
print(f"T = {len(d)},  m = 0.75*T^(1/3) 取整 = {m}")
print("动态乘数:", np.round(fit_nw.params.values[1:], 3))
print("NW  SE  :", np.round(fit_nw.bse.values[1:], 3))
# (16.7) 变形回归:ΔX_t,...,ΔX_{t-r+1}, X_{t-r} 的系数 = 累积乘数
s = pd.Series(shock)
Z = pd.concat({**{f"dL{j}": s.diff().shift(j) for j in range(r)}, f"L{r}": s.shift(r)}, axis=1)
d2 = pd.concat([pd.Series(y, name="y"), Z], axis=1).dropna()
cum = sm.OLS(d2["y"], sm.add_constant(d2.drop(columns="y"))).fit(cov_type="HAC",
                                                                  cov_kwds={"maxlags": m-1})
print("累积乘数:", np.round(cum.params.values[1:], 3), " 真值:", np.round(np.cumsum(beta), 3))
print("累积 SE :", np.round(cum.bse.values[1:], 3))
cum2 = sm.OLS(d2["y"], sm.add_constant(d2.drop(columns="y"))).fit(cov_type="HAC",
                                                                   cov_kwds={"maxlags": 2*m-1})
print(f"截断参数加倍后长期乘数 SE: {cum.bse.values[-1]:.3f} -> {cum2.bse.values[-1]:.3f}")

# ---- 2. 手算 Newey–West:f_T 修正因子 ----
x1, y1 = d["L0"].values, d["y"].values
X1 = sm.add_constant(x1); b1 = np.linalg.lstsq(X1, y1, rcond=None)[0]
v = (x1 - x1.mean()) * (y1 - X1 @ b1)
rho = [np.sum(v[j:]*v[:-j])/np.sum(v**2) for j in range(1, m)]
fT = 1 + 2*sum((m-j)/m*rho[j-1] for j in range(1, m))
se_hc0 = np.sqrt(np.sum(v**2) / np.sum((x1-x1.mean())**2)**2)
nw0 = sm.OLS(y1, X1).fit(cov_type="HAC", cov_kwds={"maxlags": m-1, "use_correction": False})
print(f"\n单回归元: f_T = {fT:.3f},  异方差稳健 SE = {se_hc0:.4f},"
      f"  手算 NW SE = {se_hc0*np.sqrt(fT):.4f},  statsmodels = {nw0.bse[1]:.4f}")

# ---- 3. 重叠收益:用持续性预测变量预测未来 12 个月收益(真实无预测力)----
def overlap_test(n=480, h=12, reps=1000):
    rej_ols, rej_nw = 0, 0
    for _ in range(reps):
        xx = ar1(n + h, 0.95, 1.0, rng)                 # 估值类预测变量,高度持续
        ret = rng.normal(0.5, 4.5, n + h)               # 月收益,与 xx 独立
        fwd = np.array([ret[t+1:t+1+h].sum() for t in range(n)])
        Xo = sm.add_constant(xx[:n])
        f1 = sm.OLS(fwd, Xo).fit()
        f2 = sm.OLS(fwd, Xo).fit(cov_type="HAC", cov_kwds={"maxlags": int(1.5*h)})
        rej_ols += abs(f1.tvalues[1]) > 1.96; rej_nw += abs(f2.tvalues[1]) > 1.96
    return rej_ols/reps, rej_nw/reps
ro, rn = overlap_test()
print(f"\n重叠 12 月收益, 原假设为真: 拒绝率 OLS SE = {ro:.1%},  NW SE = {rn:.1%}")

# ---- 4. 严格外生 vs 仅外生:OLS、ADL 与可行 GLS(Cochrane–Orcutt)----
def cochrane_orcutt(y, x, iters=20):
    X = sm.add_constant(x); b = np.linalg.lstsq(X, y, rcond=None)[0]
    for _ in range(iters):
        e = y - X @ b
        phi = np.sum(e[1:]*e[:-1]) / np.sum(e[:-1]**2)
        yt, xt = y[1:] - phi*y[:-1], x[1:] - phi*x[:-1]
        bt = np.linalg.lstsq(sm.add_constant(xt), yt, rcond=None)[0]
        b = np.array([bt[0]/(1-phi), bt[1]])
    return b[1]
phi1, beta1, n, reps = 0.7, 1.0, 400, 500
res = {"严格外生": ([], []), "仅外生": ([], [])}
for _ in range(reps):
    ut = rng.standard_normal(n + 1)
    uu = np.zeros(n + 1)
    for t in range(1, n + 1): uu[t] = phi1*uu[t-1] + ut[t]
    for case in res:
        if case == "严格外生":
            x = ar1(n, 0.5, 1.0, rng)                 # 与误差完全独立
        else:
            x = ut[1:].copy()                         # X_t = ũ_{t+1}:与未来误差相关
        yy = beta1*x + uu[:-1]                        # Y_t = β1 X_t + u_t
        b_ols = np.polyfit(x, yy, 1)[0]
        res[case][0].append(b_ols); res[case][1].append(cochrane_orcutt(yy, x))
for case, (bo, bg) in res.items():
    print(f"{case}: OLS 均值 {np.mean(bo):.3f} 标准差 {np.std(bo):.3f} | "
          f"GLS 均值 {np.mean(bg):.3f} 标准差 {np.std(bg):.3f}")
print(f"理论: 仅外生时不可行 GLS → β1 − φ1/(1+φ1²) = {beta1 - phi1/(1+phi1**2):.3f}")

关键输出:

T = 606,  m = 0.75*T^(1/3) 取整 = 7
动态乘数: [ 0.579  0.167  0.06  -0.032  0.033  0.046 -0.066]
NW  SE  : [0.097 0.086 0.076 0.067 0.082 0.091 0.072]
累积乘数: [0.579 0.745 0.806 0.774 0.808 0.854 0.788]  真值: [0.5  0.67 0.74 0.81 0.83 0.86 0.89]
累积 SE : [0.097 0.134 0.142 0.162 0.167 0.2   0.2  ]
截断参数加倍后长期乘数 SE: 0.200 -> 0.203

单回归元: f_T = 1.250,  异方差稳健 SE = 0.0887,  手算 NW SE = 0.0991,  statsmodels = 0.0991

重叠 12 月收益, 原假设为真: 拒绝率 OLS SE = 52.5%,  NW SE = 12.0%
严格外生: OLS 均值 1.002 标准差 0.080 | GLS 均值 1.001 标准差 0.050
仅外生: OLS 均值 0.991 标准差 0.067 | GLS 均值 0.508 标准差 0.009
理论: 仅外生时不可行 GLS → β1 − φ1/(1+φ1²) = 0.530

读结果:

  • 第 1 部分模仿橙汁数据(真实乘数取自表 16.1):\(T=606\) 时 \(m=7\),与原书相同。单个滞后的乘数估计噪声不小(例如第 3 期估计为 −0.032),但变形回归给出的累积乘数在每个期限都在真值的一个标准误以内,长期累积乘数 0.788(SE 0.200)对真值 0.89。截断参数加倍,标准误几乎不变——这就是 16.6.2 节的敏感性检查。
  • 第 2 部分:按 (16.16) 手算的 Newey–West 标准误与 statsmodels 完全一致(maxlags = m-1)。修正因子 \(f_T=1.25\),HAC 标准误比异方差稳健标准误大约 12%。
  • 第 3 部分:预测变量与未来收益其实无关,但用常规标准误时,重叠 12 个月收益的回归有 52.5% 的概率「显著」;Newey–West 把拒绝率降到 12%,大有改善,但在 \(\gamma=0.95\) 的持续预测变量下仍高于名义的 5%。持续预测变量 + 重叠收益是量化研究中最容易产生虚假显著的组合之一。
  • 第 4 部分:\(X\) 严格外生时,可行 GLS 与 OLS 都无偏,GLS 的标准差(0.050)比 OLS(0.080)小得多——这是 GLS 的效率优势。\(X_t=\tilde u_{t+1}\) 只外生时,OLS 仍然一致(0.991),GLS 却收敛到 0.51 左右,与不可行 GLS 的理论极限 0.530 接近;而且它的标准差只有 0.009,「非常精确地估计了一个错误的数」。

本章小结

时间序列中的动态因果效应,定义为同一受试者在不同时点接受随机处理时,处理对结果影响的时间路径。若 \(X\) 外生(误差对 \(X\) 当前与过去值的条件均值为零),\(Y\) 对 \(X\) 及其滞后的分布滞后回归系数就是动态乘数,累积和为累积乘数,总和为长期累积乘数;变形回归 (16.7) 直接给出累积乘数及其标准误。严格外生还要求误差与 \(X\) 的未来值无关;若 \(Y\) 反馈影响未来的 \(X\),或误差包含对未来 \(X\) 的预期(交易者预测天气),\(X\) 就不严格外生。分布滞后回归的误差通常序列相关,OLS 一致但常规标准误错误,须用 HAC(Newey–West)标准误,修正因子 \(f_T=1+2\sum(1-j/T)\rho_j\),截断参数以 \(m=0.75T^{1/3}\) 为基准并做敏感性检查。严格外生时,ADL 的 OLS 或 GLS(Cochrane–Orcutt)更有效;仅外生时二者不一致。橙汁的例子显示,一个冰冻度日使价格当月上涨约 0.5%,约 7 个月后累积见顶约 0.9%,结论对截断参数和季节因素稳健,但效应随橙园南迁而变小、变短。经济时间序列中的油价、利率、期限利差多为内生,外生性需要结合理论与制度判断。

概念 公式 / 要点
分布滞后模型 \(Y_t=\beta_0+\beta_1X_t+\cdots+\beta_{r+1}X_{t-r}+u_t\)
外生 / 严格外生 \(E(u_t\mid X_t,X_{t-1},\dots)=0\) / 再加上未来的 \(X\)
\(h\) 期动态乘数 \(\beta_{h+1}\);冲击效应 \(\beta_1\)
累积乘数 \(\beta_1+\cdots+\beta_{h+1}\);长期 \(\sum_j\beta_j\);变形回归 (16.7)
序列相关修正 \(\text{var}(\hat\beta_1)=\frac{\sigma_v^2}{T\sigma_X^4}f_T\),\(f_T=1+2\sum_j\frac{T-j}T\rho_j\)
两个 AR(1) 时 \(f_\infty=(1+\phi_1\gamma_1)/(1-\phi_1\gamma_1)\)
Newey–West \(\hat f_T=1+2\sum_{j=1}^{m-1}\frac{m-j}m\tilde\rho_j\),\(m=0.75T^{1/3}\)
ADL 表示 \(Y_t=\alpha_0+\phi_1Y_{t-1}+\delta_0X_t+\delta_1X_{t-1}+\delta_2X_{t-2}+\tilde u_t\)
准差分 / GLS \(\tilde Y_t=Y_t-\phi_1Y_{t-1}\);Cochrane–Orcutt;严格外生时大样本 BLUE
仅外生时 GLS 不一致;例 \(X_t=\tilde u_{t+1}\) 时 \(\to\beta_1-\phi_1/(1+\phi_1^2)\)

练习

基础

  1. 用表 16.1 第 (1) 列,计算一个 5 冰冻度日的月份在当月、下月和两个月后对价格水平的累积影响。 答案要点:\(5\times0.50=2.5\%\);\(5\times0.67=3.35\%\);\(5\times0.74=3.7\%\)。
  2. (原书习题 16.10)严格外生的 ADL \(Y_t=5.3+0.2Y_{t-1}+1.5X_t-0.1X_{t-1}+\tilde u_t\)。求冲击效应、前四期动态乘数、前四期累积乘数和长期累积乘数。 答案要点:1.5、0.2、0.04、0.008;累积 1.5、1.7、1.74、1.748;长期 \(1.4/0.8=1.75\)。
  3. \(T=480\) 的月度回归,按 (16.17) 截断参数是多少?若残差是重叠 12 个月收益产生的,你会怎样调整? 答案要点:\(0.75\times480^{1/3}\approx5.87\),取 6;重叠 12 期时残差至少是 MA(11),截断参数应至少覆盖 12 期(如 \(m-1=12\) 到 18),并做敏感性检查。
  4. (原书复习题 16.2)\(X\) 严格外生,估计 ADL(1,1) 后残差高度序列相关。应该加滞后,还是用 HAC 标准误? 答案要点:ADL 的设定意图就是使误差无序列相关;残差序列相关说明滞后不够,应增加滞后。
  5. (原书复习题 16.1)1970 年代常见的做法是用名义 GDP 变化对货币供应变化的分布滞后回归估计货币的效应。何种假设下这能估计因果效应?在现代美国经济中成立吗? 答案要点:需要货币供应外生(随机决定);现代央行根据经济状况调整政策,货币内生,不成立。

进阶

  1. (原书习题 16.5)由 (16.4) 推导 (16.7),并说明 (16.7) 中 \(X_{t-r}\) 的系数为什么是长期累积乘数。 提示:\(X_{t-j}=\Delta X_{t-j}+\Delta X_{t-j-1}+\cdots+\Delta X_{t-r+1}+X_{t-r}\),代入后合并同类项。
  2. (原书习题 16.6)\(u_t\)、\(X_t\) 是相互独立的平稳 AR(1),系数 \(\phi_1\)、\(\gamma_1\)。证明 \(\text{var}(v_t)=\sigma_X^2\sigma_u^2\),\(v_t\) 的 \(j\) 阶自相关为 \((\phi_1\gamma_1)^j\),并求 \(f_\infty\)。\(\phi_1=\gamma_1=0.9\) 时标准误应放大多少倍? 答案要点:\(f_\infty=(1+\phi_1\gamma_1)/(1-\phi_1\gamma_1)\);0.9 时 \(=1.81/0.19\approx9.5\),标准误放大约 3.1 倍。
  3. (原书习题 16.7–16.8)设 \(u_t=\phi_1u_{t-1}+\tilde u_t\),\(X_t=\tilde u_{t+1}\)。(a) 证明 \(X\) 外生但不严格外生;(b) 证明 OLS 一致;(c) 证明不可行 GLS 收敛到 \(\beta_1-\phi_1/(1+\phi_1^2)\)。 提示:(c) 准差分后 \(\tilde X_t=\tilde u_{t+1}-\phi_1\tilde u_t\) 与误差 \(\tilde u_t\) 的协方差为 \(-\phi_1\sigma^2\),方差为 \((1+\phi_1^2)\sigma^2\),用遗漏变量偏误公式。
  4. (原书习题 16.12 改编)\(Y_t=\beta_0+u_t\),\(u_t\) 为 AR(1),\(\phi_1=0.3\),\(\sigma^2_{\tilde u}=7.9\),\(T=200\),\(\bar Y=2.8\)。构造 \(\mu_Y\) 的 95% 置信区间,并与忽略序列相关的区间比较。(把 \(Y\) 想象成一个策略的月收益。) 答案要点:长期方差 \(7.9/0.7^2=16.1\),SE \(=\sqrt{16.1/200}=0.284\),CI \(2.8\pm0.56=[2.24,3.36]\);忽略序列相关时方差为 \(7.9/(1-0.09)=8.68\),SE \(=0.208\),区间窄约 27%。
  5. 修改本章代码第 3 部分:(a) 把 Newey–West 的 maxlags 改为 6、24、36,观察拒绝率;(b) 把预测变量持续性从 0.95 改为 0.5。总结在什么条件下 HAC 修正最重要、也最不够用。 提示:持续性越强、重叠越长,常规标准误越失真,有限样本下 NW 的修正也越不够。

原书推荐习题:16.5(累积乘数变形回归);16.6(\(f_\infty\) 的推导,直观理解 HAC 修正幅度);16.7、16.8(外生与严格外生的构造性例子、GLS 的不一致);16.10、16.11(由 ADL 计算乘数、滞后多项式求逆);16.12 与实证题 E16.3(序列相关数据下均值的置信区间与长期平均的预测区间,可直接用于策略收益);16.1–16.3(油价冲击的动态乘数、实验 A/B 的含义);复习题 16.4(用未来 FDD 检验严格外生);实证题 E16.1(工业生产对油价冲击的分布滞后,HAC 截断参数选择)。


原书对照

本章内容 原书章节 PDF 页码
章引言(《颠倒乾坤》) 第 16 章开篇 p.610–611
橙汁数据初探(式 16.1–16.2) 16.1 p.611–613
动态因果效应、两种外生性(KC 16.1) 16.2 p.612–617
外生回归元下的估计、动态与累积乘数(KC 16.2) 16.3 p.617–620
HAC 标准误、Newey–West(KC 16.3) 16.4 p.620–624
严格外生下的 ADL 与 GLS 16.5 p.624–630
橙汁价格与寒冷天气(表 16.1)、橙树行军与迪士尼专栏 16.6 p.630–636
外生性可信吗? 16.7 p.637–638
结论 16.8 p.639–640
复习题、习题与实证题 第 16 章末 p.641–647
橙汁数据、滞后算子下的 ADL 与 GLS 附录 16.1–16.2 p.647–649

注:原书页码 = PDF 页码 − 1。