第 17a 章 向量自回归与多期预测
学习目标
读完本章,你应当能够:
- 写出两变量 VAR(\(p\)) 的方程组,知道它就是「每个方程都放入全部变量的滞后、逐个方程做 OLS」,并能用系统 BIC/AIC 选择滞后阶数。
- 解释 VAR 的参数为什么随变量数快速膨胀,以及这对样本外预测意味着什么。
- 在 VAR 中做 Granger 式的可预测性检验(跨方程、多系数的 F 检验),正确理解「Granger 因果」只是增量预测力。
- 用迭代法和直接法做 \(h\) 步预测,写出 Key Concept 17.2 与 17.3 的公式,并知道两种方法各自适用的场合。
- 说明直接多期回归(重叠收益回归)的误差为什么必然序列相关,为什么必须用 HAC 标准误、截断参数为什么要随步长增大。
读前导读
这一章在解决什么问题
前面的时间序列章节都是「一个变量、预测下一期」。实际工作两头都不够:资产配置要同时看利率、通胀、股债收益,并且希望各自的预测彼此一致;关心的持有期也常常是一个季度、一年,而不是明天。本章解决这两件事。
VAR(向量自回归)把 AR 推广到多个变量:每个变量都用所有变量的过去来预测。它在实现上极其简单——就是对每个变量各做一次普通 OLS,回归元完全相同。难点不在估计,而在克制:变量每多一个,参数个数按平方增长,第 14 章的 \((1+k/n)\) 惩罚会迅速吃掉预测力。
多期预测有两条路。迭代法:先预测下一期,把预测值当数据代回去,再预测下下期——就像你用 DCF 模型逐年滚动预测现金流。直接法:直接用今天的数据回归 \(h\) 期后的值——就像直接用今天的股息率回归未来一年的收益。迭代法在模型正确时更有效;直接法对模型误设更稳健,但有一个量化研究者必须掌握的陷阱:因变量重叠导致误差必然自相关,常规 t 值严重夸大。本章最后的模拟显示,一个完全无用的信号在常规标准误下有 63% 的概率「显著」。
需要先想起来的数学
- 矩阵乘法与矩阵形式的方程组:两个方程 \(Y_t=aY_{t-1}+bX_{t-1}\)、\(X_t=cY_{t-1}+dX_{t-1}\) 可以合写成 \(\begin{pmatrix}Y_t\\X_t\end{pmatrix}=\begin{pmatrix}a&b\\c&d\end{pmatrix}\begin{pmatrix}Y_{t-1}\\X_{t-1}\end{pmatrix}\)。迭代两步就是乘两次系数矩阵 \(\mathbf A^2\)。见 第 00 册第 06 章 线性代数速成。
- 行列式:\(2\times2\) 矩阵 \(\begin{pmatrix}a&b\\c&d\end{pmatrix}\) 的行列式是 \(ad-bc\)。对协方差矩阵,行列式 \(=\sigma_1^2\sigma_2^2(1-\rho^2)\),衡量「整体波动」的大小,称广义方差。系统 BIC 用它。同见第 06 章。
- 几何级数与 \(\beta^h\) 的衰减:\(0.5^{10}\approx0.001\),\(0.9^{10}\approx0.35\)。AR(1) 的 \(h\) 步预测按 \(\beta_1^h\) 回到均值。见 第 00 册第 04 章 级数与收敛。
- 条件期望的线性性:\(E(aY+bX\mid\mathcal F)=aE(Y\mid\mathcal F)+bE(X\mid\mathcal F)\),且 \(E(\text{未来误差}\mid\mathcal F_T)=0\)。这是「迭代预测就是把预测值代回模型」的依据。\(\mathcal F_T\) 读作「截至 \(T\) 期的全部信息」。见 第 00 册第 07 章 概率中的分析工具。
怎么读这一章
核心必读:17.1.2(VAR 的定义)、17.1.4(参数膨胀)、17.1.7(例子与 Granger 检验)、17.2.1(迭代预测与 AR(1) 闭式解)、17.2.3(直接回归为何必须用 HAC)。17.1.3 的跨方程 Wald 统计量和 17.1.5 的系统 BIC 第一次可以只记结论,交给软件。17.1.6 的结构 VAR 只是指路,读一遍即可。17.2.4 的「迭代还是直接」值得读,它是偏差–方差权衡的又一个例子。量化实战的示例二请务必读完。
17.0 本章在全书中的位置
第 15、16 章(本册前面的时间序列部分)只做了两件事:单变量、一步预测。实际工作中这两条限制都太窄。宏观预测者要同时预测 GDP 增长、通胀和利率,而且希望这些预测相互一致;资产配置者要的是未来一个季度、一年的收益或风险,而不是明天。第 17 章把时间序列回归往五个方向扩展,本教材拆成四章:
| 本教材章节 | 原书小节 | 主题 |
|---|---|---|
| 17a(本章) | 17.1、17.2 | 向量自回归、多期预测 |
| 17b | 17.3、17.4 | 单整阶数、单位根统计量的非正态性、协整 |
| 17c | 17.5 | 波动率聚集、已实现波动率、ARCH/GARCH |
| 17d | 17.6、17.7 | 动态因子模型与主成分预测 |
第 06 册(Tsay《金融时间序列》)第 08a 章从多元时间序列的角度系统讲 VAR、VMA、VARMA 和平稳性条件;本章侧重计量视角:怎么估计、怎么检验、怎么用它做预测,以及标准误什么时候会出错。两章可以互相参照。
17.1 向量自回归(VAR)
17.1.1 动机
假设你要同时预测 GDP 增长率和期限利差(10 年期国债利率减 3 个月国库券利率)。一种做法是各自建一个 ADL 模型:GDP 方程里放 GDP 和利差的滞后,利差方程里也放两者的滞后。另一种做法是把这两个方程当成一个系统来看待:两个方程用同一组回归元(全部变量的滞后),预测基于同一信息集,因而相互一致。后者就是向量自回归(vector autoregression,VAR)。它把单变量自回归 AR(\(p\)) 推广到一个「向量」时间序列。
17.1.2 定义
Key Concept 17.1(向量自回归) VAR 是 \(k\) 个时间序列回归组成的方程组,每个方程的回归元是全部 \(k\) 个序列的滞后值。若每个方程的滞后阶数都为 \(p\),称为 VAR(\(p\))。两变量 \(Y_t,X_t\) 的 VAR(\(p\)) 为
\[Y_t=\beta_{10}+\beta_{11}Y_{t-1}+\cdots+\beta_{1p}Y_{t-p}+\gamma_{11}X_{t-1}+\cdots+\gamma_{1p}X_{t-p}+u_{1t},\tag{17.1}\]\[X_t=\beta_{20}+\beta_{21}Y_{t-1}+\cdots+\beta_{2p}Y_{t-p}+\gamma_{21}X_{t-1}+\cdots+\gamma_{2p}X_{t-p}+u_{2t}.\tag{17.2}\]系数用逐个方程 OLS 估计。
VAR 的假设就是第 15a 章 Key Concept 15.6 的时间序列回归假设分别施加在每个方程上:误差在给定过去信息时条件均值为零;变量平稳(或者说平稳且弱相依);大的离群值不太可能出现;没有完全多重共线性。
为什么逐方程 OLS 就够了?因为每个方程的回归元完全相同。多方程系统的「似不相关回归」(SUR)理论告诉我们,当所有方程回归元相同时,系统 GLS 估计量与逐方程 OLS 估计量完全相同(这是第 19b 章 GLS 理论的一个推论,这里不展开)。所以 VAR 虽然叫「系统」,实现上只是 \(k\) 次普通回归。
用矩阵写更紧凑。令 \(\mathbf Y_t=(Y_t,X_t)'\),则
白话解释:矩阵形式怎么读。以 \(p=1\) 为例,\(\mathbf A_1=\begin{pmatrix}\beta_{11}&\gamma_{11}\\\beta_{21}&\gamma_{21}\end{pmatrix}\)。\(\mathbf A_1\mathbf Y_{t-1}\) 的第一个分量是第一行乘以 \((Y_{t-1},X_{t-1})'\),即 \(\beta_{11}Y_{t-1}+\gamma_{11}X_{t-1}\),正是 (17.1) 的右边;第二个分量对应 (17.2)。所以矩阵式只是把两个方程叠在一起写。读矩阵时记住:第 \(i\) 行是第 \(i\) 个方程,第 \(j\) 列是第 \(j\) 个变量的滞后。\(\gamma_{11}\) 位于第 1 行第 2 列,表示「\(X\) 的滞后对 \(Y\) 方程」的影响。
金融直觉:\(\boldsymbol\Sigma_u\) 的非对角元好比两个资产收益的协方差:VAR 已经用过去的信息预测了两者,剩下的「意外」部分仍可能同期相关。例如意外的通胀数据和意外的利率变动往往同时出现。结构 VAR 要做的,就是把这些相关的意外拆成互不相关的「经济冲击」。
17.1.3 VAR 中的推断
在 VAR 假设下,OLS 估计量一致,并在大样本中联合正态。所以单个系数的推断照旧:95% 置信区间是估计值 \(\pm1.96\) 倍标准误。
VAR 带来的新东西是跨方程假设。比如想知道滞后阶数应是 \(p\) 还是 \(p-1\),原假设是两个方程中所有第 \(p\) 阶滞后系数都为零:
17.1.4 VAR 该放多少变量:参数膨胀
VAR 每个方程的系数个数与变量个数成正比。原书例子:5 个变量、4 阶滞后,每个方程有 \(4\times5+1=21\) 个系数,5 个方程共 105 个系数。季度数据 40 年也才 160 个观测。
按第 14 章的结论,用 OLS 估计的系数越多,进入预测的估计误差越大,均方预测误差(MSFE)越差。附录 19.7(本册第 19c 章)会精确给出:在一定条件下,OLS 预测的 MSPE 约为 \((1+k/n)\sigma_u^2\),每多一个系数就多付出约 \(\sigma_u^2/n\) 的样本外代价。因此:
- 用 OLS 估计 VAR 时,变量要少,并且要精选。变量之间应当有经验或理论上的关联,例如 GDP 增长、期限利差、通胀。
- 加入无关变量只增加估计误差,不增加预测力。
- 想用很多变量,就不能再用 OLS,而要用收缩估计(含贝叶斯 VAR)或降维(17d 章的动态因子模型)。
金融直觉:把数字放进第 14 章的公式感受一下。5 变量 4 阶的 VAR,每个方程 21 个系数,160 个观测,\(k/n\approx0.13\),按 \((1+k/n)\) 样本外 MSFE 至少放大 13%。而季度 GDP 预测里,最好的模型相对随机游走往往也只改善百分之十几。也就是说,参数估计误差一项就足以抵消全部预测增益。对月度资产收益更严峻:信噪比低得多,加一个变量的代价几乎一定高于它的价值。
原书复习题 17.1 是一个好的反例:用 GDP、消费、投资、政府购买、出口、进口、短期利率、长期利率、通胀共 9 个变量做 VAR。问题有二:参数太多;GDP 与它的组成部分之间存在会计恒等式,几乎完全共线。
17.1.5 滞后阶数选择:系统信息准则
可以用 F 检验逐步检验 (17.3),也可以用信息准则。单方程时 BIC 是 \(\ln[SSR(p)/T]+(p+1)\ln T/T\)。系统版本要把「残差平方和」换成残差协方差矩阵的行列式。设 \(\hat{\boldsymbol\Sigma}_u\) 是 \(k\times k\) 矩阵,\((i,j)\) 元素为 \(\frac1T\sum_{t=1}^T\hat u_{it}\hat u_{jt}\),其中 \(\hat u_{it}\) 是第 \(i\) 个方程的 OLS 残差。VAR 的 BIC 为
两项的含义:
- 第一项衡量拟合。\(k=1\) 时 \(\det\hat\Sigma_u\) 就是 \(SSR(p)/T\),退化为单方程 BIC。行列式是「广义方差」,残差整体越小、越不相关,它越小。
- 第二项是惩罚。\(k(kp+1)\) 恰好是 VAR 全部回归系数的个数:\(k\) 个方程,每个方程有截距和 \(k\) 个变量各 \(p\) 阶滞后。
白话解释:为什么用行列式而不是两个方程的 SSR 之和?\(k=2\) 时 \(\det\hat{\boldsymbol\Sigma}_u=\hat\sigma_1^2\hat\sigma_2^2(1-\hat\rho^2)\),\(\hat\rho\) 是两个方程残差的相关系数。它同时奖励「每个方程的残差小」和「残差之间相关性低」。直接相加的话,两个变量的单位不同(例如 GDP 增长是百分比、利差是百分点),量级大的那个会主导;而对数行列式 \(\ln\hat\sigma_1^2+\ln\hat\sigma_2^2+\ln(1-\hat\rho^2)\) 对每个变量的单位不敏感(改单位只给 \(\ln\det\) 加一个常数,不影响比较)。
例:\(k=2\)、\(p=2\) 时惩罚项系数个数 \(2\times(2\times2+1)=10\);\(p=3\) 时 14。每多一阶滞后,多 \(k^2=4\) 个系数。
在候选 \(p=0,1,\dots,p_{\max}\) 中选使 BIC 最小的 \(\hat p\)。BIC 惩罚更重,倾向于选较小的模型;AIC 倾向于选较大的模型。对预测而言,第 15a 章 15.6 节的讨论同样适用:BIC 一致地选出真实阶数,AIC 在大样本中有高估阶数的倾向。
17.1.6 VAR 与因果分析:结构 VAR
VAR 最初由 Christopher Sims(1980)引入经济学,目的恰恰是因果分析,即结构 VAR(structural VAR,SVAR)。「结构」是指用 VAR 刻画经济的内在结构,比如货币政策冲击如何影响产出和通胀。
结构建模与预测用途的根本区别在于:它需要来自经济理论和制度知识的、非常具体的「谁对谁外生」的假设,用来把 VAR 的预测误差 \(\mathbf u_t\) 分解为有经济含义的结构冲击(油价冲击、美联储利率冲击、税收冲击等)。这属于联立方程组的识别问题,超出本书范围。入门参考 Stock & Watson(2001),研究生教材参考 Kilian & Lütkepohl(2017)。第 06 册第 08a 章讲脉冲响应和预测误差方差分解,可作为技术补充。
17.1.7 例:GDP 增长率与期限利差的 VAR(2)
第 15.7 节的 QLR 检验发现 1980 年代初有结构断点,所以样本取 1981:Q1–2017:Q3。估计结果(括号内为标准误):
可预测性检验(Granger 因果检验)。在 GDP 方程中,检验 \(TSpread\) 两阶滞后系数全为零:\(F=5.60\),\(p<0.001\),拒绝。也就是说,在控制了 GDP 自身的滞后之后,期限利差对 GDP 增长仍有预测力。在利差方程中,检验 GDP 增长两阶滞后全为零:\(F=3.22\),\(p=0.04\),在 5% 水平也拒绝,GDP 增长同样有助于预测利差。
「Granger 因果」这个名字容易误导。它检验的只是增量预测力:给定 \(Y\) 自己的过去,\(X\) 的过去是否还能帮助预测 \(Y\)。它不等于第 13 章意义上的因果效应(单方程 ADL 中的 Granger 检验见第 15a 章 15.4 节,这里是它的多方程版本)。股票价格「Granger 引起」GDP,并不意味着股价推动经济,只是股价包含了对未来经济的预期。
一步预测:\(\widehat{GDPGR}_{2017:Q4|2017:Q3}=2.8\%\),\(\widehat{TSpread}_{2017:Q4|2017:Q3}=1.3\) 个百分点;实际值分别为 2.5% 和 1.2 个百分点。
17.2 多期预测
要预测 \(h\ge2\) 期之后,有两种基本方法:
- 迭代预测(iterated forecast):用一步模型逐期向前推,把上一步的预测值当作数据代入。
- 直接预测(direct forecast):直接以 \(h\) 期后的变量为因变量做回归,回归元都滞后 \(h\) 期。
原书的建议是:多数情况下用迭代法。
17.2.1 迭代多期预测
思路很朴素:先做 \(T+1\) 期预测,然后把 \(\hat Y_{T+1|T}\) 当成观测值,代入模型做 \(T+2\) 期预测,如此循环到 \(T+h\)。一步预测是中间步骤。
AR(1) 例。
- 第一步:\(\widehat{GDPGR}_{2017:Q4|2017:Q3}=1.95+0.34\times3.11=3.0\);
- 第二步:\(\widehat{GDPGR}_{2018:Q1|2017:Q3}=1.95+0.34\times3.0=3.0\)。
AR(2) 例。
Key Concept 17.2(迭代多期预测) AR(\(p\)) 的两步、三步预测为
\[\hat Y_{T+2|T}=\hat\beta_0+\hat\beta_1\hat Y_{T+1|T}+\hat\beta_2Y_T+\hat\beta_3Y_{T-1}+\cdots+\hat\beta_pY_{T-p+2},\tag{17.10}\]\[\hat Y_{T+3|T}=\hat\beta_0+\hat\beta_1\hat Y_{T+2|T}+\hat\beta_2\hat Y_{T+1|T}+\hat\beta_3Y_T+\cdots+\hat\beta_pY_{T-p+3}.\tag{17.11}\]两变量 VAR(\(p\)) 中 \(Y\) 的两步预测为\[\hat Y_{T+2|T}=\hat\beta_{10}+\hat\beta_{11}\hat Y_{T+1|T}+\hat\beta_{12}Y_T+\cdots+\hat\beta_{1p}Y_{T-p+2}+\hat\gamma_{11}\hat X_{T+1|T}+\hat\gamma_{12}X_T+\cdots+\hat\gamma_{1p}X_{T-p+2}.\tag{17.12}\]
推导拆解:为什么「把预测值代回去」就是正确的两步预测。
- 写出 \(T+2\) 期的真实模型:\(Y_{T+2}=\beta_0+\beta_1Y_{T+1}+\beta_2Y_T+\cdots+u_{T+2}\)。
- 两边对截至 \(T\) 的信息取条件期望。左边就是我们要的 \(Y_{T+2|T}\)。
- 右边逐项处理:\(\beta_0\) 是常数;\(Y_T,Y_{T-1},\dots\) 在 \(T\) 期已知,原样保留;\(Y_{T+1}\) 未知,它的条件期望是 \(Y_{T+1|T}\),即一步预测;\(E(u_{T+2}\mid\mathcal F_T)=0\)。
- 所以 \(Y_{T+2|T}=\beta_0+\beta_1Y_{T+1|T}+\beta_2Y_T+\cdots\),把参数换成估计值即 (17.10)。
这一步用的是期望的线性性。注意它只对线性模型成立:若模型中有 \(Y_{t-1}^2\),那么 \(E(Y_{T+1}^2\mid\mathcal F_T)\ne(Y_{T+1|T})^2\)(差一个条件方差),简单代入就会有偏。这正是 17.2.4 节「一步模型误设时迭代会出问题」的一个具体来源。
一般规律是:凡是位于预测原点 \(T\) 之后的值用预测值替代,位于 \(T\) 及之前的用实际值。原书习题 17.4 把它写成递推式:\(h>p\) 时 \(Y_{T+h|T}=\beta_0+\beta_1Y_{T+h-1|T}+\cdots+\beta_pY_{T+h-p|T}\),即条件期望满足与原模型相同的差分方程(误差项的条件期望为零)。
迭代 VAR 预测有一个新特点:\(T+2\) 期某个变量的预测依赖 \(T+1\) 期所有变量的预测。要做 \(h\) 步迭代 VAR 预测,必须预测所有变量在 \(T+1,\dots,T+h-1\) 每一期的值。用 (17.5)(17.6),先得一步预测 \(GDPGR=2.8\)、\(TSpread=1.3\),再代入 GDP 方程:
AR(1) 的闭式解与均值回归。平稳 AR(1) \(Y_t=\beta_0+\beta_1Y_{t-1}+u_t\),记 \(\mu_Y=\beta_0/(1-\beta_1)\),反复迭代可得(原书习题 17.1)
推导拆解:闭式解的来源。
- 由 \(\mu_Y=\beta_0/(1-\beta_1)\) 得 \(\beta_0=\mu_Y(1-\beta_1)\),代入模型:\(Y_t-\mu_Y=\beta_1(Y_{t-1}-\mu_Y)+u_t\)。即「偏离均值的部分」本身是一个无截距的 AR(1)。
- 对偏离部分做一步预测:\(Y_{T+1|T}-\mu_Y=\beta_1(Y_T-\mu_Y)\)。
- 两步:\(Y_{T+2|T}-\mu_Y=\beta_1(Y_{T+1|T}-\mu_Y)=\beta_1^2(Y_T-\mu_Y)\)。归纳得 \(h\) 步为 \(\beta_1^h(Y_T-\mu_Y)\)。
用 GDP 的 AR(1) 核对:\(\mu_Y=1.95/(1-0.34)\approx2.95\),\(Y_T=3.11\),偏离 0.16,一步后剩 \(0.34\times0.16\approx0.05\),所以两步预测都约 3.0,这就是上面算出的结果。
预测以几何速度回到无条件均值。复习题 17.2 的数字:\(\beta_0=0\),\(\beta_1=0.5\),\(Y_t=10\),则 \(Y_{t+2|t}=10\times0.5^2=2.5\),\(h=20\) 时几乎为零。偏离均值的「半衰期」是 \(\ln0.5/\ln\beta_1\)。这个公式在量化中到处出现:价差的均值回复、波动率预测向长期水平回归(17c 章)、利率模型的均值回复。
17.2.2 直接多期预测
直接法用一个回归一次给出 \(h\) 步预测,不需要迭代。做法是以 ADL 模型为起点,把所有预测变量多滞后若干期。例如两步预测、两阶滞后:因变量是 \(Y_t\),回归元是 \(Y_{t-2},Y_{t-3},X_{t-2},X_{t-3}\);预测时代入 \(Y_T,Y_{T-1},X_T,X_{T-1}\) 直接得到 \(\hat Y_{T+2|T}\)。
Key Concept 17.3(直接多期预测) 基于 \(Y_t\) 和 \(X_t\) 各 \(p\) 阶滞后的 \(h\) 步直接预测:先用 OLS 估计
\[Y_t=\delta_0+\delta_1Y_{t-h}+\cdots+\delta_pY_{t-p-h+1}+\delta_{p+1}X_{t-h}+\cdots+\delta_{2p}X_{t-p-h+1}+u_t,\tag{17.15}\]再用估计系数和截至 \(T\) 的数据计算 \(\hat Y_{T+h|T}\)。
例(括号内为 HAC 标准误):
17.2.3 直接回归的标准误:为什么必须用 HAC
这是本章对量化研究最重要的一点。
直接回归的误差必然序列相关。 设 \(h=2\)。\(t\) 期的误差是用 \(t-2\) 期信息预测 \(Y_t\) 的误差,它包含 \(t-1\) 和 \(t\) 两期的意外冲击;\(t+1\) 期的误差包含 \(t\) 和 \(t+1\) 两期的冲击。两者共享 \(t\) 期冲击,所以相关。原书的直观例子:假设下季度突然油价上涨,那么本季度做的两步预测和上季度做的两步预测都会偏高,相邻预测误差同向。
一般地,\(h\) 步直接回归的误差至少有 \(h-1\) 阶重叠,其前 \(h-1\) 个自相关系数一般不为零。如果 \(Y_t\) 本身是 \(h\) 期累计量(如未来 \(h\) 日累计收益),误差就是 MA(\(h-1\)) 结构。
推导拆解:重叠收益误差的自相关具体是多少。设日收益 \(r_t\) 独立同分布、方差 \(\sigma^2\),且不可预测。因变量 \(R_t=r_{t+1}+\cdots+r_{t+h}\),回归误差就是 \(R_t\) 减去其均值。
- \(\text{var}(R_t)=h\sigma^2\)。
- \(R_t\) 与 \(R_{t+j}\)(\(0<j<h\))共享 \(r_{t+j+1},\dots,r_{t+h}\),共 \(h-j\) 天,所以 \(\text{cov}=(h-j)\sigma^2\)。
- 自相关 \(\rho_j=(h-j)/h\),\(j\ge h\) 时为 0。
\(h=20\) 时 \(\rho_1=0.95\)、\(\rho_{10}=0.5\)、\(\rho_{19}=0.05\)。代入第 16 章的修正因子:若回归元也很持续,\(f_T\approx1+2\sum_{j=1}^{19}(20-j)/20=20\),标准误应放大约 \(\sqrt{20}\approx4.5\) 倍。也就是说,常规 t 值 4 实际上只相当于 0.9。这就是示例二中 OLS 拒绝率高达 63% 的原因。
后果:第 16.4 节已经说明,误差序列相关时,普通 OLS 标准误(无论是否异方差稳健)都不可靠,通常严重偏小。必须用异方差与自相关一致(HAC)标准误,例如 Newey–West。原书 (17.13) 用的是 Newey–West,截断参数 \(m\) 按 (16.17) 的经验法则 \(m=0.75T^{1/3}\) 设定,\(T=147\) 时 \(m=4\)。
截断参数要随步长增大。 步长越长,重叠越多,序列相关越强。由于前 \(h-1\) 个自相关一般非零,长步长时 \(m\) 至少应取到 \(h-1\),往往应大于 (16.17) 的经验值。
17.2.4 迭代还是直接?
原书给出两条理由支持默认使用迭代法:
- 理论:如果一步模型(AR 或 VAR)设定正确,用一步回归估计系数再迭代,比用多步回归估计更有效率。直接回归的误差是多期冲击之和,方差大且序列相关,浪费了信息。
- 实践:预测者通常需要多个步长的预测。迭代预测来自同一个模型,跨步长的预测路径平滑;直接法每个步长用不同的回归,系数的抽样误差会让预测路径随步长来回跳动。
直接法更可取的情形是:有理由认为一步模型设定错误。例如 VAR 中目标变量的方程是对的,但其他变量的方程遗漏了非线性项。一步模型误设时,迭代会把误差逐期放大,迭代预测一般有偏,其 MSFE 可能超过直接预测,尽管直接预测的方差更大。这是偏差与方差的权衡。
原书习题 17.8 给出两者的关系:无截距的一阶两变量 VAR 中,两步迭代预测可写成 \(Y_{t|t-2}=\delta_1Y_{t-2}+\delta_2X_{t-2}\),其中 \(\delta_1=\beta_{11}^2+\gamma_{11}\beta_{21}\),\(\delta_2=\beta_{11}\gamma_{11}+\gamma_{11}\gamma_{21}\)。直接法估计的正是 \(\delta_1,\delta_2\),但不施加「它们是一步系数的特定非线性函数」这一约束。模型正确时约束带来效率;模型错误时约束带来偏差。
推导拆解:\(\delta_1,\delta_2\) 就是系数矩阵平方的第一行。
- 无截距 VAR(1):\(\mathbf Y_t=\mathbf A\mathbf Y_{t-1}+\mathbf u_t\),\(\mathbf A=\begin{pmatrix}\beta_{11}&\gamma_{11}\\\beta_{21}&\gamma_{21}\end{pmatrix}\)。
- 迭代两次:\(\mathbf Y_{t|t-2}=\mathbf A\,\mathbf Y_{t-1|t-2}=\mathbf A\cdot\mathbf A\mathbf Y_{t-2}=\mathbf A^2\mathbf Y_{t-2}\)。
- 矩阵乘法:\(\mathbf A^2\) 第一行第一列 \(=\beta_{11}\beta_{11}+\gamma_{11}\beta_{21}\),第一行第二列 \(=\beta_{11}\gamma_{11}+\gamma_{11}\gamma_{21}\)。
一般地,\(h\) 步迭代预测是 \(\mathbf A^h\mathbf Y_T\)。VAR 平稳要求 \(\mathbf A^h\to0\),等价于 \(\mathbf A\) 的所有特征值绝对值小于 1——这就是 AR(1) 条件 \(|\beta_1|<1\) 的矩阵版本。
量化实战
1. 本章内容在量化中的用途
宏观–资产的领先关系。 多资产配置常用 VAR 联合建模宏观变量与资产收益,例如期限利差、通胀、信用利差与股债收益。Granger 式的 F 检验是因子研究里「增量信息检验」的标准做法:一个新信号在控制了收益自身滞后和已有因子之后,是否还有预测力。
参数膨胀的教训。 多资产 VAR(例如 20 个行业收益、5 阶滞后)有上千个参数,用 OLS 估计的样本外预测几乎一定比简单基准差。实际做法是精简变量、施加收缩(岭回归、贝叶斯 VAR),或者先用主成分降维(17d 章)。
重叠收益回归。 用日数据预测未来 5 日、20 日收益,或用月数据预测未来 12 个月收益,就是直接多期回归。由于每天滚动,相邻观测的因变量重叠 \(h-1\) 天,残差是 MA(\(h-1\))。这时:
- 普通 OLS 的 t 值会严重高估,这是因子 IC 研究和收益可预测性研究中最常见的统计错误之一;
- Newey–West 的滞后至少取 \(h-1\);
- 即使如此,当预测变量高度持续(股息率、估值、利差这类变量的一阶自相关常在 0.95 以上)时,Newey–West 在有限样本中仍会过度拒绝。文献中的常见替代方案是只用不重叠样本、使用 Hodrick(1992)标准误,或用模拟/自助法得到临界值。
多步预测的选择。 波动率的多步预测(17c 章)几乎都用迭代法(GARCH 的方差预测递推);收益的多期预测常用直接法,因为一步收益模型几乎肯定是误设的,而直接回归直接对准了你关心的持有期。
2. 示例一:估计 VAR、选择滞后、Granger 检验与迭代预测
下面模拟一个两变量 VAR(2),结构仿照原书的 GDP 增长与期限利差,然后用 statsmodels 估计、选阶、检验,并手工核对迭代预测公式 (17.12)。
import numpy as np
import pandas as pd
from statsmodels.tsa.api import VAR
rng = np.random.default_rng(42)
T = 600
# 真实 VAR(2):y = 宏观增长,s = 期限利差(利差领先增长)
A1 = np.array([[0.30, -0.80],
[0.01, 1.05]])
A2 = np.array([[0.20, 1.10],
[-0.05, -0.20]])
c = np.array([0.5, 0.4])
Sigma = np.array([[4.0, 0.3],
[0.3, 0.25]])
L = np.linalg.cholesky(Sigma)
Y = np.zeros((T + 100, 2))
for t in range(2, T + 100):
Y[t] = c + A1 @ Y[t-1] + A2 @ Y[t-2] + L @ rng.standard_normal(2)
df = pd.DataFrame(Y[100:], columns=["gdpgr", "tspread"])
model = VAR(df)
sel = model.select_order(maxlags=8)
print("BIC 选出的滞后阶:", sel.selected_orders["bic"], " AIC:", sel.selected_orders["aic"])
res = model.fit(2)
print(res.params.round(2))
# Granger 因果(可预测性)检验:利差的两阶滞后在 gdpgr 方程中是否全为 0
g1 = res.test_causality("gdpgr", ["tspread"], kind="f")
g2 = res.test_causality("tspread", ["gdpgr"], kind="f")
print(f"tspread -> gdpgr: F={g1.test_statistic:.2f}, p={g1.pvalue:.4f}")
print(f"gdpgr -> tspread: F={g2.test_statistic:.2f}, p={g2.pvalue:.4f}")
# 迭代多期预测(statsmodels 的 forecast 就是迭代法)
last = df.values[-2:]
fc = res.forecast(last, steps=4)
print("迭代预测 h=1..4 (gdpgr, tspread):\n", fc.round(2))
# 手工核对两步预测:先预测 T+1,再代入
p = res.params.values # 行: const, L1.gdpgr, L1.tspread, L2.gdpgr, L2.tspread
def step(y1, y2):
x = np.r_[1, y1, y2]
return x @ p
f1 = step(last[-1], last[-2])
f2 = step(f1, last[-1])
print("手工两步预测:", f2.round(2))
输出:
BIC 选出的滞后阶: 2 AIC: 2
gdpgr tspread
const 0.36 0.48
L1.gdpgr 0.28 0.02
L1.tspread -0.67 1.03
L2.gdpgr 0.20 -0.06
L2.tspread 1.02 -0.22
tspread -> gdpgr: F=24.41, p=0.0000
gdpgr -> tspread: F=17.99, p=0.0000
迭代预测 h=1..4 (gdpgr, tspread):
[[-0.23 2.54]
[ 0.55 2.71]
[ 1.24 2.73]
[ 1.75 2.67]]
手工两步预测: [0.55 2.71]
几点观察:系统 BIC 和 AIC 都正确选出 2 阶;系数估计接近真值;两个方向的 Granger 检验都显著(样本量 600 比原书的 147 大得多,所以 F 值更大)。手工按 (17.12) 迭代得到的两步预测与软件一致,说明 forecast 用的就是迭代法。预测路径从 \(-0.23\) 逐步回升,体现了平稳 VAR 预测向无条件均值回归。
3. 示例二:重叠收益回归的标准误陷阱
真实日收益完全不可预测,信号是一个与收益无关的高持续 AR(1)(\(\phi=0.98\),类似估值类指标)。我们用信号预测未来 20 日累计收益,看名义 5% 的 t 检验实际拒绝了多少次。
import numpy as np
import statsmodels.api as sm
rng = np.random.default_rng(0)
T, h, nsim = 1000, 20, 1000 # 1000 个交易日,预测未来 20 日累计收益
rej_ols, rej_hac, rej_hac_m = 0, 0, 0
for _ in range(nsim):
r = rng.standard_normal(T + h) * 0.01 # 日收益:真实不可预测
s = np.zeros(T + h) # 一个持续性很强的信号(AR(1), phi=0.98)
e = rng.standard_normal(T + h)
for t in range(1, T + h):
s[t] = 0.98 * s[t-1] + e[t]
# 直接 h 步回归:y_t = 未来 h 日累计收益,x_t = 当日信号
y = np.array([r[t+1:t+1+h].sum() for t in range(T)])
X = sm.add_constant(s[:T])
ols = sm.OLS(y, X).fit()
hac = sm.OLS(y, X).fit(cov_type="HAC", cov_kwds={"maxlags": h - 1})
m_rule = int(0.75 * T ** (1/3)) # 原书 (16.17) 的经验法则,约 7
hac2 = sm.OLS(y, X).fit(cov_type="HAC", cov_kwds={"maxlags": m_rule})
rej_ols += abs(ols.tvalues[1]) > 1.96
rej_hac += abs(hac.tvalues[1]) > 1.96
rej_hac_m += abs(hac2.tvalues[1]) > 1.96
print(f"名义水平 5%,真实拒绝率:")
print(f" 普通 OLS 标准误 : {rej_ols/nsim:.3f}")
print(f" Newey-West, m=0.75T^(1/3)={int(0.75*T**(1/3))}: {rej_hac_m/nsim:.3f}")
print(f" Newey-West, m=h-1={h-1} : {rej_hac/nsim:.3f}")
输出:
名义水平 5%,真实拒绝率:
普通 OLS 标准误 : 0.631
Newey-West, m=0.75T^(1/3)=7: 0.259
Newey-West, m=h-1=19 : 0.132
这个结果值得记住:一个完全无用的信号,用普通 OLS 标准误,63% 的情况下会被判为「5% 显著」。按经验法则取 7 阶滞后的 Newey–West 仍有 26% 的假阳性;滞后取到 \(h-1=19\) 后降到 13%,但仍是名义水平的两倍多。原因是回归元高度持续、残差又有长重叠,Newey–West 的有限样本表现不佳。实务建议:重叠回归至少用 \(m\ge h-1\) 的 HAC;对持续性强的预测变量,再用非重叠子样本或模拟临界值做稳健性检查;报告的 t 值门槛也应高于 1.96。
本章小结
VAR 把单变量自回归推广到 \(k\) 个变量:每个方程都用全部变量的滞后做回归元,逐方程 OLS 估计,各变量的预测基于同一信息集、相互一致。系数大样本联合正态,可以做跨方程的 F 检验,例如滞后阶检验和 Granger 式可预测性检验;后者检验的是增量预测力而非因果。VAR 参数随变量数平方增长,用 OLS 时必须少而精,否则估计误差吞掉预测力。滞后阶可用系统 BIC/AIC 选择。多期预测有迭代法和直接法:一步模型设定正确时迭代法更有效、跨步长更平滑,是默认选择;担心一步模型误设时用直接法。直接回归的误差必有 \(h-1\) 阶重叠自相关,必须用 HAC 标准误且截断参数随 \(h\) 增大,这在量化的重叠收益回归中至关重要。
| 概念 | 公式 / 要点 |
|---|---|
| VAR(\(p\)) | 每个方程:常数 + 全部 \(k\) 个变量各 \(p\) 阶滞后;逐方程 OLS |
| 系数个数 | 每方程 \(kp+1\),全系统 \(k(kp+1)\) |
| 系统 BIC | \(\ln\det\hat{\boldsymbol\Sigma}_u+k(kp+1)\ln T/T\);AIC 把 \(\ln T\) 换成 2 |
| Granger 检验 | 方程中某变量全部滞后系数为零的 F 检验 = 增量预测力检验 |
| 迭代预测 | 原点后用预测值、原点及之前用实际值;(17.10)–(17.12) |
| AR(1) 多步 | \(Y_{T+h\mid T}=\mu_Y+\beta_1^h(Y_T-\mu_Y)\),半衰期 \(\ln0.5/\ln\beta_1\) |
| 直接预测 | \(Y_t\) 对 \(h\) 期前的滞后回归 (17.15),每个 \(h\) 一个回归 |
| 直接回归标准误 | 误差 MA(\(h-1\)) 型相关;HAC,\(m\ge h-1\) |
| 选择原则 | 模型对 → 迭代(有效、平滑);模型可能误设 → 直接(偏差小、方差大) |
练习
基础
- 一个 4 变量、6 阶滞后的 VAR 共有多少个回归系数?若用 30 年季度数据估计,每个方程的自由度还剩多少? 答案要点:每方程 \(4\times6+1=25\),共 100;每方程 \(120-25=95\)(实际可用观测还要减去 6 个初始滞后)。
- 平稳 AR(1):\(\beta_0=0\),\(\beta_1=0.5\),\(Y_t=10\)。求 \(Y_{t+2|t}\) 和 \(h=20\) 的预测,并解释。(原书复习题 17.2) 答案要点:2.5;\(10\times0.5^{20}\approx10^{-5}\),预测回归到均值 0。
- 用 (17.5)(17.6) 和一步预测 \(GDPGR=2.8\)、\(TSpread=1.3\),以及 2017:Q3 实际值 \(GDPGR=3.1\)、\(TSpread=1.2\),计算利差的两步迭代预测。 提示:\(0.44+0.01\times2.8-0.05\times3.1+1.06\times1.3-0.22\times1.2\approx1.43\)。
- 为什么 \(h=4\) 的直接预测回归的误差项一定序列相关?它的前几阶自相关一般不为零? 提示:相邻观测的误差共享 3 个季度的冲击;前 3 阶。
- 「X Granger 引起 Y」能否说明 X 对 Y 有因果效应?举一个金融中的反例。 提示:不能。股价 Granger 引起 GDP,是因为股价反映了对未来的预期。
进阶
- (原书习题 17.1)(a) 证明平稳 AR(1) 的 \(h\) 步预测为 \(Y_{t+h|t}=\mu_Y+\beta_1^h(Y_t-\mu_Y)\)。(b) 若 \(X_t=\sum_{i=0}^\infty\delta^iY_{t+i|t}\),\(|\delta|<1\),证明 \(X_t=\mu_Y/(1-\delta)+(Y_t-\mu_Y)/(1-\beta_1\delta)\)。这就是现值模型:如果 \(Y\) 是股息,\(X\) 是股价的一部分。 提示:(b) 代入 (a) 后对两个几何级数求和。
- (原书习题 17.8)无截距的一阶两变量 VAR,写出两步迭代预测 \(Y_{t|t-2}=\delta_1Y_{t-2}+\delta_2X_{t-2}\) 中的 \(\delta_1,\delta_2\),并讨论直接回归估计的系数与迭代法的系数在什么情况下不同。 提示:\(\delta_1=\beta_{11}^2+\gamma_{11}\beta_{21}\),\(\delta_2=\beta_{11}\gamma_{11}+\gamma_{11}\gamma_{21}\);有限样本中总不同,模型误设时连概率极限也不同。
- (原书习题 17.4)证明 AR(\(p\)) 中 \(h>p\) 时 \(Y_{t+h|t}=\beta_0+\beta_1Y_{t+h-1|t}+\cdots+\beta_pY_{t+h-p|t}\)。 提示:对 \(Y_{t+h}\) 的模型两边取 \(t\) 期条件期望,\(E(u_{t+h}|\mathcal F_t)=0\)。
- 修改示例二:(a) 把信号持续性从 0.98 改为 0.5;(b) 只用不重叠样本(每 20 天取一个观测)做 OLS。比较各方法的拒绝率,说明结论。 提示:(a) 中 Newey–West 的过度拒绝明显减轻;(b) 普通标准误基本恢复正确水平,但样本量只剩 1/20,功效大幅下降。
- 用示例一的模拟数据,比较 VAR(2) 迭代法与 Key Concept 17.3 直接法在 \(h=4\) 的伪样本外 RMSFE。再把真实模型改成第一个方程含 \(s_{t-1}^2\) 项(非线性),重复比较。 提示:模型正确时迭代法略优;非线性误设时直接法可能反超。
原书推荐习题:17.1(AR(1) 多步预测与现值模型)、17.4(迭代预测的递推)、17.8(迭代与直接预测的关系);复习题 17.1、17.2;实证题 E17.1(用 PCE 通胀以 AR(2) 做迭代与直接法的两步预测)。
原书对照
| 本章内容 | 原书章节 | PDF 页码 |
|---|---|---|
| 第 17 章导言 | 第 17 章开篇 | p.650 |
| VAR 定义、推断、变量个数、滞后选择、结构 VAR(Key Concept 17.1,式 17.1–17.4) | 17.1 | p.650–654 |
| GDP 增长与期限利差 VAR(式 17.5–17.6) | 17.1 | p.654 |
| 迭代多期预测、直接多期预测与 HAC、两种方法的选择(Key Concept 17.2、17.3,式 17.7–17.15) | 17.2 | p.655–659 |
| 章末复习题与习题 17.1、17.4、17.8,实证题 E17.1 | 第 17 章末 | p.684–688 |
| 重叠回归中 Newey–West 的有限样本问题(本教材补充) | — | — |
注:原书页码 = PDF 页码 − 1。