量化交易中文教材

第 15a 章 时间序列回归与预测:自回归、ADL 与样本外评估

原书第 15 章在本册分为两章讲授。本章(15a)讲平稳时间序列的预测:滞后与自相关、平稳性与 MSFE、AR 与 ADL 模型、Granger 因果、MSFE 的三种估计与伪样本外预测、信息准则定阶。下一章(15b)讲两类非平稳:随机趋势(单位根、伪回归、ADF 检验)与结构突变(Chow、QLR 检验)。

学习目标

读完本章,你应当能够:

  1. 熟练使用时间序列的基本变换:滞后、一阶差分、对数差分与年化增长率,计算并解释样本自相关。
  2. 说清平稳性的含义及其在预测中的作用(时间序列版的「同分布」与外部有效性),区分神谕预测、预测误差、MSFE 与 RMSFE。
  3. 用 OLS 估计 AR(p) 与 ADL(p,q) 模型并做一步预测,用 F 检验做 Granger 因果(增量预测力)检验。
  4. 用回归标准误、最终预测误差(FPE)与伪样本外预测三种方法估计 MSFE,构造预测区间,并知道各自的适用条件。
  5. 用 BIC、AIC 选择滞后阶数,理解 BIC 一致、AIC 倾向高估的原因,以及「所有候选模型必须用同一样本」的实现要求。
  6. 把这些工具用于收益可预测性检验、择时信号评估和走步回测。

读前导读

这一章在解决什么问题

截面回归里,每个观测是不同的公司或学校,彼此独立;时间序列里,每个观测是同一个东西在不同时刻的值,今天和昨天天然相关。本章回答:怎么用一个序列自己的过去(以及别的序列的过去)去预测它的下一期,以及怎么诚实地评估预测好不好。

你在 CFA 二级的「时间序列分析」一章见过 AR(1)、均值回复水平 \(b_0/(1-b_1)\)、用残差自相关检验模型设定、以及「协方差平稳」这些说法。本章把这些放进更严格的框架:平稳性是什么、为什么它是「用过去预测未来」的前提、MSFE(均方预测误差)怎么拆、怎么用伪样本外预测(就是走步回测)估计它、怎么用 BIC/AIC 选滞后阶数。Granger 因果则是「信号有没有增量信息」的标准检验,择时研究天天用。

和第 14 章的联系:第 14 章说 OLS 的样本外误差是 \((1+k/n)\sigma^2\),本章的 FPE 是同一个公式换成时间序列记号;第 14 章用交叉验证,本章用伪样本外预测,区别只是时间不能倒流。

需要先想起来的数学

  • 几何级数:\(|a|<1\) 时 \(1+a+a^2+\cdots=1/(1-a)\),\(1+a^2+a^4+\cdots=1/(1-a^2)\)。平稳 AR(1) 的均值、方差公式全靠它。例:\(a=0.7\) 时 \(1/(1-0.49)\approx1.96\),所以 AR(1) 的方差约是冲击方差的 2 倍。见 第 00 册第 04 章 级数与收敛。
  • 对数与小变化近似:\(\ln(1+x)\approx x\)(\(x\) 小时),所以 \(\ln Y_t-\ln Y_{t-1}=\ln(1+g)\approx g\),对数差约等于增长率。例:\(\ln(1.03)=0.02956\approx0.03\)。这是泰勒展开的一阶项,见 第 00 册第 02 章 导数与泰勒展开。
  • 条件期望与迭代期望:\(E(Y\mid X)\) 是「知道 \(X\) 后对 \(Y\) 的最佳猜测」;迭代期望定律 \(E[E(Y\mid X)]=E(Y)\)。证明 AR 误差无序列相关、条件均值是最佳预测都要用它。见 第 00 册第 07 章 概率中的分析工具。
  • 依概率收敛 \(\xrightarrow{p}\):样本量趋于无穷时,估计量以越来越大的概率落在真值附近。BIC 一致性的证明里用到。同见第 07 章。
  • 多项式的根:AR(p) 是否平稳取决于一个多项式的根是否都在单位圆外。只需记住 AR(1) 的版本:\(|\beta_1|<1\)。

记号提醒:\(\hat Y_{T+1|T}\) 读作「用截至 \(T\) 期的信息对 \(T+1\) 期的预测」;\(L\) 是滞后算子,\(LY_t=Y_{t-1}\)。

怎么读这一章

核心必读:15.1.2 自相关、15.2 平稳性与 MSFE、15.3.1–15.3.2 的 AR 模型、15.4.4 Granger 因果、15.5.1 的三种 MSFE 估计(尤其 KC 15.7 伪样本外预测)、15.6 的 BIC/AIC。15.3.3 关于平稳 AR(1) 性质的推导值得跟着算一遍,它解释了「均值回复」的数学来源。滞后算子和 ARMA 那两段第一次可以只看结论。15.6 末尾 BIC 一致性的证明可以跳过,只记住「BIC 选得准,AIC 偏多」。15.2.3 的「你能战胜市场吗」专栏和量化实战部分对实务最有用。


15.0 本章要解决的问题

时间序列数据是同一实体在多个时点上的观测。它能回答截面数据回答不了的两类问题:

  • 动态因果效应(dynamic causal effect):\(X\) 变化对 \(Y\) 的影响随时间如何展开?例如强制系安全带法律对交通死亡的初始与后续效应。这是第 16 章的主题。
  • 预测:下个月的失业率、利率、股价最好的预测是多少?这是本章的主题。

经济预测(economic forecasting)就是预测经济变量的未来值:企业据此计划产量,政府据此编制预算,央行据此制定货币政策,投资者据此预测利润。预测与第 14 章的统计预测是同一类问题,只是对象换成了时间序列的未来值。预测模型不需要、通常也没有因果解释。


15.1 时间序列数据与序列相关

15.1.1 滞后、差分、对数与增长率

记日期 \(t\) 的观测为 \(Y_t\),观测总数为 \(T\),观测间隔可以是日、周、月、季、年。原书主例是美国季度实际 GDP,1960:Q1–2017:Q4,\(T=232\)。

Key Concept 15.1 滞后、一阶差分、对数与增长率

  • 一阶滞后(first lag)\(Y_{t-1}\),\(j\) 阶滞后 \(Y_{t-j}\);
  • 一阶差分(first difference)\(\Delta Y_t=Y_t-Y_{t-1}\);
  • 对数一阶差分 \(\Delta\ln(Y_t)=\ln Y_t-\ln Y_{t-1}\);
  • 百分比变化 \(\approx100\,\Delta\ln(Y_t)\),变化越小越准确。

取对数有两个理由:许多经济序列近似指数增长,取对数后近似线性增长;许多序列的标准差大致与水平成比例,取对数后标准差近似恒定。对数差近似比例变化,因为 \(\ln(X+a)-\ln X\approx a/X\)。

例(原书表 15.1):2016:Q4 GDP 为 16,851(十亿美元),2017:Q1 为 16,903。季度增长 \(100\times(16903-16851)/16851=0.31\%\),按季度宏观数据的惯例年化为 \(0.31\times4=1.24\%\)。用对数差:\(\ln16903-\ln16851=0.00308\),年化 \(1.23\%\),几乎相同。因此定义年化增长率

\[\text{GDPGR}_t\cong400[\ln(GDP_t)-\ln(GDP_{t-1})]=400\,\Delta\ln(GDP_t). \tag{15.1}\]

400 = 100(化为百分比)× 4(季度化为年率)。月度数据年化用 1200(原书习题 15.2)。

季度 GDP ln GDP GDPGR GDPGR 一阶滞后
2016:Q4 16,851 9.732 1.74 2.74
2017:Q1 16,903 9.735 1.23 1.74
2017:Q2 17,031 9.743 3.01 1.23
2017:Q3 17,164 9.751 3.11 3.01
2017:Q4 17,272 9.757 2.50 3.11

GDP 增长率波动很大:1978:Q2 年率超过 15%,2008:Q4 年率下降超过 8%;全期平均 3.0%,样本标准差 3.3%。

金融中对应的就是对数收益率 \(r_t=\ln P_t-\ln P_{t-1}\),常乘 100 表示百分比;日收益年化通常乘 252,月度乘 12。

15.1.2 自相关

序列与自身滞后值的相关称为自相关(autocorrelation)或序列相关(serial correlation)。

Key Concept 15.2 自协方差与自相关

\[j\text{ 阶自协方差}=\text{cov}(Y_t,Y_{t-j}), \tag{15.2}\]
\[j\text{ 阶自相关}\ \rho_j=\text{corr}(Y_t,Y_{t-j})=\frac{\text{cov}(Y_t,Y_{t-j})}{\sqrt{\text{var}(Y_t)\text{var}(Y_{t-j})}}. \tag{15.3}\]

样本估计为

\[\widehat{\text{cov}}(Y_t,Y_{t-j})=\frac1T\sum_{t=j+1}^T(Y_t-\bar Y_{j+1:T})(Y_{t-j}-\bar Y_{1:T-j}),\qquad\hat\rho_j=\frac{\widehat{\text{cov}}(Y_t,Y_{t-j})}{\widehat{\text{var}}(Y_t)}. \tag{15.4–15.5}\]

除以 \(T\) 而不是自由度调整后的观测数是惯例;(15.5) 用 \(\text{var}(Y_t)\) 代替 \(\sqrt{\text{var}(Y_t)\text{var}(Y_{t-j})}\),依据是平稳性推出二者相等。

白话解释:自相关就是把序列和「往后挪 \(j\) 格的自己」排成两列,算普通的相关系数。\(\rho_1=0.33\) 意思是:本季度增长高于均值 1 个标准差,下季度平均高于均值 0.33 个标准差。下标 \(\bar Y_{j+1:T}\) 表示「第 \(j+1\) 到第 \(T\) 期的样本均值」,因为挪了 \(j\) 格之后,两列各自只剩 \(T-j\) 个数。

在收益数据里,\(\rho_1>0\) 叫动量(涨了接着涨),\(\rho_1<0\) 叫反转。实务上判断显著性的粗略尺度:无自相关的序列,\(\hat\rho_j\) 的标准误约为 \(1/\sqrt T\)。516 个月的样本,\(1/\sqrt{516}\approx0.044\),所以 \(|\hat\rho_j|<0.09\) 基本都算噪声。

GDP 增长率前四阶样本自相关为 0.33、0.26、0.10、0.11:温和正自相关,本季度增长快于平均,下季度也倾向于快于平均。

15.1.3 其他经济时间序列

原书图 15.2 展示了四个序列,它们的行为差别很大:

  • 美国失业率:衰退时大幅上升,扩张时下降,有长期起伏。
  • 美元/英镑汇率:1972 年前布雷顿森林固定汇率体系下近乎恒定(仅 1968 年英镑贬值至 2.40 美元),之后浮动、大幅波动。
  • 日本工业生产(对数):1960 年代到 1970 年代初快速增长,之后放缓,1990 年代初以来几乎不增长。
  • Wilshire 5000 日百分比变化(1990–2017,7305 个观测):几乎没有序列相关——如果有,就可以用过去的涨跌预测并获利。但它的波动率有模式:1998–2003、2007–2012 年日变化标准差大,1994、2004、2017 年小。这种波动率聚集(volatility clustering)是一种特殊的异方差,在金融时间序列中普遍存在,第 17c 章用 ARCH/GARCH 建模(亦见第 06 册第 03a 章)。

收益本身难以预测、波动率却可以预测,是金融时间序列最重要的经验事实之一。


15.2 平稳性与均方预测误差

15.2.1 平稳性

用过去预测未来,前提是未来在概率意义上与过去相似。

Key Concept 15.3 平稳性(stationarity):若对任意 \(T\),\((Y_{s+1},Y_{s+2},\dots,Y_{s+T})\) 的联合分布不依赖 \(s\),则称 \(Y_t\) 平稳,否则称非平稳(nonstationary)。若 \((X_{s+1},Y_{s+1},\dots,X_{s+T},Y_{s+T})\) 的联合分布不依赖 \(s\),则称 \(X_t\)、\(Y_t\) 联合平稳(jointly stationary)。

非平稳的两种常见原因:无条件均值有趋势(例如对数 GDP 持续上升),或总体回归系数在某时点变化(突变)。它们在第 15b 章讨论,本章假设平稳。

白话解释:KC 15.3 的定义读起来抽象,拆开看是:从时间轴上任意位置截一段长度为 \(T\) 的窗口,这段数据的「统计面貌」(均值、方差、各阶自相关、乃至整个分布形状)都一样,与窗口放在哪里(\(s\))无关。直观说,就是序列没有「年代感」——把一段数据给你看,你猜不出它来自哪一年。

CFA 课程里的「协方差平稳」只要求均值、方差、自协方差不随时间变,这里的定义更强(整个联合分布不变),但本书的推导实际上主要用到前者。

金融直觉:股价本身不平稳(2000 点和 5000 点的指数显然有年代感),收益率大致平稳;市盈率、利差介于两者之间,看上去会回到某个中枢,但回得很慢。判断用水平还是用差分建模,是第 15b 章的主题。

15.2.2 预测、预测误差与 MSFE

一步向前预测(one-step ahead forecast)用截至 \(T\) 的数据预测 \(Y_{T+1}\),记为 \(\hat Y_{T+1|T}\),帽子表示基于估计的模型。多步预测见第 17a 章。

\[\text{预测误差}=Y_{T+1}-\hat Y_{T+1|T}. \tag{15.6}\]

预测是对未来日期的样本外预测,预测误差要等实际值出来后才实现。

均方预测误差(mean squared forecast error, MSFE)是第 14 章 MSPE 的时间序列对应物:

\[\text{MSFE}=E[(Y_{T+1}-\hat Y_{T+1|T})^2]. \tag{15.7}\]

均方根预测误差 RMSFE \(=\sqrt{\text{MSFE}}\),与 \(Y\) 同单位;预测无偏时它就是预测误差的标准差。

MSFE 有两个来源:未来值 \(Y_{T+1}\) 本身的随机性,以及模型参数的估计误差。最简单的例子是用历史均值 \(\mu_Y\) 预测——原书说这是预测股票收益的合理起点。均值需要估计为 \(\hat\mu_Y\),若 \(Y_{T+1}\) 与 \(\hat\mu_Y\) 不相关,

\[\text{MSFE}=E[(Y_{T+1}-\mu_Y)^2]+E[(\hat\mu_Y-\mu_Y)^2].\]

第一项是未来值围绕均值的波动,第二项是估计均值的代价。

最佳预测是给定历史的条件均值 \(E(Y_{T+1}\mid Y_1,\dots,Y_T)\),称为神谕预测(oracle forecast),不可行,但是评价基准。

15.2.3 专栏:你能战胜市场吗?

如果能预测股价涨跌,主动交易就能胜过买入持有。用过去收益预测未来收益称为动量预测(momentum forecasts)。若收益有自相关,自回归模型就有用。原书用 CRSP 价值加权指数的月度超额收益(含股息,减国库券收益,单位为百分点/月),1960:M1–2002:M12,\(T=516\):

表 15.2

AR(1) AR(2) AR(4)
\(r_{t-1}\) 0.050 (0.051) 0.053 (0.051) 0.054 (0.051)
\(r_{t-2}\) −0.053 (0.048) −0.054 (0.048)
\(r_{t-3}\) 0.009 (0.050)
\(r_{t-4}\) −0.016 (0.047)
截距 0.312 (0.197) 0.328 (0.199) 0.331 (0.202)
滞后项联合 F(p 值) 0.968 (0.325) 1.342 (0.261) 0.707 (0.587)
\(\bar R^2\) 0.0006 0.0014 −0.0022

结论是否定的:滞后项单个与联合都不显著,\(\bar R^2\) 接近 0 甚至为负。

白话解释:怎么读表 15.2。括号里是标准误,AR(1) 的滞后系数 \(0.050/0.051\approx1\),\(t\) 值约 1,远不到 2。「滞后项联合 F」检验所有滞后系数同时为零,p 值 0.33、0.26、0.59 都很大。\(\bar R^2\) 为负的意思是:多估的参数带来的惩罚超过了它解释的方差,模型还不如只用一个常数(历史均值)。截距 0.31 是月均超额收益(约年化 3.7%),这才是「能预测」的部分,即股权溢价本身。这与有效资本市场理论一致:如果参与者认为某股票下月有正的超额收益,就会现在买入,推高价格,直到预期超额收益为 0。因此用过去的公开信息(至少是这样的回归)预测不了未来超额收益。


15.3 自回归

15.3.1 AR(1)

自回归把 \(Y_t\) 的条件均值写成自身滞后值的线性函数。一阶自回归:

\[Y_t=\beta_0+\beta_1Y_{t-1}+u_t. \tag{15.8}\]

看似 \(Y\) 出现在两边,但右边是滞后值,是不同的变量;构造滞后列作为回归元,直接用 OLS。GDP 增长率(1962:Q1–2017:Q3):

\[\widehat{\text{GDPGR}}_t=\underset{(0.322)}{1.950}+\underset{(0.073)}{0.341}\,\text{GDPGR}_{t-1}. \tag{15.9}\]

一步预测用估计系数代替真实系数:

\[\hat Y_{T+1|T}=\hat\beta_0+\hat\beta_1Y_T. \tag{15.10}\]

2017:Q3 增长 3.11%,预测 2017:Q4 为 \(1.950+0.341\times3.11\approx3.0\%\);实际 2.5%,预测误差 \(-0.5\) 个百分点(两个百分比之差的单位是百分点)。AR(1) 的 \(R^2\) 只有 0.11。

15.3.2 AR(p)

Key Concept 15.4 p 阶自回归

\[Y_t=\beta_0+\beta_1Y_{t-1}+\beta_2Y_{t-2}+\cdots+\beta_pY_{t-p}+u_t,\qquad E(u_t\mid Y_{t-1},Y_{t-2},\dots)=0. \tag{15.12}\]

\(p\) 称为阶数或滞后长度(lag length)。GDP 增长率的 AR(2):

\[\widehat{\text{GDPGR}}_t=\underset{(0.37)}{1.60}+\underset{(0.08)}{0.28}\,\text{GDPGR}_{t-1}+\underset{(0.08)}{0.18}\,\text{GDPGR}_{t-2}. \tag{15.11}\]

第二阶滞后 \(t=2.30\)(\(p=0.02\)),\(\bar R^2\) 从 0.11 升到 0.14。预测 2017:Q4:\(1.60+0.28\times3.11+0.18\times3.01\approx3.0\),误差同样约 \(-0.5\)。

零条件均值假设 \(E(u_t\mid Y_{t-1},\dots)=0\) 有两个含义:

  1. 基于全部历史的最佳预测只依赖最近 \(p\) 个值,神谕预测是 \(Y_{T+1|T}=\beta_0+\beta_1Y_T+\cdots+\beta_pY_{T-p+1}\)(15.13)。
  2. 误差 \(u_t\) 没有序列相关:\(u_{t-1}\) 是 \(Y_{t-1},Y_{t-2},\dots\) 的函数,而 \(u_t\) 对这些变量的条件均值为 0,所以 \(E(u_tu_{t-1})=0\)(原书习题 15.5)。

推导拆解:第 2 点为什么成立。

  1. 由模型,\(u_{t-1}=Y_{t-1}-\beta_0-\beta_1Y_{t-2}-\cdots-\beta_pY_{t-1-p}\),它完全由 \(Y_{t-1},Y_{t-2},\dots\) 决定。所以「知道了 \(Y_{t-1},Y_{t-2},\dots\)」就等于「知道了 \(u_{t-1}\)」。
  2. 迭代期望:\(E(u_tu_{t-1})=E\big[E(u_tu_{t-1}\mid Y_{t-1},Y_{t-2},\dots)\big]\)。外层期望套内层条件期望,结果不变。
  3. 在条件期望里 \(u_{t-1}\) 已知,可以当常数提出来:内层 \(=u_{t-1}\,E(u_t\mid Y_{t-1},\dots)\)。
  4. 由假设 \(E(u_t\mid Y_{t-1},\dots)=0\),内层为 0,所以 \(E(u_tu_{t-1})=0\)。

反过来读:如果拟合 AR(p) 后残差仍有明显自相关,说明阶数不够或模型设定有问题。这就是 CFA 里「用残差自相关检验 AR 模型是否设定正确」的理论依据。

15.3.3 平稳 AR(1) 的性质

原书附录 15.2 证明:\(|\beta_1|<1\) 且 \(u_t\) 平稳时 \(Y_t\) 平稳。设 \(\beta_0=0\),反复代入:

\[Y_t=\beta_1Y_{t-1}+u_t=\beta_1^2Y_{t-2}+\beta_1u_{t-1}+u_t=\cdots=\sum_{i=0}^\infty\beta_1^iu_{t-i}. \tag{15.37}\]

这是 \(Y_t\) 的 MA(∞) 表示。由此 \(E(Y_t)=0\),\(\text{var}(Y_t)=\sigma_u^2/(1-\beta_1^2)\),\(\text{cov}(Y_t,Y_{t-1})=\beta_1\sigma_u^2/(1-\beta_1^2)\),都不依赖 \(t\)。\(\beta_0\neq0\) 时均值为 \(\beta_0/(1-\beta_1)\)。\(|\beta_1|\ge1\) 时无穷和不收敛,序列非平稳。

推导拆解:从 MA(∞) 到方差和协方差。

  1. 方差:\(Y_t=u_t+\beta_1u_{t-1}+\beta_1^2u_{t-2}+\cdots\),各期 \(u\) 互不相关(上一段刚证明),所以和的方差等于方差之和:\(\sigma_u^2(1+\beta_1^2+\beta_1^4+\cdots)\)。这是公比为 \(\beta_1^2\) 的几何级数,\(|\beta_1|<1\) 时收敛到 \(1/(1-\beta_1^2)\)。
  2. 一阶自协方差:\(Y_t=\beta_1Y_{t-1}+u_t\),两边乘 \(Y_{t-1}\) 取期望。\(u_t\) 与过去的 \(Y_{t-1}\) 不相关,所以 \(\text{cov}(Y_t,Y_{t-1})=\beta_1\text{var}(Y_{t-1})\)。同理 \(j\) 阶是 \(\beta_1^j\text{var}(Y)\),自相关 \(\rho_j=\beta_1^j\)。
  3. 均值(\(\beta_0\ne0\)):平稳意味着 \(E(Y_t)=E(Y_{t-1})=\mu\),对模型取期望得 \(\mu=\beta_0+\beta_1\mu\),解出 \(\mu=\beta_0/(1-\beta_1)\)。这就是 CFA 里的「均值回复水平」。

若 \(\beta_1=1\),第 1 步的级数是 \(1+1+1+\cdots\),发散,方差随时间无限增长——这就是随机游走,第 15b 章的主角。

金融直觉:\(\rho_j=\beta_1^j\) 给出均值回复的「半衰期」:偏离缩小一半需要 \(j\) 满足 \(\beta_1^j=0.5\),即 \(j=\ln0.5/\ln\beta_1\)。\(\beta_1=0.7\) 时约 1.9 期,\(\beta_1=0.95\) 时约 13.5 期。配对交易里用 AR(1) 拟合价差、再算半衰期决定持仓周期,就是这个公式。

数值例(原书习题 15.7):\(Y_t=2.5+0.7Y_{t-1}+u_t\),\(\text{var}(u_t)=9\)。均值 \(2.5/0.3\approx8.33\),方差 \(9/(1-0.49)\approx17.6\),一阶、二阶自相关 0.7、0.49——AR(1) 的自相关按 \(\beta_1^j\) 几何衰减。

滞后算子(原书附录 15.3):\(LY_t=Y_{t-1}\),\(L^jY_t=Y_{t-j}\);滞后多项式 \(a(L)=\sum_{j=0}^pa_jL^j\)。AR(p) 可写为 \(a(L)Y_t=\beta_0+u_t\),其中 \(a_0=1\)、\(a_j=-\beta_j\)。AR(p) 平稳的条件是多项式 \(1-\beta_1z-\cdots-\beta_pz^p\) 的根的绝对值都大于 1;AR(1) 的根是 \(1/\beta_1\),条件即 \(|\beta_1|<1\)。

ARMA 模型(原书附录 15.4):把误差写成另一白噪声的移动平均 \(u_t=b(L)e_t\),得 ARMA(p,q):\(a(L)Y_t=\beta_0+b(L)e_t\)。Wold 分解定理说:任何方差有限的平稳序列都可以写成(可能无穷阶的)MA 形式。AR、MA、ARMA 只要阶数足够高同样灵活;小阶 ARMA 有时比低阶 AR 更省参数,但不便加入其他回归元。MA(q) 的自相关在 \(q\) 阶以后截尾为零(原书习题 15.9),这是用 ACF 识别模型阶数的依据。系统讨论见第 06 册第 02a 章。


15.4 加入其他预测变量:ADL 模型

15.4.1 期限利差与 GDP 增长

10 年期国债利率与 3 个月国库券利率之差称为期限利差(term spread)。它通常为正,但在衰退开始前不久收窄甚至变负。在 AR(2) 中加入期限利差的一阶滞后:

\[\widehat{\text{GDPGR}}_t=\underset{(0.47)}{0.94}+\underset{(0.08)}{0.27}\text{GDPGR}_{t-1}+\underset{(0.08)}{0.19}\text{GDPGR}_{t-2}+\underset{(0.18)}{0.42}\text{TSpread}_{t-1}. \tag{15.14}\]

利差系数的 \(t=0.42/0.18\approx2.34\),\(p\approx0.02\),在 5% 水平显著;\(\bar R^2\) 从 0.14 升到 0.16。(注:精读笔记记录原文把 \(t\) 印成 −2.34 并称「1% 显著」,按数值应为 +2.34、5% 显著。)

再加第二阶滞后:

\[\widehat{\text{GDPGR}}_t=\underset{(0.46)}{0.94}+\underset{(0.08)}{0.25}\text{GDPGR}_{t-1}+\underset{(0.08)}{0.18}\text{GDPGR}_{t-2}-\underset{(0.42)}{0.13}\text{TSpread}_{t-1}+\underset{(0.43)}{0.62}\text{TSpread}_{t-2}. \tag{15.15}\]

2017:Q2、Q3 的利差为 1.37、1.21,预测 2017:Q4:

\[0.94+0.25\times3.11+0.18\times3.01-0.13\times1.21+0.62\times1.37\approx2.9, \tag{15.16}\]

预测误差约 \(-0.4\) 个百分点。注意两个利差系数一负一正,单独看没有意义——预测模型的系数不需要解释,重要的是整体预测力。

15.4.2 自回归分布滞后模型

「自回归」指含因变量滞后,「分布滞后」指含另一预测变量的多个滞后。含 \(p\) 个 \(Y\) 滞后、\(q\) 个 \(X\) 滞后的模型记为 ADL(\(p,q\)):(15.14) 是 ADL(2,1),(15.15) 是 ADL(2,2)。

Key Concept 15.5 ADL 模型(autoregressive distributed lag model)

\[Y_t=\beta_0+\beta_1Y_{t-1}+\cdots+\beta_pY_{t-p}+\delta_1X_{t-1}+\cdots+\delta_qX_{t-q}+u_t, \tag{15.17}\]
\[E(u_t\mid Y_{t-1},Y_{t-2},\dots,X_{t-1},X_{t-2},\dots)=0.\]

这个条件意味着 \(Y\) 和 \(X\) 更远的滞后都不属于模型,\(p\)、\(q\) 是真实滞后长度。

15.4.3 多预测变量预测的最小二乘假设

一般模型含 \(k\) 个附加预测变量,第 \(j\) 个有 \(q_j\) 个滞后(式 15.18)。

Key Concept 15.6 时间序列预测回归的最小二乘假设

  1. \(E(u_t\mid Y_{t-1},Y_{t-2},\dots,X_{1,t-1},X_{1,t-2},\dots,X_{k,t-1},X_{k,t-2},\dots)=0\);
  2. (a) \((Y_t,X_{1t},\dots,X_{kt})\) 的分布平稳;(b) \((Y_t,X_{1t},\dots,X_{kt})\) 与 \((Y_{t-j},X_{1,t-j},\dots,X_{k,t-j})\) 随 \(j\) 增大趋于独立;
  3. 不太可能出现大异常值:各变量有非零有限四阶矩;
  4. 无完全多重共线。

这是截面预测四条假设(附录 6.4)的时间序列版:

  • 假设 1 意味着回归函数就是用全部历史的神谕预测。
  • 假设 2(a) 平稳性替代「同分布」,并且承担了外部有效性的角色:估计期的条件均值也是预测期的条件均值。
  • 假设 2(b) 称为弱相依(weak dependence),替代「观测间独立」,保证大样本下大数定律和中心极限定理成立。

在这些假设下,OLS 系数的推断(t 检验、F 检验、置信区间)与截面数据完全一样,使用异方差稳健标准误。

白话解释:为什么这里不需要第 16 章那种 HAC(异方差–自相关稳健)标准误?因为假设 1 是对全部历史取条件,模型已经把可预测的动态都放进了回归元,误差 \(u_t\) 不再自相关(上面的推导)。只要误差无自相关,普通的异方差稳健标准误就够了。反过来,如果你只放了 \(X\) 的滞后、漏掉了 \(Y\) 的滞后,误差就会自相关,标准误就不对了。

「弱相依」的直观:今天的数据和很久以前的数据几乎无关。这保证了一条足够长的时间序列能起到「很多独立样本」的作用,大数定律才能生效。随机游走不满足它——今天的价格与 10 年前的价格始终高度相关。

15.4.4 Granger 因果检验

一个自然的问题是:在已经用了 \(Y\) 自身滞后的前提下,\(X\) 的滞后还有没有增量预测力?在 ADL 模型中检验 \(X\) 的所有滞后系数同时为零:

\[H_0:\delta_1=\delta_2=\cdots=\delta_q=0,\]

用(稳健)F 统计量。若拒绝,称 \(X\) Granger 因果(Granger-causes)\(Y\)(Granger 1969)。原书在第 17 章向量自回归(VAR)部分正式讨论这一检验(本册第 17a 章),第 15 章的习题 15.4 已经用到了它:美国工业生产增长的 AR(4) 中加入 3 个月国库券利率变化的 4 个滞后,联合 F \(=3.91\),说明利率变化有助于预测工业生产;反方向的 F \(=1.48\),不显著。

名字有误导性。 Granger 因果是预测意义上的概念:\(X\) 的过去包含 \(Y\) 自身过去之外的、关于 \(Y\) 未来的信息。它不是第 13、16 章意义上的因果效应。经典反例是第 16 章的橙汁期货:期货价格的上涨能预测当晚奥兰多的寒冷天气(Roll 1984),价格 Granger 因果天气,但交易员显然不能让气温下降。期限利差 Granger 因果 GDP 增长,也只说明利差包含了市场对未来经济的预期。


15.5 MSFE 的估计与预测区间

15.5.1 三种估计

平稳时,AR(p) 的 MSFE 为

\[\text{MSFE}=\sigma_u^2+\text{var}(\hat\beta_0+\hat\beta_1Y_T+\cdots+\hat\beta_pY_{T-p+1}). \tag{15.19}\]

第一项是未来误差的方差(神谕预测的 MSFE),第二项来自系数估计(原书习题 15.12 对 AR(1) 给出分解 \(Y_{T+1}-\hat Y_{T+1|T}=u_{T+1}-[(\hat\beta_0-\beta_0)+(\hat\beta_1-\beta_1)Y_T]\))。

方法 1:回归标准误。OLS 方差与 \(1/T\) 成比例,\(T\) 相对 \(p\) 大时第二项可忽略:

\[\widehat{\text{MSFE}}_{SER}=s_{\hat u}^2=\frac{SSR}{T-p-1}. \tag{15.20}\]

方法 2:最终预测误差(final prediction error, FPE)。同方差下第二项约为 \(\sigma_u^2(p+1)/T\),于是 \(\text{MSFE}\approx\sigma_u^2(1+\frac{p+1}T)\):

\[\widehat{\text{MSFE}}_{FPE}=\Big(\frac{T+p+1}{T}\Big)s_{\hat u}^2=\Big(\frac{T+p+1}{T-p-1}\Big)\frac{SSR}{T}. \tag{15.21}\]

这与第 14 章的 \((1+k/n)\) 是同一回事。

推导拆解:(15.21) 的两种写法为何相等。

  1. 从 \(\text{MSFE}\approx\sigma_u^2(1+\frac{p+1}T)=\sigma_u^2\frac{T+p+1}T\) 出发,用 \(s_{\hat u}^2\) 估计 \(\sigma_u^2\),得第一种写法。这里 \(p+1\) 是系数个数(\(p\) 个滞后加截距),对应第 14 章的 \(k\)。
  2. 代入 \(s_{\hat u}^2=SSR/(T-p-1)\):\(\frac{T+p+1}T\cdot\frac{SSR}{T-p-1}=\frac{T+p+1}{T-p-1}\cdot\frac{SSR}T\),得第二种写法。

两个调整方向相同:分母 \(T-p-1\) 修正「样本内残差偏小」(OLS 用掉了 \(p+1\) 个自由度),分子 \(T+p+1\) 再加上「样本外还要承担系数估计误差」。所以 FPE 总比 SER 大。

方法 3:伪样本外预测(pseudo out-of-sample forecasting, POOS)。

Key Concept 15.7 伪样本外预测

  1. 选择保留样本的观测数 \(P\)(例如样本量的 10% 或 20%),令 \(s=T-P\);
  2. 用 \(t=1,\dots,s\) 的数据估计预测回归;
  3. 计算 \(s+1\) 期的预测 \(\tilde Y_{s+1|s}\);
  4. 计算预测误差 \(\tilde u_{s+1}=Y_{s+1}-\tilde Y_{s+1|s}\);
  5. 对 \(s=T-P+1,\dots,T-1\) 重复 2–4,每期都重新估计。
\[\widehat{\text{MSFE}}_{POOS}=\frac1P\sum_{s=T-P+1}^T\tilde u_s^2. \tag{15.22}\]

「样本外」是因为被预测的观测没有用于估计;「伪」是因为保留数据并不是真正的未来。它是第 14 章交叉验证在时间序列上的对应:时间只能单向流动,训练集永远在测试点之前。

金融直觉:KC 15.7 就是标准的扩展窗口走步回测。设 \(T=200\) 个月,\(P=40\):先用前 160 个月估计,预测第 161 个月;再用前 161 个月估计,预测第 162 个月……一共得到 40 个「当时真能做出」的预测误差。关键约束是:第 \(s+1\) 期的预测只能用截至 \(s\) 期的数据,包括模型选择(滞后阶数、变量取舍)也只能用当时可得的数据。如果你先用全样本 BIC 选了阶数,再做 POOS,阶数选择本身就偷看了保留期,这是回测中常见的隐性前视偏差。

三种方法的比较:前两种建立在平稳假设推出的 (15.19) 上;POOS 不依赖平稳性,估计期与保留期的条件均值可以不同,系数可以变化,预测误差可以不是零均值,所以能捕捉系数变化造成的预测偏差。代价是计算更多;若 \(Y\) 确实平稳,只用 \(P\) 个误差估计,抽样变异较大;还要选 \(P\)(系数估计精度与 MSFE 估计所用观测数的权衡,实践中取 10%–20%)。

GDP 应用:

模型 RMSFE\(_{SER}\) RMSFE\(_{FPE}\) RMSFE\(_{POOS}\)(最后 44 季,约 20%)
AR(1) 3.05 3.07 2.60
AR(2) 3.01 3.03 2.52

FPE 略大于 SER,因为加入了系数估计方差。POOS 反而更小,部分反映 1980 年代初以后 GDP 增长波动下降的「大缓和」(Great Moderation)——保留期与估计期并不同分布,这正是 POOS 能发现而前两种方法发现不了的。

15.5.2 预测区间与扇形图

预测区间(forecast interval)是以给定概率包含变量未来值的区间。它与置信区间有本质区别:置信区间(估计 ±1.96 SE)由中心极限定理支撑,对误差分布要求很宽;预测误差包含未来的 \(u_{T+1}\),它不是平均值,中心极限定理帮不上忙,必须对其分布做假设或进行估计。

实践中假设 \(u_{T+1}\) 正态。平稳下预测误差 = \(u_{T+1}\) + 系数估计误差项,后者大样本下近似正态且与 \(u_{T+1}\) 不相关,因此预测误差近似正态,方差为 MSFE。95% 预测区间为

\[\hat Y_{T+1|T}\pm1.96\,\widehat{\text{RMSFE}},\]

RMSFE 用 FPE 或 POOS 版本(它们包含了估计误差)。「预测 ± 1 个 RMSFE」约为 68% 预测区间。若误差有条件异方差,应根据最近的数据估计当前的 \(\sigma_u^2\)(第 17c 章)。

扇形图(fan chart)把多个预测区间叠加,沿预测期连接起来,描绘未来值的整个分布。英格兰银行发布的通胀预测扇形图被媒体称为「血河」(The River of Blood):2017 年 2 月的扇形图预计通胀从低于 2% 目标升至 2018Q1 的 2.7%,实际升到 3.0%,落在区间内但高于中心预测。

金融收益厚尾,正态预测区间会低估尾部风险。本章代码第 1 部分用 \(t_5\) 分布模拟月收益,就是这种情形。


15.6 用信息准则选择滞后长度

滞后太少会遗漏有用信息,太多会增加估计误差(MSFE 第二项)。

逐步 F 检验法:从 AR(6) 开始,最后一阶在 5% 水平不显著就删掉,依次向下。缺点是倾向于选出过大的模型:即使真实阶数是 5,第 6 阶系数为零的检验也有 5% 概率错误拒绝。

贝叶斯信息准则(Bayes information criterion, BIC,又称 Schwarz 信息准则 SIC):

\[\text{BIC}(p)=\ln\Big[\frac{SSR(p)}T\Big]+(p+1)\frac{\ln T}T. \tag{15.23}\]

\(\hat p\) 取使 BIC 最小的 \(p\in\{0,1,\dots,p_{max}\}\)(\(p=0\) 只含截距)。第一项随滞后增加而下降,第二项是参数个数乘 \(\ln T/T\),随滞后增加而上升。BIC 精确地规定了 \(R^2\) 要增加多少才值得多加一阶滞后。

表 15.3(GDP 增长 AR,\(T=223\),\(p_{max}=6\))

\(p\) SSR(p)/T ln[SSR(p)/T] (p+1)ln T/T BIC(p) \(R^2\)
0 10.477 2.349 0.024 2.373 0.000
1 9.247 2.224 0.048 2.273 0.117
2 8.954 2.192 0.073 2.265 0.145
3 8.954 2.192 0.097 2.289 0.145
4 8.920 2.188 0.121 2.310 0.149
5 8.788 2.173 0.145 2.319 0.161
6 8.779 2.172 0.170 2.342 0.162

BIC 在 \(p=2\) 最小。\(R^2\) 随 \(p\) 单调上升,所以不能用 \(R^2\) 选阶。

白话解释:BIC 是「拟合好坏」加「复杂度罚款」。第一项 \(\ln(SSR/T)\) 是对数残差方差,加一阶滞后能让它下降多少?看表:从 \(p=1\) 到 \(p=2\) 下降 \(2.224-2.192=0.032\),大于罚款增量 \(\ln T/T=5.41/223\approx0.024\),划算;从 \(p=2\) 到 \(p=3\) 下降 0,罚款照收,不划算。

换成更熟悉的语言:加一个参数需要让残差方差下降大约 \(\ln T/T\) 的比例才值得(因为 \(\ln(1-x)\approx-x\))。\(T=223\) 时约 2.4%。对比调整 \(R^2\):它的门槛低得多(约 \(1/T\)),所以调整 \(R^2\) 选出的模型通常比 BIC 大。

赤池信息准则(Akaike information criterion, AIC):

\[\text{AIC}(p)=\ln\Big[\frac{SSR(p)}T\Big]+(p+1)\frac2T. \tag{15.24}\]

\(T=223\) 时 \(\ln T=5.41\),BIC 的惩罚是 AIC 的两倍多。AIC 的动机:\(\ln\widehat{\text{MSFE}}_{FPE}=\ln\frac{SSR}T+\ln\frac{1+(p+1)/T}{1-(p+1)/T}\approx\ln\frac{SSR}T+\frac{2(p+1)}T\),所以大样本下最小化 AIC 等价于最小化 FPE 估计的 MSFE。

一致性(原书附录 15.5)。设真实阶数为 1,在 0、1、2 中选:

  • 选 0 的概率:\(\text{BIC}(0)-\text{BIC}(1)\xrightarrow{p}\ln\sigma_Y^2-\ln\sigma_u^2>0\),所以 \(\Pr(\hat p=0)\to0\)。欠拟合损失的 SSR 是固定量,而惩罚差 \(\ln T/T\to0\)。AIC 同样成立。
  • 选 2 的概率:\(T[\text{BIC}(2)-\text{BIC}(1)]=-T\ln[1+F/(T-2)]+\ln T\approx-F+\ln T\),\(F\) 是检验第二阶系数为零的 F 统计量(同方差下渐近 \(\chi^2_1\))。所以 \(\Pr(\hat p=2)\approx\Pr(F>\ln T)\to0\)。对 AIC,\(\ln T\) 换成 2,\(\Pr(\chi^2_1>2)\approx0.16\),即大样本下 AIC 仍有约 16% 的概率多选一阶。

推导拆解:「选 2 的概率」那一行的关键步骤。

  1. \(\text{BIC}(2)-\text{BIC}(1)=\ln\frac{SSR(2)}{SSR(1)}+\frac{\ln T}T\)。
  2. 检验第二阶系数为零的(同方差)F 统计量满足 \(F=\frac{SSR(1)-SSR(2)}{SSR(2)/(T-2)}\),整理得 \(\frac{SSR(1)}{SSR(2)}=1+\frac F{T-2}\),所以第一项 \(=-\ln(1+\frac F{T-2})\)。(\(T-2\) 是近似写法,大样本下分母自由度的细节不影响结论。)
  3. 乘以 \(T\):\(T[\text{BIC}(2)-\text{BIC}(1)]=-T\ln(1+\frac F{T-2})+\ln T\)。用 \(\ln(1+x)\approx x\),第一项约为 \(-F\)。
  4. BIC 选 2 当且仅当这个差为负,即 \(F>\ln T\)。真值为 1 时 \(F\) 近似 \(\chi^2_1\),是个有界的随机量;而 \(\ln T\to\infty\),所以 \(\Pr(F>\ln T)\to0\)。
  5. AIC 的罚款是 \(2/T\),同样步骤得到「选 2 当且仅当 \(F>2\)」,门槛不随 \(T\) 增长,概率停在 \(\Pr(\chi^2_1>2)\approx0.157\)。

一句话:BIC 的门槛随样本量缓慢升高,最终能挡住所有多余的滞后;AIC 的门槛固定,总有约 16% 的漏网之鱼。

结论:BIC 一致,AIC 不一致、倾向高估阶数。两者都广泛使用;担心 BIC 选得太少时,AIC 是合理替代(第 15b 章会看到 ADF 检验建议用 AIC 选滞后)。BIC、AIC 与第 14 章的岭、Lasso 处理的是同一个问题——限制估计参数的个数。区别在于滞后有天然顺序(近的滞后通常更有用),信息准则利用了这一顺序;截面预测变量没有顺序。

两个实现要点:

  1. 所有候选模型必须在同一样本上估计。表 15.3 所有回归都用 1962:Q1–2017:Q3 的 223 个观测,更早的数据只作为初始滞后值。若 AR(6) 少用了 5 个观测,SSR 就不可比。
  2. 多预测变量时,所有组合的数量太大,常用捷径是令所有变量的滞后数相同(\(p=q_1=\cdots=q_k\)),只比较 \(p_{max}+1\) 个模型。含 \(K\) 个系数(含截距)的模型 \(\text{BIC}(K)=\ln[SSR(K)/T]+K\ln T/T\)(15.25)。对 GDP 与期限利差,用此法选出 (15.15) 的 ADL(2,2)。

流程回顾:一个时间序列预测项目的步骤

把本章内容串起来,一个时间序列预测项目的流程是:

  1. 变换数据(对数差分、年化),画图,看自相关;判断是否平稳(第 15b 章的单位根与突变检验)。
  2. 用 BIC/AIC 在同一样本上选 AR 阶数;考虑加入其他预测变量的滞后,用 F 检验(Granger 因果)检查增量预测力,用信息准则定阶。
  3. 估计模型,检查系数与稳健标准误。
  4. 用伪样本外预测评估:与基准(历史均值、随机游走、AR)比较 RMSFE,看预测误差均值是否为零,看保留期是否明显恶化。
  5. 报告点预测和预测区间(或扇形图)。

量化实战

本章方法在量化里的位置

收益可预测性检验。 「你能战胜市场吗」专栏的 AR 回归是检验时间序列动量/反转的标准起点:对指数、行业或个股收益做 AR(p),看滞后项的联合 F。实务中要记住两点。第一,\(\bar R^2\) 很小的预测也可能有经济价值:月度 \(R^2\) 为 1% 的择时信号,按 Campbell–Thompson (2008) 的计算可以带来可观的夏普比率提升,评价时要结合交易成本和换手。第二,统计检验要用稳健标准误,并警惕多重检验(第 07 章)。

择时信号与 Granger 检验。 期限利差、信用利差、估值比率(股息率、市盈率)、波动率指数等预测变量是否在自身滞后之外有增量信息,就是 ADL 中的 Granger F 检验。很多这类预测变量高度持续(接近单位根),会使小样本下的系数估计有偏、t 检验失真(Stambaugh 偏差),推断要格外小心(第 15b、16 章)。

伪样本外预测就是走步回测。 KC 15.7 的扩展窗口、每期重估,正是走步回测(walk-forward backtest)的原型;把「扩展窗口」换成「滚动窗口」可以更快适应结构变化。评价收益预测时常用的样本外 \(R^2\) 是

\[R^2_{OS}=1-\frac{\sum_s(Y_s-\tilde Y_{s|s-1})^2}{\sum_s(Y_s-\bar Y_{1:s-1})^2},\]

分母是「用截至上一期的历史均值预测」的误差平方和。Goyal–Welch (2008) 发现,大量在样本内显著的股权溢价预测变量,其 \(R^2_{OS}\) 为负——样本内拟合好不等于样本外有用,这正是本章三种 MSFE 估计的差别所在。

信息准则与过拟合。 用 BIC/AIC 选择 AR 阶数、信号回看窗口个数,比逐个 t 检验更不容易过拟合。高频数据样本大,AIC 与 BIC 的差别更明显(\(\ln T\) 很大),BIC 选出的模型更简洁。

预测区间与风险。 收益厚尾、波动聚集,「点预测 ± 1.96 RMSFE」的常数宽度区间在平静期太宽、在危机期太窄。风险管理中的 VaR 应基于条件波动率模型(第 17c 章、第 06 册第 07a 章)。

示例:收益 AR 检验、ADL 与 Granger 检验、信息准则、三种 MSFE 与伪样本外预测

第 1 部分模拟 516 个月的厚尾超额收益(无自相关),重做表 15.2 的检验。第 2–3 部分模拟一个季度宏观系统:持续性强的利差 \(X\) 与增长率 \(Y\),真实模型为 \(Y_t=0.8+0.25Y_{t-1}+0.15Y_{t-2}+0.8X_{t-1}+u_t\)。

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

rng = np.random.default_rng(15)

def lagmat(s, lags, name):
    return pd.concat({f"{name}_l{j}": s.shift(j) for j in lags}, axis=1)

# ---- 1. “你能战胜市场吗?”:月度超额收益的 AR(p) ----
T = 516
r = pd.Series(0.5 + 4.5*rng.standard_t(5, T)/np.sqrt(5/3))   # 厚尾、无自相关的月超额收益(%)
print("样本自相关 rho_1..rho_4:", np.round([r.autocorr(j) for j in range(1, 5)], 3))
for p in [1, 2, 4]:
    d = pd.concat([r.rename("r"), lagmat(r, range(1, p+1), "r")], axis=1).iloc[4:]  # 统一样本
    m = sm.OLS(d["r"], sm.add_constant(d.iloc[:, 1:])).fit(cov_type="HC1")
    ftest = m.f_test(np.eye(p+1)[1:])
    print(f"AR({p}): 滞后1系数 {m.params.iloc[1]:.3f} ({m.bse.iloc[1]:.3f}),"
          f" 滞后项联合F = {float(ftest.fvalue):.2f} (p={float(ftest.pvalue):.2f}),"
          f" adj R2 = {m.rsquared_adj:.4f}")

# ---- 2. 宏观序列:增长率 Y 与利差 X,ADL 与 Granger 因果检验 ----
T = 320
x = np.zeros(T); y = np.zeros(T)
for t in range(2, T):
    x[t] = 0.3 + 0.85*x[t-1] + rng.normal(0, 0.6)                    # 利差:持续性强
    y[t] = 0.8 + 0.25*y[t-1] + 0.15*y[t-2] + 0.8*x[t-1] + rng.normal(0, 2.0)
df = pd.DataFrame({"y": y, "x": x}).iloc[20:].reset_index(drop=True)  # 去掉初值影响

# 信息准则选 AR 阶数:所有候选模型用同一样本(前 pmax 个观测只作初始滞后)
pmax = 6
Yfull = df["y"]; base = Yfull.iloc[pmax:]
Tn = len(base)
print("\n p   SSR/T    BIC     AIC")
for p in range(pmax+1):
    X = sm.add_constant(lagmat(Yfull, range(1, p+1), "y").iloc[pmax:]) if p else np.ones((Tn, 1))
    ssr = sm.OLS(base, X).fit().ssr
    bic = np.log(ssr/Tn) + (p+1)*np.log(Tn)/Tn
    aic = np.log(ssr/Tn) + (p+1)*2/Tn
    print(f" {p}  {ssr/Tn:7.3f}  {bic:.4f}  {aic:.4f}")

# ADL(2,2) 与 Granger 因果:X 的两阶滞后系数全为零?
d = pd.concat([df["y"], lagmat(df["y"], [1, 2], "y"), lagmat(df["x"], [1, 2], "x")], axis=1).dropna()
adl = sm.OLS(d["y"], sm.add_constant(d.drop(columns="y"))).fit(cov_type="HC1")
g1 = adl.f_test("x_l1 = 0, x_l2 = 0")
d2 = pd.concat([df["x"], lagmat(df["x"], [1, 2], "x"), lagmat(df["y"], [1, 2], "y")], axis=1).dropna()
rev = sm.OLS(d2["x"], sm.add_constant(d2.drop(columns="x"))).fit(cov_type="HC1")
g2 = rev.f_test("y_l1 = 0, y_l2 = 0")
print(f"\nADL(2,2) 系数: {np.round(adl.params.values, 3)}")
print(f"Granger: X→Y  F = {float(g1.fvalue):.2f} (p={float(g1.pvalue):.4f});"
      f"  Y→X  F = {float(g2.fvalue):.2f} (p={float(g2.pvalue):.2f})")

# ---- 3. MSFE 的三种估计 + 伪样本外预测(扩展窗口,每期重估)----
def design(dd, use_x):
    cols = [lagmat(dd["y"], [1, 2], "y")]
    if use_x: cols.append(lagmat(dd["x"], [1, 2], "x"))
    return pd.concat([dd["y"]] + cols, axis=1).dropna()
P = int(0.2*len(df)); s0 = len(df) - P
for name, use_x in [("AR(2)", False), ("ADL(2,2)", True)]:
    D = design(df, use_x)
    k = D.shape[1] - 1
    est = D.loc[:s0-1]
    fit = sm.OLS(est["y"], sm.add_constant(est.iloc[:, 1:])).fit()
    Te = len(est); ssr = fit.ssr
    rmsfe_ser = np.sqrt(ssr/(Te-k-1))
    rmsfe_fpe = np.sqrt((Te+k+1)/(Te-k-1)*ssr/Te)
    err, cover = [], []
    for s in range(s0, len(df)):
        tr = D.loc[:s-1]
        f = sm.OLS(tr["y"], sm.add_constant(tr.iloc[:, 1:])).fit()
        xnew = np.r_[1.0, D.loc[s].iloc[1:].values]
        yhat = xnew @ f.params.values
        e = D.loc[s, "y"] - yhat; err.append(e)
        cover.append(abs(e) <= 1.96*np.sqrt((len(tr)+k+1)/(len(tr)-k-1)*f.ssr/len(tr)))
    err = np.array(err)
    print(f"{name:9s} RMSFE: SER {rmsfe_ser:.3f}  FPE {rmsfe_fpe:.3f}  POOS {np.sqrt(np.mean(err**2)):.3f}"
          f"  | POOS 误差均值 {err.mean():+.3f}  95%区间覆盖率 {np.mean(cover):.1%}")
# 基准:历史均值预测
hm = [df["y"].iloc[s] - df["y"].iloc[:s].mean() for s in range(s0, len(df))]
print(f"历史均值   RMSFE: POOS {np.sqrt(np.mean(np.square(hm))):.3f}")

关键输出:

样本自相关 rho_1..rho_4: [ 0.004 -0.038 -0.054 -0.006]
AR(1): 滞后1系数 0.005 (0.039), 滞后项联合F = 0.02 (p=0.90), adj R2 = -0.0019
AR(2): 滞后1系数 0.005 (0.039), 滞后项联合F = 0.41 (p=0.66), adj R2 = -0.0023
AR(4): 滞后1系数 0.003 (0.039), 滞后项联合F = 0.51 (p=0.73), adj R2 = -0.0038

 p   SSR/T    BIC     AIC
 0    6.356  1.8688  1.8563
 1    4.677  1.5813  1.5563
 2    4.543  1.5716  1.5340
 3    4.539  1.5900  1.5399
 4    4.537  1.6089  1.5462
 5    4.529  1.6264  1.5513
 6    4.523  1.6446  1.5569

ADL(2,2) 系数: [ 0.882  0.325  0.112  0.864 -0.174]
Granger: X→Y  F = 20.73 (p=0.0000);  Y→X  F = 0.86 (p=0.42)
AR(2)     RMSFE: SER 2.101  FPE 2.114  POOS 2.295  | POOS 误差均值 -0.211  95%区间覆盖率 93.3%
ADL(2,2)  RMSFE: SER 1.999  FPE 2.020  POOS 2.070  | POOS 误差均值 -0.060  95%区间覆盖率 95.0%
历史均值   RMSFE: POOS 2.702

读结果:

  • 第 1 部分与表 15.2 的结论一致:无自相关的收益序列,AR 模型的滞后项不显著,\(\bar R^2\) 为负。
  • 信息准则:SSR 随 \(p\) 单调下降,BIC 和 AIC 都在 \(p=2\) 处最小。从 \(p=0\) 到 1 的 SSR 下降很大,之后下降很少,不值得付出惩罚。
  • Granger 检验:\(X\) 的滞后对 \(Y\) 有极显著的增量预测力(F = 20.7),反方向不显著,与数据生成过程一致。ADL 中 \(X_{t-1}\) 的系数 0.864 接近真值 0.8,\(X_{t-2}\) 的系数估计为 −0.174(真值 0),这提醒我们单个滞后系数的估计噪声不小。
  • 三种 MSFE:FPE 比 SER 稍大;POOS 是在最后 20%(60 期)上的真实一步预测误差,数据平稳时它与 FPE 接近,但抽样变异更大。ADL 的 POOS RMSFE(2.070)低于 AR(2)(2.295)和历史均值(2.702),\(X\) 的预测价值在样本外得到确认。用 FPE 构造的 95% 预测区间,实际覆盖率为 93%–95%。

本章小结

时间序列预测的基本工具是滞后、差分、对数差分(近似增长率)和自相关。用历史预测未来的前提是平稳性:联合分布不随时间变化,它在时间序列中扮演「同分布」与外部有效性的角色,弱相依替代独立性。预测精度用 MSFE/RMSFE 衡量,神谕预测是条件均值。AR(p) 用自身 \(p\) 个滞后预测,ADL(p,q) 再加入另一个变量的 \(q\) 个滞后,都用 OLS 估计;在 KC 15.6 的四条假设下推断与截面数据相同。检验另一个变量全部滞后系数为零的 F 检验就是 Granger 因果检验,它衡量增量预测力而非因果效应。MSFE 有三种估计:回归标准误、FPE(多乘 \((T+p+1)/T\))和伪样本外预测;前两者依赖平稳,POOS 不依赖,能发现系数变化。正态误差下 95% 预测区间为「预测 ± 1.96 RMSFE」。滞后阶数用 BIC(一致)或 AIC(倾向高估,但等价于最小化 FPE)选择,所有候选模型必须用同一样本。

概念 公式 / 要点
年化增长率 季度 \(400\Delta\ln Y_t\),月度 \(1200\Delta\ln Y_t\)
样本自相关 \(\hat\rho_j=\widehat{\text{cov}}(Y_t,Y_{t-j})/\widehat{\text{var}}(Y_t)\)
平稳性 \((Y_{s+1},\dots,Y_{s+T})\) 的联合分布与 \(s\) 无关
MSFE \(E[(Y_{T+1}-\hat Y_{T+1\vert T})^2]\);神谕预测 \(E(Y_{T+1}\mid\text{历史})\)
AR(p) \(Y_t=\beta_0+\sum_{j=1}^p\beta_jY_{t-j}+u_t\),\(E(u_t\mid Y_{t-1},\dots)=0\)
平稳 AR(1) \(\vert \beta_1\vert <1\);均值 \(\beta_0/(1-\beta_1)\),方差 \(\sigma_u^2/(1-\beta_1^2)\),\(\rho_j=\beta_1^j\)
ADL(p,q) 再加 \(\delta_1X_{t-1}+\cdots+\delta_qX_{t-q}\)
Granger 因果 ADL 中 \(H_0:\delta_1=\cdots=\delta_q=0\) 的 F 检验
MSFE 估计 SER:\(SSR/(T-p-1)\);FPE:\(\frac{T+p+1}{T-p-1}\frac{SSR}T\);POOS:\(\frac1P\sum\tilde u_s^2\)
预测区间 \(\hat Y_{T+1\vert T}\pm1.96\,\text{RMSFE}\)(正态误差)
BIC / AIC \(\ln\frac{SSR(p)}T+(p+1)\frac{\ln T}T\) / \(+(p+1)\frac2T\);BIC 一致,AIC 渐近约 16% 多选一阶

练习

基础

  1. (原书习题 15.1)平稳 AR(1) \(Y_t=\beta_0+\beta_1Y_{t-1}+u_t\),证明 \(E(Y_t)=\beta_0/(1-\beta_1)\)。 提示:平稳推出 \(E(Y_t)=E(Y_{t-1})\),两边取期望解方程。
  2. (原书习题 15.7)\(Y_t=2.5+0.7Y_{t-1}+u_t\),\(\text{var}(u_t)=9\)。求均值、方差、一阶与二阶自协方差和自相关;若 \(Y_T=102.3\),求 \(Y_{T+1}\) 的预测。 答案要点:均值 8.33,方差 17.6,自协方差 \(0.7\times17.6=12.4\)、\(0.49\times17.6=8.6\),自相关 0.7、0.49;预测 \(2.5+0.7\times102.3=74.1\)。(注意 102.3 远离均值,这样的观测在该模型下极罕见。)
  3. (原书习题 15.2 改编)\(Y_t=1200\ln(IP_t/IP_{t-1})\)。(a) 解释 1200 的含义。(b) AR(0)–AR(6) 的 SSR 分别为 21,045、20,043、18,870、17,838、17,344、17,337、17,306,估计样本为 1986:M1–2017:M12(\(T=384\)),用 BIC 和 AIC 选阶。 答案要点:(a) 月度百分比变化的年化(12 × 100)。(b) \(\ln T/T\approx0.0155\):BIC 依次约 4.019、3.986、3.941、3.900、3.888、3.903、3.917,选 \(p=4\);AIC 惩罚 \(2/T\approx0.0052\),依次约 4.009、3.965、3.910、3.859、3.836、3.841、3.845,也选 \(p=4\)。
  4. 解释为什么比较 AR(1) 与 AR(6) 的 BIC 时,两个回归必须使用同一样本期。 答案要点:SSR 是对样本求和,观测数不同则 SSR 不可比;较长滞后的模型会少用前几个观测。
  5. 一个分析师声称他的新模型能比随机游走更好地预测对数股价(原书复习题 15.2)。你会如何检验? 提示:在同一保留期上做伪样本外预测,比较两个模型的 RMSFE,并检查误差均值。

进阶

  1. (原书习题 15.5)证明 (a) \(E[(W-c)^2]=\sigma_W^2+(\mu_W-c)^2\),因此条件均值使条件 MSFE 最小;(b) AR(p) 的误差 \(u_t\) 无序列相关。 提示:(b) 用迭代期望:\(E(u_tu_{t-j})=E[u_{t-j}E(u_t\mid Y_{t-1},\dots)]=0\)。
  2. (原书习题 15.12)对 AR(1),写出预测误差的分解,并证明 MSFE \(=\sigma_u^2+\text{var}[(\hat\beta_0-\beta_0)+(\hat\beta_1-\beta_1)Y_T]\)(假设 \(u_{T+1}\) 与估计量独立)。
  3. (原书习题 15.9)MA(q) 模型 \(Y_t=\beta_0+e_t+b_1e_{t-1}+\cdots+b_qe_{t-q}\),\(e_t\) 为 i.i.d.。求均值、方差,证明 \(j>q\) 时 \(\rho_j=0\);求 MA(1) 的一阶自相关。 答案要点:均值 \(\beta_0\),方差 \(\sigma_e^2(1+b_1^2+\cdots+b_q^2)\);MA(1) \(\rho_1=b_1/(1+b_1^2)\)。
  4. (原书习题 15.11)证明:若 \(\Delta Y_t\) 是 AR(1),\(\Delta Y_t=b_1\Delta Y_{t-1}+u_t\),则 \(Y_t\) 是 AR(2),系数为 \(1+b_1\) 与 \(-b_1\)。这两个系数之和是多少?这意味着什么? 答案要点:和为 1,AR 多项式在 \(z=1\) 处为零,即有单位根(见第 15b 章)。
  5. 修改本章代码第 3 部分:(a) 把扩展窗口改为长度 120 的滚动窗口;(b) 计算 ADL 相对历史均值的 \(R^2_{OS}\);(c) 把 \(X_{t-1}\) 的真实系数改为 0.2,看 ADL 是否仍能在样本外胜过 AR(2)。 提示:真实信号很弱时,多估计两个系数的方差代价可能超过收益,样本外 RMSFE 反而变大——这正是 (15.19) 第二项的含义。

原书推荐习题:15.2、15.3(完整的 AR 预测、季节滞后检验、QLR、BIC/AIC 与 ADF 实操);15.4(Granger 意义上的增量预测力);15.5(条件均值是最优预测、AR 误差无序列相关);15.7、15.13 与附录 15.2(平稳 AR(1) 与随机游走的矩);15.9(MA(q) 自相关截尾);15.12(MSFE 公式 (15.19));实证题 E15.2(用 1932–2002 数据重做「能否战胜市场」,并做 1983–2002 伪样本外预测——可直接扩展为 A 股指数收益的可预测性检验)。


原书对照

本章内容 原书章节 PDF 页码
章引言 第 15 章开篇 p.555–556
时间序列数据、滞后、增长率、自相关(KC 15.1–15.2,表 15.1) 15.1 p.556–561
平稳性、预测误差、MSFE(KC 15.3);「你能战胜市场吗」专栏(表 15.2) 15.2 p.561–566
自回归 AR(1)、AR(p)(KC 15.4) 15.3 p.566–569
期限利差、ADL 模型、最小二乘假设(KC 15.5–15.6) 15.4 p.568–573
MSFE 的三种估计、伪样本外预测(KC 15.7)、预测区间、扇形图 15.5 p.573–578
信息准则定阶(表 15.3) 15.6 p.578–582
复习题、习题与实证题 第 15 章末 p.599–605
AR(1) 平稳性、滞后算子、ARMA、BIC 一致性 附录 15.2–15.5 p.606–609
Granger 因果检验的正式讨论 第 17 章(VAR) 见本册第 17a 章

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