第 03a 章 条件异方差:ARCH 与 GARCH 模型
对应 Tsay 第 3 章前半部分(3.1–3.7 节,以及 3.16 节 GARCH 峰度)。第 02a、02b 章刻画的是条件均值;本章转向条件方差,也就是波动率。这是 Tsay 全书中与量化交易关系最紧密的一章:风险模型、VaR、仓位管理、期权定价、波动率交易都以波动率预测为输入。第 03b 章继续介绍非对称模型(EGARCH、TGARCH)、随机波动率以及基于高频和 OHLC 数据的波动率估计。同一组模型在第 05 册第 17c 章(计量视角:持续性、多步预测与推断)和第 08 册第 23 章(风险管理视角:EWMA/GARCH 的逐日更新、期权存续期平均波动率预测)中也有讲解;Hull 的 \(u_{n-1}\)、\(\sigma_n^2\) 对应本章的 \(a_{t-1}\)、\(\sigma_t^2\),可对照阅读。
学习目标
读完本章,你应当能够:
- 说出波动率的四个典型特征,理解"收益不相关但不独立"的含义,写出均值方程 + 波动率方程的模型结构。
- 用 McLeod–Li(平方残差的 Ljung–Box)和 Engle 的 LM 检验判断 ARCH 效应。
- 推导 ARCH(1) 的无条件方差、四阶矩与峰度,理解为什么条件正态的 ARCH 会产生厚尾;知道 ARCH 的弱点。
- 写出 GARCH(\(m,s\)) 的定义与 ARMA 表示,推导 GARCH(1,1) 的多步波动预测,理解持续性 \(\alpha_1+\beta_1\) 的意义。
- 写出正态、Student-t、GED 新息下的条件对数似然,能完成"检验—定阶—估计—诊断—预测"的完整流程。
- 理解 IGARCH 与 RiskMetrics(EWMA)的关系、GARCH-M 的风险溢价含义,以及 GARCH 峰度公式揭示的尾部来源。
读前导读
这一章在解决什么问题
前两章问的是"明天的收益平均是多少",答案通常是"几乎预测不了"。这一章换一个问题:"明天的收益波动有多大",答案是"相当可以预测"。
你在 CFA 二级和 FRM 风格的风险管理材料里见过 EWMA:\(\sigma_n^2=\lambda\sigma_{n-1}^2+(1-\lambda)u_{n-1}^2\),\(\lambda=0.94\);也见过 GARCH(1,1):\(\sigma_n^2=\omega+\alpha u_{n-1}^2+\beta\sigma_{n-1}^2\),长期方差 \(V_L=\omega/(1-\alpha-\beta)\)。CFA 要求你会代公式、知道"GARCH 均值回复、EWMA 不回复"。本章讲清楚为什么:
- 为什么"收益不相关"和"收益独立"不是一回事,波动聚集正是"不相关但不独立"的表现;
- 为什么即使每天的收益条件上是正态的,长期看收益分布仍然厚尾(这是第 01 章"正态尺度混合"的动态版本);
- GARCH 为什么可以看成"平方收益的 ARMA 模型",于是第 02a 章的全部工具(平稳条件、均值、多步预测、半衰期)都能直接用;
- 参数怎么估计(第 01 章 (1.18) 的似然模板)、怎么检验模型是否够用。
一句话连接:GARCH 之于波动率,就像 AR 之于收益。持续性 \(\alpha_1+\beta_1\) 对应 AR 系数 \(\phi_1\),长期方差 \(\alpha_0/(1-\alpha_1-\beta_1)\) 对应均值 \(\phi_0/(1-\phi_1)\),波动冲击的半衰期公式和价差的半衰期公式一模一样。
需要先想起来的数学
1. 条件期望与全期望公式。 \(E(X\mid F_{t-1})\) 是"用到 \(t-1\) 为止的信息所做的最好预测",它本身是随机的(依赖于过去发生了什么)。全期望公式 \(E(X)=E[E(X\mid F_{t-1})]\) 说:先在每种历史下求条件平均,再对所有历史求平均,就得到无条件平均。本章算无条件方差、四阶矩时反复用这一步。例:一半时间 \(\sigma^2=1\)、一半时间 \(\sigma^2=4\),无条件方差就是 \((1+4)/2=2.5\)。见 第 00 册第 07 章 概率中的分析工具。
2. 正态分布的四阶矩。 若 \(Z\sim N(0,1)\),则 \(E(Z^2)=1\),\(E(Z^4)=3\),所以 \(\operatorname{Var}(Z^2)=2\)。于是给定 \(\sigma_t\) 时,\(a_t=\sigma_tZ\) 的条件四阶矩是 \(3\sigma_t^4\)。这是计算峰度的起点。
3. 似然函数与数值优化。 第 01 章 (1.18) 的模板:\(-\frac12\sum[\ln\sigma_t^2+a_t^2/\sigma_t^2]\)。GARCH 的估计就是选参数让这个式子最大,靠计算机数值求解(没有像 OLS 那样的闭式解)。变量替换时要乘"雅可比因子":若 \(a=\sigma\epsilon\),则 \(a\) 的密度是 \(\epsilon\) 的密度除以 \(\sigma\)。见 第 00 册第 05 章 多元微积分与优化。
4. 一阶线性递推的解。 \(x_\ell=c+\phi x_{\ell-1}\) 的解是 \(x_\ell=\bar x+\phi^{\ell-1}(x_1-\bar x)\),其中 \(\bar x=c/(1-\phi)\) 是不动点。偏离不动点的部分每步乘 \(\phi\)。GARCH 多步预测、AR 多步预测都是这个结构。见 第 00 册第 04 章 级数与收敛。
5. 鞅差序列。 满足 \(E(\eta_t\mid F_{t-1})=0\) 的序列:每一步"平均来说不可预测",所以互不相关,但它的方差可以依赖过去,因此不一定独立。可以理解为"公平赌博中每一局的输赢"。见 第 00 册第 08 章 读懂数学证明与符号。
怎么读这一章
核心必读:3.2 模型结构、3.3 ARCH 效应检验、3.4.1–3.4.2(ARCH 的定义和"条件正态 → 无条件厚尾")、3.5.1–3.5.3(GARCH 定义、ARMA 表示、多步预测)、3.5.5 预测评价的陷阱、3.6 IGARCH 与 EWMA。这些是风险模型和波动率目标策略的地基。3.4.4 的偏 t 分布和 GED 密度公式第一次可以跳过,只记"厚尾新息可选 t、偏 t、GED"。3.5.7 GARCH 峰度的推导较长,第一次只看结论("厚尾由 \(\alpha_1\) 和新息厚尾共同产生,两者相互放大"),回头再细读。3.5.6 两步法只需知道思路。建议顺序:3.1 → 3.2 → 3.3 → 3.4.1–3.4.2 → 3.5.1–3.5.3 → 3.6 → 3.5.4–3.5.5 → 3.4.4 → 3.7 → 3.5.7。
3.0 为什么要为波动率建模
本章研究资产收益的波动率(volatility)——标的资产收益的条件标准差——的建模方法,统称条件异方差模型(conditional heteroscedastic models)。
期权定价。欧式看涨期权赋予持有人在到期日以执行价 \(K\) 买入标的的权利而非义务。设 \(\ell\) 为距到期时间(年),Black–Scholes 公式为
\(P_t\) 为现价,\(r\) 为连续复利无风险利率,\(\sigma_t\) 为对数收益的年化条件标准差,\(\Phi\) 为标准正态 CDF(推导见原书第 6 章、本套第 08 册)。公式中唯一不可直接观测的输入就是 \(\sigma_t\),而且它随时间变化。
其他用途:VaR 计算(第 07a 章);均值–方差框架下的资产配置;对波动率建模能提高均值参数估计的效率、改善区间预测;波动率本身也成了交易品种——CBOE 的 VIX 期货于 2004-03-26 开始交易。
本章与下一章的模型:ARCH(Engle 1982)、GARCH(Bollerslev 1986)、IGARCH、GARCH-M;第 03b 章:EGARCH(Nelson 1991)、TGARCH(Glosten–Jagannathan–Runkle 1993;Zakoian 1994)、CHARMA(Tsay 1987)、RCA(Nicholls & Quinn 1982)、随机波动率 SV 模型,以及高频数据与日内高低价的替代方法。多元波动率见原书第 10 章。
3.1 波动率的特征
不可直接观测。仅凭每天一个收益观测,无法得到当天的波动率。如果有日内数据(如 10 分钟收益)可以估计日波动率(第 03b 章),但股票波动包括日内波动和隔夜波动,日内高频数据对隔夜波动的信息很有限。不可观测性也让"评价波动率模型的预测表现"变得困难。
隐含波动率(implied volatility)。如果接受 Black–Scholes 之类的定价模型,可以从期权价格反推 \(\sigma_t\)。但它依赖几何布朗运动等假设,可能偏离真实波动。经验上隐含波动率往往高于 GARCH 类模型的估计值,可能源于波动率风险溢价,也可能与日收益的计算方式有关。VIX 指数就是 S&P 500 期权的隐含波动率。
四个常见特征:
- 波动聚集(volatility clusters):某些时期波动高,某些时期波动低;
- 波动随时间连续演化,跳跃罕见;
- 波动不会发散到无穷,在一定范围内变动,统计上通常是平稳的;
- 波动对大涨和大跌的反应不同,称杠杆效应(leverage effect)。
这些特征推动了模型的发展。例如 EGARCH 就是为了刻画正负收益引起的不对称性而提出的。
3.2 模型结构
基本思想:收益序列 \(\{r_t\}\) 序列不相关(或只有低阶的弱相关),但并不独立。原书以 Intel 月对数收益(1973-01—2008-12)为例:\(r_t\) 的 ACF 除滞后 7 有小相关外均不显著;但 \(r_t^2\) 和 \(|r_t|\) 的 ACF 明显显著。"不相关但相依"——波动率模型要刻画的就是这种相依。
给定过去信息集 \(F_{t-1}\)(通常为过去收益所有线性函数构成的信息集),定义条件均值和条件方差
由于收益的序列相依很弱,均值方程应当简单,设为带解释变量的平稳 ARMA:
\(y_t\) 是去除解释变量影响后的调整收益——这正是第 02b 章"带时间序列误差的回归"的应用。\((p,q)\) 可能依数据频率而定:日指数收益常有小的序列相关,月度收益则可能没有。解释变量很灵活,例如用周一虚拟变量研究周末效应,或用 CAPM 均值方程 \(r_t=\phi_0+\beta r_{m,t}+a_t\)。合并 (3.2) 与 (3.3):
白话解释:"不相关但不独立"是什么意思。 不相关只说明线性关系为零:知道昨天涨了,不能帮你判断今天是涨还是跌。但独立要求任何关系都为零:知道昨天的任何信息,对今天的分布都没有帮助。 波动聚集正好卡在中间:昨天大跌 5%,你仍然不知道今天的方向(不相关),但你知道今天大概率还会大幅波动(不独立)。所以 \(r_t\) 与 \(r_{t-1}\) 的相关系数接近 0,而 \(r_t^2\) 与 \(r_{t-1}^2\) 的相关系数显著为正。 这也解释了第 02a 章 2.3 节为什么强调"白噪声要求 iid":收益常常是"不相关的白噪声",却不是 iid 的白噪声。 金融直觉:均值方程 + 波动率方程的结构,相当于把收益拆成"可预测的部分 \(\mu_t\)"和"风险部分 \(a_t\)",再给风险部分的大小单独建一个预测模型。均值方程对应 alpha 模型,波动率方程对应风险模型。
条件异方差模型关心的就是 \(\sigma_t^2\) 如何随时间演化;演化方式不同,模型就不同。大体分两类:用确定性函数驱动 \(\sigma_t^2\)(GARCH 类),用随机方程描述 \(\sigma_t^2\)(随机波动率类)。
术语:\(a_t\) 称资产收益在 \(t\) 时刻的冲击(shock)或新息(innovation),\(\sigma_t\) 是 \(\sigma_t^2\) 的正平方根;\(\mu_t\) 的模型称均值方程(mean equation),\(\sigma_t^2\) 的模型称波动率方程(volatility equation)。条件异方差建模就是在一个时间序列模型上再加一个刻画条件方差演化的动态方程。
3.3 建模步骤与 ARCH 效应检验
3.3.1 四步流程
- 检验序列相依,设定均值方程(如 ARMA)去除线性相依;
- 用均值方程的残差检验 ARCH 效应;
- 若 ARCH 效应显著,设定波动率模型,对均值方程和波动率方程联合估计;
- 仔细检查拟合的模型,必要时改进。
多数资产收益的序列相关很弱,均值方程常常只是减去显著非零的样本均值;部分日收益需要一个简单 AR;也可以加入周末效应或一月效应的虚拟变量。
3.3.2 检验 ARCH 效应
令 \(a_t=r_t-\mu_t\) 为均值方程的残差。平方序列 \(a_t^2\) 用来检验条件异方差,即 ARCH 效应。
(1) McLeod–Li 检验(1983):对 \(\{a_t^2\}\) 用 Ljung–Box 统计量 \(Q(m)\),原假设为 \(a_t^2\) 的前 \(m\) 阶 ACF 都为零。
(2) Engle(1982)的拉格朗日乘子(LM)检验:做辅助回归
检验 \(H_0:\alpha_1=\cdots=\alpha_m=0\)。令 \(SSR_0=\sum_{t=m+1}^T(a_t^2-\bar\omega)^2\)(\(\bar\omega\) 为 \(a_t^2\) 的样本均值),\(SSR_1=\sum_{t=m+1}^T\hat e_t^2\),
更正:精读笔记照录原书称"\(F\) 渐近服从 \(\chi^2_m\)"。严格说,\(F\) 在原假设下近似服从 \(F(m,T-2m-1)\) 分布,\(mF\) 渐近服从 \(\chi^2_m\);软件中更常用的等价形式是 \(TR^2\sim\chi^2_m\)(\(R^2\) 为辅助回归的决定系数)。三者在大样本下给出相同结论。
例(Intel 月对数收益):收益本身 \(Q(12)=18.26\),p=0.11,无序列相关,可直接用 \(a_t=r_t-\bar r\) 检验。LM 统计量约 53.62,p≈0;\(a_t^2\) 的 \(Q(12)=89.85\),p≈\(5.3\times10^{-14}\),ARCH 效应很强。
软件提示:R 中 Box.test(at^2, lag=12, type='Ljung');Python 中 statsmodels.stats.diagnostic.acorr_ljungbox(at**2, lags=[12]) 与 het_arch(at, nlags=12)(返回 \(TR^2\) 形式的 LM 统计量及 F 形式)。
3.4 ARCH 模型
3.4.1 定义与直觉
ARCH 是第一个系统的波动率建模框架(Engle 1982)。基本思想有两条:(a) 冲击 \(a_t\) 序列不相关但相依;(b) 这种相依可以用其滞后值的简单二次函数描述。ARCH(\(m\)) 模型为
\(\{\epsilon_t\}\) 为 iid、均值 0、方差 1 的随机变量;\(\alpha_0>0\),\(\alpha_i\ge0\);系数还需满足保证 \(a_t\) 无条件方差有限的正则条件。\(\epsilon_t\) 常设为标准正态、标准化 Student-t 或广义误差分布(GED)。(有些文献用 \(h_t\) 记条件方差,写作 \(a_t=\sqrt{h_t}\epsilon_t\)。)
直观上:过去大的平方冲击带来大的条件方差 \(\sigma_t^2\),于是 \(a_t\) 倾向于取(绝对值)大的值——说"倾向",是因为大方差只是提高了出现大值的概率。所以在 ARCH 框架下,大冲击之后往往跟着大冲击,这正是波动聚集。
ARCH 效应不只出现在股票中。原书图 3.3 是德国马克/美元 10 分钟收益(1989-06-05—06-19,2488 个观测):收益本身无序列相关,平方序列的 PACF 却有很大的尖峰。
3.4.2 ARCH(1) 的性质
以 \(a_t=\sigma_t\epsilon_t\)、\(\sigma_t^2=\alpha_0+\alpha_1a_{t-1}^2\)(\(\alpha_0>0\),\(\alpha_1\ge0\))为例。
无条件均值:\(E(a_t)=E[E(a_t\mid F_{t-1})]=E[\sigma_tE(\epsilon_t)]=0\)。
无条件方差:
平稳时 \(E(a_t^2)=E(a_{t-1}^2)\),故
要求 \(0\le\alpha_1<1\)。
推导拆解:上面这串等号每一步用了什么。 第一个等号:\(E(a_t)=0\),所以方差就是二阶矩。 第二个等号:全期望公式,先在给定过去 \(F_{t-1}\) 时求期望,再对过去求期望。 第三个等号:给定过去,\(\sigma_t\) 是已知的数,\(E(a_t^2\mid F_{t-1})=\sigma_t^2E(\epsilon_t^2)=\sigma_t^2=\alpha_0+\alpha_1a_{t-1}^2\)。 第四个等号:期望是线性的,常数的期望是它自己。 最后用平稳性把 \(E(a_t^2)\) 和 \(E(a_{t-1}^2)\) 看成同一个未知数 \(V\),解方程 \(V=\alpha_0+\alpha_1V\)。这和第 02a 章求 AR(1) 均值的手法一模一样。 数值:Intel 的 \(\alpha_0=0.0111\)、\(\alpha_1=0.356\),\(V=0.0111/0.644=0.0172\),月标准差约 13%。
四阶矩。设 \(\epsilon_t\) 标准正态,则 \(E(a_t^4\mid F_{t-1})=3[E(a_t^2\mid F_{t-1})]^2=3(\alpha_0+\alpha_1a_{t-1}^2)^2\)。若 \(a_t\) 四阶平稳,记 \(m_4=E(a_t^4)\):
解得
两个含义:
- (a) 四阶矩为正有限要求 \(1-3\alpha_1^2>0\),即 \(0\le\alpha_1^2<1/3\);
- (b) 无条件峰度
\[\frac{E(a_t^4)}{[\operatorname{Var}(a_t)]^2}=3\,\frac{\alpha_0^2(1+\alpha_1)}{(1-\alpha_1)(1-3\alpha_1^2)}\cdot\frac{(1-\alpha_1)^2}{\alpha_0^2}=3\,\frac{1-\alpha_1^2}{1-3\alpha_1^2}>3 .\]
超额峰度为正,尾部比正态厚。也就是说,即使条件分布是正态的,ARCH(1) 冲击的无条件分布也是厚尾的,比高斯白噪声更容易产生"异常值"——这与实证事实一致,也正是第 01 章"正态尺度混合产生厚尾"的动态版本。这些性质对一般 ARCH 同样成立,只是公式更复杂。
推导拆解:\(m_4\) 那一行的中间步骤。 第一步:给定过去,\(a_t=\sigma_t\epsilon_t\) 是方差为 \(\sigma_t^2\) 的正态,正态四阶矩是方差平方的 3 倍,故 \(E(a_t^4\mid F_{t-1})=3\sigma_t^4=3(\alpha_0+\alpha_1a_{t-1}^2)^2\)。 第二步:展开平方 \((\alpha_0+\alpha_1a_{t-1}^2)^2=\alpha_0^2+2\alpha_0\alpha_1a_{t-1}^2+\alpha_1^2a_{t-1}^4\),再取无条件期望,\(E(a_{t-1}^2)=\alpha_0/(1-\alpha_1)\),\(E(a_{t-1}^4)=m_4\)(四阶平稳)。 第三步:\(m_4\) 出现在等式两边,移项得 \(m_4(1-3\alpha_1^2)=3\alpha_0^2(1+\alpha_1)/(1-\alpha_1)\)。若 \(3\alpha_1^2\ge1\),左边系数非正而右边为正,方程无正解,即四阶矩无穷大。 数值:\(\alpha_1=0.356\) 时峰度 \(=3(1-0.127)/(1-0.380)\approx4.23\),超额峰度 1.23(练习 1);\(\alpha_1=0.5\) 时 \(3\times0.75/0.25=9\);\(\alpha_1\ge0.577\) 时四阶矩不存在。 白话解释:为什么条件正态还会厚尾。可以把 ARCH 想成每天从一个"不同宽度"的正态里抽样,宽度由昨天的冲击决定。平静期抽自窄正态,动荡期抽自宽正态,把所有日子混在一起看,中间更尖(平静期很多)、尾巴更厚(动荡期偶尔抽出极端值)。这就是第 01 章 1.4.3 节"超额峰度 \(=3\operatorname{Var}(V)/[E(V)]^2\)"的动态版本,这里的随机方差 \(V\) 就是 \(\sigma_t^2\)。
正性条件的放松。\(\alpha_i\ge0\) 只是为了保证 \(\sigma_t^2>0\)。更自然的写法是
\(\mathbf A_{m,t-1}=(a_{t-1},\dots,a_{t-m})'\),\(\boldsymbol\Omega\) 为 \(m\times m\) 非负定矩阵。ARCH(\(m\)) 相当于要求 \(\boldsymbol\Omega\) 对角,是一般二次函数的节约近似。第 03b 章的随机系数模型(CHARMA、RCA)可以实现 (3.6)。
3.4.3 ARCH 的弱点
- 依赖平方冲击,假定正负冲击对波动的影响相同;而实际中资产价格对正负冲击反应不同。
- 约束严格:ARCH(1) 若要四阶矩有限,需 \(\alpha_1^2\in[0,1/3)\);高阶 ARCH 的约束更复杂,限制了高斯 ARCH 刻画超额峰度的能力。
- 不提供理解波动来源的新见解,只是机械地描述条件方差的行为。
- 对孤立的大冲击反应缓慢,容易高估波动率。
3.4.4 建立 ARCH 模型
定阶:看 \(a_t^2\) 的 PACF。理由一:\(a_t^2\) 是 \(\sigma_t^2\) 的无偏估计(单个值不是有效估计,但对定阶有参考价值),所以 \(a_t^2\) 与 \(a_{t-1}^2,\dots,a_{t-m}^2\) 的关系类似 AR(\(m\))。理由二更严格:令 \(\eta_t=a_t^2-\sigma_t^2\),可以证明 \(\{\eta_t\}\) 是零均值、不相关的序列,于是 ARCH(\(m\)) 可改写为
这是 \(a_t^2\) 的 AR(\(m\)),只是 \(\eta_t\) 不是 iid(不同分布)。所以 LS 估计一致但不有效,小样本时 PACF 可能不灵敏。
推导拆解:为什么 \(\eta_t=a_t^2-\sigma_t^2\) 零均值且不相关。 写成 \(\eta_t=\sigma_t^2(\epsilon_t^2-1)\)。给定过去,\(\sigma_t^2\) 已知,而 \(E(\epsilon_t^2-1)=0\),所以 \(E(\eta_t\mid F_{t-1})=0\)。这一条就是"鞅差"的定义。 不相关:对 \(j\ge1\),\(\eta_{t-j}\) 在 \(t-1\) 时已知,所以 \(E(\eta_t\eta_{t-j})=E[\eta_{t-j}E(\eta_t\mid F_{t-1})]=E[\eta_{t-j}\cdot0]=0\)。这一步用的是"已知的量可以提到条件期望外面"。 不独立:\(\operatorname{Var}(\eta_t\mid F_{t-1})=\sigma_t^4\operatorname{Var}(\epsilon_t^2)=2\sigma_t^4\)(正态时),随过去变化。所以 \(\eta_t\) 自身也有"波动聚集",这就是 LS 估计不有效的原因:高波动期的观测噪声大,却和低波动期的观测拿到同样的权重。
估计:条件极大似然。
正态新息。似然为
初始项 \(f(a_1,\dots,a_m)\) 形式复杂,大样本时通常略去,得到条件似然。去掉常数后的条件对数似然为
\(\sigma_t^2\) 由 (3.5) 递推计算。这就是第 01 章 (1.18) 的直接应用。
标准化 Student-t 新息。设 \(x_v\) 为自由度 \(v\) 的 t 变量,\(\operatorname{Var}(x_v)=v/(v-2)\)(\(v>2\)),令 \(\epsilon_t=x_v/\sqrt{v/(v-2)}\) 使方差为 1,其密度为
由 \(a_t=\sigma_t\epsilon_t\) 变量替换(雅可比因子 \(1/\sigma_t\)),条件似然为
\(v\) 可以预先指定(常取 4–8)或与其他参数联合估计。\(v\) 预设时,条件对数似然为
联合估计 \(v\) 时还要加上 \((T-m)\{\ln\Gamma[(v+1)/2]-\ln\Gamma(v/2)-0.5\ln[(v-2)\pi]\}\)。
偏 Student-t 新息(skew-Student-t)。收益分布还可能偏斜。Fernández & Steel(1998)给出了一种为任何关于 0 对称的单峰连续分布引入偏度的方法,Lambert & Laurent(2001)将其用于 (3.7),得标准化偏 t 分布:
\(f(\cdot\mid v)\) 是 (3.7) 的密度,\(\xi\) 为偏度参数,\(\xi^2\) 等于众数以上与以下的概率质量之比;\(\xi=1\) 时退化为对称 t。\(\varpi\)、\(\varrho\) 是使分布均值为 0、方差为 1 的平移与尺度常数。
广义误差分布(GED):
\(v=2\) 时为正态,\(v<2\) 时厚尾。(R 的 fGarch 包还提供偏正态、偏 GED;Python 的 arch 包提供 normal、t、skewt、ged。)
模型检验。标准化残差 \(\tilde a_t=a_t/\sigma_t\) 应当是 iid 序列。用 \(\tilde a_t\) 的 Ljung–Box 检验均值方程是否充分,用 \(\tilde a_t^2\) 的 Ljung–Box 检验波动率方程是否充分;用偏度、峰度和 QQ 图检验分布假设。
预测。与 AR 模型类似地递推。以 \(h\) 为原点:
一般地
其中 \(\ell-i\le0\) 时 \(\sigma_h^2(\ell-i)=a_{h+\ell-i}^2\)。原理是 \(E(a_{h+j}^2\mid F_h)=\sigma_h^2(j)\)。
3.4.5 例子
例 3.1 Intel 月对数收益(1973–2008,\(T=432\))。\(r_t^2\) 的 PACF 提示 ARCH(3)。正态新息下:
标准误依次为 0.0057、0.0010、0.0757、0.0480、0.0688;\(\alpha_2,\alpha_3\) 在 5% 水平不显著,简化为 ARCH(1):
标准误 0.0053、0.0010、0.0761,均高度显著。标准化残差 \(Q(10)=12.64\)(p=0.24),\(\tilde a_t^2\) 的 \(Q(10)=14.75\)(p=0.14),5% 水平下模型充分。几点性质:
- 月期望对数收益约 1.26%(包括互联网泡沫破灭后的时期仍如此之高);
- \(\hat\alpha_1^2=0.356^2=0.127<1/3\),四阶矩存在;
- 无条件标准差 \(\sqrt{0.0111/(1-0.356)}\approx0.1315\);
- 模型可用于预测月波动。
t 新息:
标准误 0.0053、0.0017、0.1120,估计自由度 6.01(标准误 1.50);无条件标准差 \(\sqrt{0.0120/(1-0.2845)}\approx0.1295\)。\(\tilde a_t\) 的 \(Q(12)=14.88\)(p=0.25),均值方程充分;但 \(\tilde a_t^2\) 的 \(Q(12)=35.42\)(p=0.0004),波动方程在 1% 水平不充分(\(\tilde a_t^2\) 在滞后 12 的 ACF 较大,0.188)。比较两个模型:(a) 用厚尾分布会降低 ARCH 系数(0.356 → 0.285),因为一部分"大冲击"被分布的厚尾解释了,不再需要靠波动上升来解释;(b) 本例两个模型差别不大。更合适的模型是 GARCH(1,1)。
用 R 的 fGarch 包得到类似结果:ARCH(1) 的 1–5 步标准差预测为 0.1098、0.1256、0.1311、0.1331、0.1339,向无条件标准差收敛。改拟合 GARCH(1,1):\(\mu=0.01073\),\(\alpha_0=0.000954\),\(\alpha_1=0.0874\),\(\beta_1=0.8512\);标准化残差 \(Q(10)=8.27\)(p=0.60),平方的 \(Q(10)=0.99\)(p≈1.0),LM 检验 \(TR^2=10.70\)(p=0.55)——GARCH(1,1) 更充分。
软件陷阱:不同软件对阶数的记法不同。原书提到 Ox 的 G@RCH 中 ARCH(1) 写作 GARCH(0,1),与 fGarch 顺序相反;本书 GARCH(\(m,s\)) 中 \(m\) 是 ARCH 阶、\(s\) 是 GARCH 阶;Python
arch包中p是 ARCH 阶、q是 GARCH 阶。
例 3.2 马克/美元 10 分钟收益。收益无序列相关,\(a_t^2\) 的 PACF 在滞后 1、3 有大尖峰,设定 ARCH(3)。条件高斯似然估计:\(r_t=0.0018+\sigma_t\epsilon_t\),
全部 5% 显著,标准化残差检验显示模型充分。
3.5 GARCH 模型
3.5.1 定义
ARCH 常需要很多参数才能描述波动的持续性(例如下面例 3.3 的 S&P 500 月超额收益需要 ARCH(9))。Bollerslev(1986)把它推广为广义 ARCH。设 \(a_t=r_t-\mu_t\),GARCH(\(m,s\)) 模型为
\(\epsilon_t\) iid、均值 0、方差 1;\(\alpha_0>0\),\(\alpha_i\ge0\),\(\beta_j\ge0\),\(\sum_{i=1}^{\max(m,s)}(\alpha_i+\beta_i)<1\)(约定 \(i>m\) 时 \(\alpha_i=0\),\(j>s\) 时 \(\beta_j=0\))。最后一个条件保证无条件方差有限,同时条件方差随时间变化。\(s=0\) 时即 ARCH(\(m\))。\(\alpha_i\) 称 ARCH 参数,\(\beta_j\) 称 GARCH 参数。
3.5.2 ARMA 表示
令 \(\eta_t=a_t^2-\sigma_t^2\),则 \(\sigma_{t-i}^2=a_{t-i}^2-\eta_{t-i}\)。代入 (3.14):
\(\{\eta_t\}\) 是鞅差序列(martingale difference sequence):\(E(\eta_t)=0\),\(\operatorname{Cov}(\eta_t,\eta_{t-j})=0\ (j\ge1)\),但一般不是 iid。所以 GARCH 就是 \(a_t^2\) 的 ARMA 模型,AR 系数为 \(\alpha_i+\beta_i\),MA 系数为 \(\beta_j\)。
推导拆解:GARCH(1,1) 的情形逐步代入。 原式:\(\sigma_t^2=\alpha_0+\alpha_1a_{t-1}^2+\beta_1\sigma_{t-1}^2\)。 第一步:左边用 \(\sigma_t^2=a_t^2-\eta_t\) 替换,右边的 \(\sigma_{t-1}^2\) 用 \(a_{t-1}^2-\eta_{t-1}\) 替换:\(a_t^2-\eta_t=\alpha_0+\alpha_1a_{t-1}^2+\beta_1(a_{t-1}^2-\eta_{t-1})\)。 第二步:整理得 \(a_t^2=\alpha_0+(\alpha_1+\beta_1)a_{t-1}^2+\eta_t-\beta_1\eta_{t-1}\)。 这正是 \(a_t^2\) 的 ARMA(1,1):AR 系数 \(\phi_1=\alpha_1+\beta_1\),MA 系数 \(\theta_1=\beta_1\)(按本书减号约定)。于是平稳条件 \(|\phi_1|<1\) 就是 \(\alpha_1+\beta_1<1\),均值 \(\phi_0/(1-\phi_1)\) 就是长期方差 \(\alpha_0/(1-\alpha_1-\beta_1)\)。 金融直觉:\(a_t^2\) 是"今天实际实现的方差"(一个噪声很大的观测),\(\sigma_t^2\) 是"昨天对今天方差的预期",\(\eta_t\) 是两者之差,即"方差的意外"。这和"实际收益 = 预期收益 + 意外"是同一种分解。 第 02a 章的全部工具(平稳条件、均值、预测)都可以搬过来。例如由 ARMA 的均值公式,
3.5.3 GARCH(1,1)
- 波动聚集:大的 \(a_{t-1}^2\) 或 \(\sigma_{t-1}^2\) 导致大的 \(\sigma_t^2\),大冲击后跟着大冲击。
- 厚尾:若 \(1-2\alpha_1^2-(\alpha_1+\beta_1)^2>0\),则
\[\frac{E(a_t^4)}{[E(a_t^2)]^2}=\frac{3[1-(\alpha_1+\beta_1)^2]}{1-(\alpha_1+\beta_1)^2-2\alpha_1^2}>3,\]尾部比正态厚(推导见 3.5.8 节)。
- 用很少的参数描述了波动的演化。
预测。1 步预测直接由定义得到:
多步时利用 \(a_t^2=\sigma_t^2\epsilon_t^2\) 把波动方程改写为
令 \(t=h+1\),由于 \(E(\epsilon_{h+1}^2-1\mid F_h)=0\),
一般地
这与 AR 多项式为 \(1-(\alpha_1+\beta_1)B\) 的 ARMA(1,1) 的预测递推相同。反复代入得
多步波动预测收敛到无条件方差(若存在),收敛速度由持续性(persistence)\(\alpha_1+\beta_1\) 决定。当前波动偏离长期水平的部分,每过一期乘以 \(\alpha_1+\beta_1\),半衰期为 \(\ln0.5/\ln(\alpha_1+\beta_1)\)。日频数据中 \(\alpha_1+\beta_1\) 常在 0.98–0.99,半衰期一两个月。
推导拆解:(3.17) 和闭式解的来历。 第一步:\(\sigma_{t+1}^2=\alpha_0+\alpha_1a_t^2+\beta_1\sigma_t^2\)。把 \(a_t^2\) 写成 \(\sigma_t^2\epsilon_t^2=\sigma_t^2+\sigma_t^2(\epsilon_t^2-1)\),合并得原文那一行。 第二步:对 \(\ell\ge2\) 的预测,\(\epsilon_{h+\ell-1}\) 在原点 \(h\) 时还没发生,\(E(\epsilon^2-1)=0\),最后一项消失;而 \(E(\sigma_{h+\ell-1}^2\mid F_h)\) 就是 \(\sigma_h^2(\ell-1)\)。于是得到一阶递推 (3.17)。 第三步:记长期方差 \(V_L=\alpha_0/(1-\alpha_1-\beta_1)\),递推可改写为 \(\sigma_h^2(\ell)-V_L=(\alpha_1+\beta_1)[\sigma_h^2(\ell-1)-V_L]\)(两边同减 \(V_L\) 并利用 \(\alpha_0=(1-\alpha_1-\beta_1)V_L\) 验证即可)。偏离每步乘以持续性,反复代入就是闭式解。 数值:\(\alpha_1+\beta_1=0.98\),当前日方差是长期水平的 2 倍(超出 1 倍),10 天后超出 \(0.98^{10}\approx0.82\) 倍,34 天后约 0.5 倍,100 天后约 0.13 倍。 金融直觉:期权定价需要的是到期前的平均方差 \(\frac1\ell\sum_{j=1}^\ell\sigma_h^2(j)\)。当前波动高于长期水平时,短期期权的隐含波动应高于长期期权,GARCH 由此给出一条向长期水平回归的波动率期限结构。
弱点。GARCH 的文献极多(Bollerslev–Chou–Kroner 1992;Bollerslev–Engle–Nelson 1994)。它和 ARCH 一样对正负冲击反应相同;高频数据研究还表明,即使用标准化 t 新息,GARCH 的尾部仍然偏短(见 3.5.8 节)。
3.5.4 实际建模:例 3.3 S&P 500 月超额收益
GARCH 的定阶不容易,实践中多用低阶 GARCH(1,1)、(2,1)、(1,2)。只要假设波动初值已知,条件 MLE 仍然适用:GARCH(1,1) 中把 \(\sigma_1^2\) 固定后即可递推,常用 \(a_t\) 的样本方差作初值。诊断仍用 \(\tilde a_t=a_t/\sigma_t\) 及其平方。
数据为 1926–1991 年 S&P 500 月超额收益,792 个观测。\(r_t\) 在滞后 1、3 有序列相关,\(r_t^2\) 的 PACF 显示强的线性相依。MA(3) 拟合为 \(r_t=0.0062+a_t+0.0944a_{t-1}-0.1407a_{t-3}\),为简便改用 AR(3):
AR(3)–GARCH(1,1) 联合估计:
隐含无条件方差 \(0.000084/(1-0.8523-0.1213)=0.00317\),与 (3.18) 的 0.00333 接近。值得注意的是:加入 GARCH 后三个 AR 系数都不显著了——波动建模改变了均值方程的推断(高波动期的大收益在加权后影响下降)。去掉 AR 项:
标准误:均值 0.0015;波动方程 0.000024、0.0197、0.0190。无条件方差 0.00314。\(\tilde a_t\) 的 \(Q(12)=11.99\)(p=0.45)、\(Q(24)=28.52\)(p=0.24);\(\tilde a_t^2\) 的 \(Q(12)=13.11\)(p=0.36)、\(Q(24)=26.45\)(p=0.33)。模型充分。
\(\hat\alpha_1+\hat\beta_1=0.9772\),接近 1。这在实践中非常常见,也引出了施加约束 \(\alpha_1+\beta_1=1\) 的 IGARCH 模型(3.6 节)。
预测:\(\sigma_h^2(1)=0.000086+0.1216a_h^2+0.8511\sigma_h^2\),多步用 (3.17)。原书表 3.1(原点 \(h=792\),1991 年 12 月):收益预测都是 0.0076;条件标准差的 1–5 步预测为 0.0536、0.0537、0.0537、0.0538、0.0538,\(\infty\) 步为 \(\sqrt{0.00314}=0.0560\)。
t 新息(自由度固定为 5):
标准误 0.0015、\(0.51\times10^{-4}\)、0.0296、0.0371;\(\hat\alpha_1+\hat\beta_1\approx0.955\)。\(\tilde a_t\) 的 \(Q(10)=11.38\)(p=0.33),\(\tilde a_t^2\) 的 \(Q(10)=10.48\)(p=0.40),充分。若同时估计自由度(原书 (3.21)),系数与 (3.20) 相近,自由度估计为 7.02(标准误 1.78),5% 水平下不能拒绝 \(v=5\)。
3.5.5 预测评价的陷阱
波动不可观测,比较模型的预测能力很难。一些研究用样本外的 \(a_{h+\ell}^2\) 与预测 \(\sigma_h^2(\ell)\) 做比较,常常得到很低的相关(很低的 \(R^2\)),于是断言 GARCH 预测能力差。这并不奇怪:虽然 \(E(a_{h+1}^2\mid F_h)=\sigma_{h+1}^2\),\(a_{h+1}^2\) 是无偏的,但单个观测无法准确估计方差——\(a_{h+1}^2=\sigma_{h+1}^2\epsilon_{h+1}^2\),而 \(\epsilon^2\) 在正态下的方差是 2,噪声比信号还大。严格说这种评价方法并不恰当。Andersen & Bollerslev(1998)主张用已实现波动率(日内收益平方和,见第 03b 章)作为真实波动的代理,模型的预测能力随之大幅"提高"。
3.5.6 两步估计法
基于 ARMA 表示 (3.15) 的简便方法:第一步忽略 ARCH 效应,用第 02a 章的方法估计均值方程,得残差 \(a_t\);第二步把 \(\{a_t^2\}\) 当作观测序列,用极大似然拟合 ARMA 模型 (3.15),得 AR 系数 \(\hat\phi_i\) 与 MA 系数 \(\hat\theta_i\),再由 \(\phi_i=\alpha_i+\beta_i\)、\(\theta_i=\beta_i\) 反解:
其统计性质没有被严格研究过,但经验上中大样本时近似良好。例 3.3 中,SCA 条件 MLE 给出 \(r_t=0.0061+a_t\),\(a_t^2=0.00014+0.9583a_{t-1}^2+\eta_t-0.8456\eta_{t-1}\),于是 \(\hat\beta_1=0.8456\),\(\hat\alpha_1=0.9583-0.8456=0.1127\),与 (3.19)、(3.20) 非常接近。两步法的价值在于给出好的初值,以及在没有专门 GARCH 软件时快速得到近似结果。
3.5.7 GARCH 模型的峰度
(本节对应原书 3.16 节。)波动估计的不确定性常被忽视;要评估它,需要知道模型的峰度。考虑 GARCH(1,1),\(E(\epsilon_t)=0\),\(\operatorname{Var}(\epsilon_t)=1\),\(E(\epsilon_t^4)=K_\epsilon+3\),\(K_\epsilon\) 为新息的超额峰度。则
把波动方程平方:
取期望,利用 \(E(a_{t-1}^4)=(K_\epsilon+3)E(\sigma^4)\)、\(E(\sigma_{t-1}^2a_{t-1}^2)=E(\sigma^4)\) 和平稳性:
注意 \(1-\alpha_1^2(K_\epsilon+3)-\beta_1^2-2\alpha_1\beta_1=1-\alpha_1^2(K_\epsilon+2)-(\alpha_1+\beta_1)^2\),于是
要求 \(1-\alpha_1^2(K_\epsilon+2)-(\alpha_1+\beta_1)^2>0\)。\(a_t\) 的超额峰度为
高斯新息(\(K_\epsilon=0\)):
含义:(a) 峰度存在需 \(1-2\alpha_1^2-(\alpha_1+\beta_1)^2>0\);(b) \(\alpha_1=0\) 时 \(K_a^{(g)}=0\),没有厚尾——是 ARCH 参数 \(\alpha_1\) 而不是 \(\beta_1\) 产生厚尾。
非高斯新息:可以整理成一个漂亮的形式
这个结果源自 George C. Tiao(见 Bai–Russell–Tiao 2003),对所有峰度存在的 GARCH 模型成立。例如 ARCH(1)(\(\beta_1=0\)):\(K_a^{(g)}=6\alpha_1^2/(1-3\alpha_1^2)\),\(K_a=\dfrac{(K_\epsilon+3)(1-\alpha_1^2)}{1-(K_\epsilon+3)\alpha_1^2}-3\),也满足上式。
结论:\(\alpha_1=0\) 时 \(K_a=K_\epsilon\)(与新息同尾);\(\alpha_1>0\) 时 \(K_a^{(g)}>0\),\(a_t\) 比新息更厚尾,且 \(K_\epsilon\) 与 \(K_a^{(g)}\) 相互放大。
白话解释:为什么是 \(\alpha_1\) 而不是 \(\beta_1\) 产生厚尾。 厚尾来自"方差本身在随机波动"(第 01 章:超额峰度 \(\propto\operatorname{Var}(\sigma_t^2)\))。在 GARCH(1,1) 里,新的随机性只能通过 \(\alpha_1a_{t-1}^2\) 这一项进入 \(\sigma_t^2\);\(\beta_1\sigma_{t-1}^2\) 只是把已有的方差平滑地往后传。如果 \(\alpha_1=0\),\(\sigma_t^2\) 收敛到常数,方差不再随机,自然没有额外的厚尾。\(\beta_1\) 的作用是让 \(\alpha_1\) 注入的随机性持续更久,所以在峰度公式里它通过 \((\alpha_1+\beta_1)^2\) 放大 \(\alpha_1\) 的效果,而不是单独起作用。 数值感受:常见日频估计 \(\alpha_1=0.08\)、\(\beta_1=0.90\),高斯新息下 \(K_a^{(g)}=6(0.0064)/(1-0.0128-0.9604)=0.0384/0.0268\approx1.43\)。实证日收益超额峰度常在 5–10,说明光靠 GARCH 动态解释不了全部厚尾,还需要 t 之类的厚尾新息,两者相乘放大(量化实战中 t(6) 新息时理论值达 28)。
标准化 Student-t(\(v>4\)):\(E(\epsilon_t^4)=6/(v-4)+3\),\(K_\epsilon=6/(v-4)\)。代入得
峰度存在需 \(1-2\alpha_1^2(v-1)/(v-4)-(\alpha_1+\beta_1)^2>0\)。这也是本章常把自由度预设为 5 附近的部分原因:自由度太小,四阶矩不存在,峰度类诊断失去意义。
3.6 求和 GARCH(IGARCH)与 RiskMetrics
若 (3.15) 中 \(a_t^2\) 的 AR 多项式有单位根,就得到 IGARCH(integrated GARCH,单位根 GARCH)。与 ARIMA 类似,过去平方冲击 \(\eta_{t-i}\) 对 \(a_t^2\) 的影响是持久的。IGARCH(1,1):
S&P 500 月超额收益:\(r_t=0.0067+a_t\),\(\sigma_t^2=0.000119+0.8059\sigma_{t-1}^2+0.1941a_{t-1}^2\)(标准误 0.0017、0.000013、0.0144)。参数与 GARCH(1,1) 接近,但无条件方差不存在,这对超额收益序列很难解释。理论上 IGARCH 现象可能由波动的偶发水平移动(level shifts)引起——若波动的长期水平在样本中跳变过几次,用单一 GARCH 拟合会得到接近 1 的持续性。持续性的真正来源值得深究。
\(\alpha_1+\beta_1=1\) 时由 (3.17) 得
\(\sigma_h^2(1)\) 的影响永久存在,预测是斜率为 \(\alpha_0\) 的直线。Nelson(1990)证明 IGARCH 下(\(\alpha_0=0\) 时)\(\sigma_t^2\) 是鞅(鞅:明天的条件期望等于今天的值,即"最好的预测就是现值"),模型在一定条件下严平稳但非弱平稳(前两阶矩不存在)。
金融直觉:EWMA 与 GARCH 的取舍,可以用"有没有长期锚"来理解。GARCH 有一个锚 \(V_L\),波动高时预测会往下回落,波动低时往上回升;EWMA 没有锚,今天的波动就是对未来任何期限的最好预测。 实际后果:2020 年 3 月日波动飙升到 5% 时,EWMA 的 10 日 VaR 按 \(5\%\times\sqrt{10}\) 计算;GARCH 会预期波动逐步回落,给出更小的 10 日 VaR(练习 7)。平静期则相反,EWMA 会低估未来的长期风险。短期(1 日)风险监控两者几乎一样(量化实战中相关系数 0.993),差别在期限越长越明显。 EWMA 的"有效记忆长度"约为 \(1/(1-\lambda)\):\(\lambda=0.94\) 时约 17 天,相当于大致用最近三周的数据估波动。
\(\alpha_0=0\) 的特例:RiskMetrics。此时所有步长的预测都等于 \(\sigma_h^2(1)\)——这正是 J.P. Morgan RiskMetrics 的波动率模型(第 07a 章 VaR)。它也是 \(\{a_t^2\}\) 的指数平滑(指数加权移动平均,EWMA):
\(\beta_1\) 为折扣因子(原书此处 \(a_{t-3}^3\) 为排印错误,应为 \(a_{t-3}^2\))。RiskMetrics 对日数据常取 \(\beta_1=0.94\)(即"\(\lambda=0.94\)")。EWMA 简单、无需估计、对新信息反应快,是业界最常用的波动估计之一;代价是它没有均值回复,多步预测不收敛,且"\(\sqrt h\) 规则"在其下精确成立(\(h\) 日方差 \(=h\sigma_h^2(1)\)),这在波动处于极端水平时会高估或低估长周期风险。
3.7 GARCH-M:波动进入均值方程
证券收益可能依赖其波动——高风险要求高回报。GARCH in the mean(GARCH-M)把条件方差放入均值方程:
\(c\) 称风险溢价参数(risk premium parameter),\(c>0\) 表示收益与波动正相关。其他设定有 \(r_t=\mu+c\sigma_t+a_t\) 与 \(r_t=\mu+c\ln\sigma_t^2+a_t\)。
一个容易忽视的含义:(3.23) 意味着 \(r_t\) 有序列相关,因为 \(\sigma_t^2\) 本身序列相关,并通过 \(c\sigma_t^2\) 传入收益。这是某些历史股票收益存在序列相关的另一个可能原因。
例:S&P 500 月超额收益(1926-01—1991-12),高斯 GARCH(1,1)-M:
均值方程标准误 0.0023、0.818;波动方程 \(2.51\times10^{-5}\)、0.0205、0.0196。风险溢价为正,但 5% 水平不显著(\(t=1.09/0.818\approx1.33\))。风险–收益权衡在时间序列上难以检测,这在文献中是常见结论。风险溢价的思想也可以放到其他 GARCH 类模型中。
量化实战
本章内容在量化中的用途
- 风险模型与 VaR。日度 VaR、ES、保证金和风险预算的核心输入是下一期(或未来 \(h\) 期)的条件波动预测。GARCH 给出带均值回复的多步预测;EWMA(RiskMetrics)是 IGARCH 的无截距特例,简单稳健;t 或偏 t 新息改善尾部。
- 波动率目标与仓位管理。按 \(w_t=\sigma^*/\hat\sigma_{t+1}\) 缩放仓位(volatility targeting),或在风险平价中按预测波动分配风险,可以稳定组合波动、降低厚尾。持续性 \(\alpha_1+\beta_1\) 决定波动冲击的半衰期,也就决定了仓位调整的节奏。
- 期权与波动交易。Black–Scholes 需要 \(\sigma\);GARCH 预测的未来波动与隐含波动之差(波动风险溢价)是卖方波动策略的重要收益来源,GARCH 多步预测的期限结构可以与隐含波动的期限结构对照。
- 改进均值推断。例 3.3 显示,忽略条件异方差会让均值方程里本不存在的 AR 项显得显著——在信号研究中,用 GARCH 加权(或 HAC 标准误)检查信号显著性能避免被高波动期主导。
- 模型评价。不要用 \(a_{t+1}^2\) 计算 \(R^2\) 来评价波动模型;应使用已实现波动作代理,或用对噪声稳健的损失函数(如 QLIKE:\(\hat\sigma^{-2}RV+\ln\hat\sigma^2\))。
Python 示例:从 ARCH 检验到波动率目标
下面模拟 4000 天 GARCH(1,1)-t 日收益(\(\alpha_0=0.02\)、\(\alpha_1=0.08\)、\(\beta_1=0.90\)、\(v=6\),单位为百分比),依次完成:ARCH 效应检验、手写条件 MLE、用 arch 包比较 ARCH(1) 与 GARCH(1,1)(正态、t)、多步预测与解析公式对照、理论峰度、EWMA 与波动率目标。
import warnings; warnings.filterwarnings("ignore", category=FutureWarning)
import numpy as np
import pandas as pd
from scipy import optimize, stats
from statsmodels.stats.diagnostic import acorr_ljungbox, het_arch
from arch import arch_model
rng = np.random.default_rng(3)
# ---------- 1. 模拟 GARCH(1,1)-t 日收益(单位:%) ----------
T, mu, a0, a1, b1, nu = 4000, 0.05, 0.02, 0.08, 0.90, 6
z = rng.standard_t(nu, T + 500) / np.sqrt(nu / (nu - 2)) # 标准化 t:方差 1
r, s2 = np.zeros(T + 500), np.zeros(T + 500)
s2[0] = a0 / (1 - a1 - b1)
for t in range(1, T + 500):
s2[t] = a0 + a1 * (r[t-1] - mu) ** 2 + b1 * s2[t-1]
r[t] = mu + np.sqrt(s2[t]) * z[t]
r = pd.Series(r[500:])
# ---------- 2. 检验 ARCH 效应 ----------
at = r - r.mean()
print("收益 Q(12) p=%.3f" % acorr_ljungbox(at, lags=[12])["lb_pvalue"].iloc[0])
print("平方 Q(12)=%.1f p=%.2e (McLeod-Li)" % tuple(acorr_ljungbox(at**2, lags=[12]).iloc[0]))
lm, lm_p, F, F_p = het_arch(at, nlags=12)
print("Engle LM: TR^2=%.1f p=%.2e | F=%.2f" % (lm, lm_p, F))
# ---------- 3. 手写高斯 GARCH(1,1) 条件 MLE ----------
x = r.values
def negll(p):
m, w, al, be = p
if w <= 0 or al < 0 or be < 0 or al + be >= 1:
return 1e10
e = x - m
h = np.empty_like(e); h[0] = e.var() # 初值取样本方差
for t in range(1, len(e)):
h[t] = w + al * e[t-1] ** 2 + be * h[t-1]
return 0.5 * np.sum(np.log(h) + e ** 2 / h) # 去掉常数的负对数似然
opt = optimize.minimize(negll, [x.mean(), 0.05, 0.1, 0.8], method="Nelder-Mead",
options={"maxiter": 4000, "xatol": 1e-6, "fatol": 1e-6})
print("\n手写 MLE (mu, a0, a1, b1):", opt.x.round(4))
# ---------- 4. arch 包:ARCH(1)、GARCH(1,1)-正态、GARCH(1,1)-t ----------
fits = {"ARCH(1)-N": arch_model(r, p=1, q=0, dist="normal").fit(disp="off"),
"GARCH(1,1)-N": arch_model(r, p=1, q=1, dist="normal").fit(disp="off"),
"GARCH(1,1)-t": arch_model(r, p=1, q=1, dist="t").fit(disp="off")}
for k, f in fits.items():
sr = f.std_resid.dropna()
q2 = acorr_ljungbox(sr**2, lags=[10])["lb_pvalue"].iloc[0]
print("%-13s %s LL=%.1f BIC=%.1f std_resid^2 Q(10) p=%.3f exkurt=%.2f"
% (k, f.params.round(4).to_dict(), f.loglikelihood, f.bic, q2, stats.kurtosis(sr)))
g = fits["GARCH(1,1)-t"]
w, al, be = g.params["omega"], g.params["alpha[1]"], g.params["beta[1]"]
print("持续性 a1+b1=%.4f, 无条件方差=%.3f (真值 %.3f), 冲击半衰期=%.1f 天"
% (al + be, w / (1 - al - be), a0 / (1 - a1 - b1), np.log(0.5) / np.log(al + be)))
# ---------- 5. 多步预测:包输出 vs 解析公式 ----------
fc = g.forecast(horizon=250, reindex=False).variance.values[0]
h1 = fc[0]
ana = [w * (1 - (al + be) ** (l - 1)) / (1 - al - be) + (al + be) ** (l - 1) * h1 for l in range(1, 251)]
print("预测方差 l=1,5,20,250:", fc[[0, 4, 19, 249]].round(3), " 解析:", np.round(ana, 3)[[0, 4, 19, 249]])
# ---------- 6. 理论峰度 vs 样本峰度 ----------
Ke = 6 / (nu - 4) # 标准化 t 的超额峰度
Kg = 6 * a1**2 / (1 - 2 * a1**2 - (a1 + b1) ** 2) # 高斯新息时的超额峰度
Ka = (Ke + Kg + 5/6 * Ke * Kg) / (1 - Ke * Kg / 6)
print("理论超额峰度: 高斯新息 %.2f, t(6) 新息 %.2f; 样本 %.2f" % (Kg, Ka, stats.kurtosis(r)))
# ---------- 7. RiskMetrics EWMA 与波动率目标仓位 ----------
lam = 0.94
ewma = np.empty(T); ewma[0] = at.var()
for t in range(1, T):
ewma[t] = lam * ewma[t-1] + (1 - lam) * at.iloc[t-1] ** 2
garch_vol = g.conditional_volatility.values
target = 1.0 # 目标日波动 1%
pos = target / garch_vol # 仓位与预测波动成反比
raw, scaled = r.values, pos * r.values
print("EWMA 与 GARCH 条件波动相关系数 %.3f" % np.corrcoef(np.sqrt(ewma), garch_vol)[0, 1])
print("原始收益: 年化波动 %.1f%%, 超额峰度 %.2f | 波动目标后: 年化波动 %.1f%%, 超额峰度 %.2f"
% (raw.std() * np.sqrt(252), stats.kurtosis(raw), scaled.std() * np.sqrt(252), stats.kurtosis(scaled)))
关键输出:
收益 Q(12) p=0.095
平方 Q(12)=867.7 p=4.94e-178 (McLeod-Li)
Engle LM: TR^2=468.8 p=9.81e-93 | F=44.12
手写 MLE (mu, a0, a1, b1): [0.0385 0.0183 0.072 0.9115]
ARCH(1)-N {'mu': 0.0415, 'omega': 0.7912, 'alpha[1]': 0.3085} LL=-5716.6 BIC=11458.0 std_resid^2 Q(10) p=0.000 exkurt=3.84
GARCH(1,1)-N {'mu': 0.039, 'omega': 0.0185, 'alpha[1]': 0.0722, 'beta[1]': 0.9111} LL=-5449.7 BIC=10932.6 std_resid^2 Q(10) p=0.874 exkurt=1.84
GARCH(1,1)-t {'mu': 0.034, 'omega': 0.0153, 'alpha[1]': 0.0666, 'beta[1]': 0.9202, 'nu': 6.3112} LL=-5353.5 BIC=10748.5 std_resid^2 Q(10) p=0.890 exkurt=1.87
持续性 a1+b1=0.9869, 无条件方差=1.162 (真值 1.000), 冲击半衰期=52.4 天
预测方差 l=1,5,20,250: [0.761 0.781 0.85 1.147] 解析: [0.761 0.781 0.85 1.147]
理论超额峰度: 高斯新息 1.43, t(6) 新息 28.26; 样本 10.58
EWMA 与 GARCH 条件波动相关系数 0.993
原始收益: 年化波动 16.9%, 超额峰度 10.58 | 波动目标后: 年化波动 15.8%, 超额峰度 1.87
解读:
- "不相关但相依":收益 \(Q(12)\) 的 p=0.095,不能拒绝无相关;平方的 \(Q(12)=868\),LM 检验也极显著。
- 手写 MLE 与
arch包的正态 GARCH 结果一致(0.0183/0.072/0.9115 对 0.0185/0.0722/0.9111),说明包内部做的就是 3.4.4 节的条件似然最大化。 - ARCH(1) 不够:标准化残差平方仍有显著相关(p=0.000),这正是原书 Intel 例中从 ARCH 换到 GARCH(1,1) 的理由;ARCH(1) 的 \(\alpha_1=0.31\) 远大于真值 0.08,是它在用一个参数"硬撑"持续性。
- t 新息:对数似然提高约 96,BIC 明显更优,自由度估计 6.3(真值 6);持续性估计 0.987、无条件方差 1.16,略高于真值——持续性接近 1 时无条件方差的估计很不稳定,因为它等于 \(\alpha_0/(1-\alpha_1-\beta_1)\),分母微小的误差会被放大。
- 多步预测:包输出与 3.5.3 节的解析公式逐位一致;当前波动(0.76)低于长期水平,预测随步长单调上升、向无条件方差收敛。
- 峰度:在这组参数下,\(1-2\alpha_1^2(v-1)/(v-4)-(\alpha_1+\beta_1)^2=0.0076\),四阶矩"勉强存在",理论超额峰度高达 28,而 4000 个样本只估出 10.6——四阶矩接近不存在时,样本峰度极不可靠。这正是 3.5.7 节的警示:别把样本峰度当成精确的事实。
- EWMA 与 GARCH 的条件波动相关 0.993,日常风险监控中二者差别不大;差别主要在多步预测(EWMA 不均值回复)。
- 波动率目标:按 \(1/\hat\sigma_t\) 缩放仓位后,年化波动稳定在目标附近(15.8%,目标 \(1\%\times\sqrt{252}\approx15.9\%\)),超额峰度从 10.6 降到 1.9——因为缩放后的收益近似就是标准化残差 \(\epsilon_t\) 乘常数。这是波动率目标策略风险特征更好的根本原因。
本章小结
收益序列往往"不相关但不独立":平方或绝对收益有显著自相关,表现为波动聚集。建模框架是均值方程加波动率方程,先用 McLeod–Li 或 Engle LM 检验 ARCH 效应,再联合估计、用标准化残差及其平方诊断。ARCH(\(m\)) 用滞后平方冲击驱动条件方差,即使条件正态也产生厚尾,但需要很多参数且对正负冲击对称。GARCH(\(m,s\)) 是 \(a_t^2\) 的 ARMA,GARCH(1,1) 用三个参数就刻画了聚集、厚尾和均值回复:多步预测以持续性 \(\alpha_1+\beta_1\) 为速率收敛到无条件方差 \(\alpha_0/(1-\alpha_1-\beta_1)\)。实证中持续性常接近 1,极限情形 IGARCH 没有无条件方差,其无截距特例就是 RiskMetrics 的 EWMA。GARCH-M 把波动放入均值方程以检验风险溢价。GARCH 的峰度公式表明厚尾由 ARCH 参数 \(\alpha_1\) 与新息厚尾共同产生。评价波动预测不要用单期平方收益,而要用已实现波动等更精确的代理。
| 概念 | 公式 / 要点 |
|---|---|
| 模型结构 | \(r_t=\mu_t+a_t\),\(a_t=\sigma_t\epsilon_t\),\(\sigma_t^2=\operatorname{Var}(r_t\mid F_{t-1})\) |
| ARCH 效应检验 | \(a_t^2\) 的 Ljung–Box;LM:\(a_t^2\) 对 \(m\) 个滞后回归,\(TR^2\sim\chi^2_m\) |
| ARCH(\(m\)) | \(\sigma_t^2=\alpha_0+\sum_{i=1}^m\alpha_ia_{t-i}^2\) |
| ARCH(1) 矩 | \(\operatorname{Var}=\alpha_0/(1-\alpha_1)\);峰度 \(3(1-\alpha_1^2)/(1-3\alpha_1^2)\),需 \(\alpha_1^2<1/3\) |
| GARCH(\(m,s\)) | \(\sigma_t^2=\alpha_0+\sum\alpha_ia_{t-i}^2+\sum\beta_j\sigma_{t-j}^2\),\(\sum(\alpha_i+\beta_i)<1\) |
| ARMA 表示 | \(a_t^2=\alpha_0+\sum(\alpha_i+\beta_i)a_{t-i}^2+\eta_t-\sum\beta_j\eta_{t-j}\),\(\eta_t=a_t^2-\sigma_t^2\) |
| GARCH(1,1) 预测 | \(\sigma_h^2(\ell)=\alpha_0+(\alpha_1+\beta_1)\sigma_h^2(\ell-1)\to\alpha_0/(1-\alpha_1-\beta_1)\) |
| 持续性与半衰期 | \(\alpha_1+\beta_1\);半衰期 \(\ln0.5/\ln(\alpha_1+\beta_1)\) |
| 正态条件对数似然 | \(-\sum[\frac12\ln\sigma_t^2+\frac12a_t^2/\sigma_t^2]\) |
| t 条件对数似然 | \(-\sum[\frac{v+1}2\ln(1+\frac{a_t^2}{(v-2)\sigma_t^2})+\frac12\ln\sigma_t^2]\) |
| 两步估计 | \(a_t^2\) 拟合 ARMA:\(\hat\beta=\hat\theta\),\(\hat\alpha=\hat\phi-\hat\theta\) |
| IGARCH / EWMA | \(\sigma_t^2=\alpha_0+\beta_1\sigma_{t-1}^2+(1-\beta_1)a_{t-1}^2\);\(\alpha_0=0\) 即 RiskMetrics,\(\lambda=0.94\) |
| GARCH-M | \(r_t=\mu+c\sigma_t^2+a_t\),\(c\) 为风险溢价参数 |
| GARCH 峰度 | \(K_a^{(g)}=6\alpha_1^2/[1-2\alpha_1^2-(\alpha_1+\beta_1)^2]\);\(K_a=\dfrac{K_\epsilon+K_a^{(g)}+\frac56K_\epsilon K_a^{(g)}}{1-\frac16K_\epsilon K_a^{(g)}}\) |
练习
基础
- 原书例 3.1 的 ARCH(1):\(\sigma_t^2=0.0111+0.3560a_{t-1}^2\)。求无条件标准差、无条件超额峰度;若 \(a_h=-0.25\),求 \(\sigma_h(1)\)、\(\sigma_h(2)\)。 答案要点:无条件标准差 0.1313;峰度 \(3(1-0.1267)/(1-0.3802)\approx4.23\),超额 1.23;\(\sigma_h^2(1)=0.0111+0.356\times0.0625=0.0334\),\(\sigma_h(1)\approx0.183\);\(\sigma_h^2(2)=0.0111+0.356\times0.0334=0.0230\),\(\sigma_h(2)\approx0.152\)。
- 对 (3.19) 的 GARCH(1,1),计算持续性、半衰期(月)和无条件标准差;若 \(\sigma_h^2(1)=0.0045\),求 \(\sigma_h^2(5)\)。 答案要点:0.9727,约 25 个月,0.0560;\(\sigma_h^2(5)=0.00314+0.9727^4(0.0045-0.00314)\approx0.00436\)。
- 写出 GARCH(1,1) 的 ARMA 表示中 AR 与 MA 系数,并说明为什么 \(\eta_t\) 不是 iid。 提示:\(\eta_t=\sigma_t^2(\epsilon_t^2-1)\),其条件方差依赖 \(\sigma_t^4\)。
- 解释为什么 t 新息的 ARCH/GARCH 估计中 \(\alpha_1\) 通常比正态新息小(对比 (3.12) 与 (3.13))。
进阶
- (原书习题 3.1、3.2 的思路)推导 GARCH(2,1)(\(\sigma_t^2=\alpha_0+\alpha_1a_{t-1}^2+\alpha_2a_{t-2}^2+\beta_1\sigma_{t-1}^2\))的 1、2、3 步波动预测递推式。 提示:\(\sigma_h^2(2)=\alpha_0+(\alpha_1+\beta_1)\sigma_h^2(1)+\alpha_2a_h^2\);\(\ell\ge3\) 时 \(\sigma_h^2(\ell)=\alpha_0+(\alpha_1+\beta_1)\sigma_h^2(\ell-1)+\alpha_2\sigma_h^2(\ell-2)\)。
- (原书习题 3.3、3.4)写出 AR(1)–GARCH(1,1) 在高斯和标准化 t 新息下的条件对数似然函数,并说明初值如何处理。
- 证明 GARCH(1,1) 的 \(k\) 期累计收益 \(\sum_{j=1}^ka_{h+j}\) 的条件方差为 \(\sum_{j=1}^k\sigma_h^2(j)\),并与 EWMA 下的"\(\sqrt k\) 规则"比较:当当前波动高于长期水平时,哪个给出更大的 10 日 VaR? 提示:\(a_t\) 序列不相关;GARCH 预测会回落,EWMA 保持不变,后者更大。
- 用本章代码,把真实参数改为 \(\alpha_1=0.05\)、\(\beta_1=0.94\)、\(v=10\),重复估计 200 次,画出 \(\hat\alpha_1+\hat\beta_1\) 与无条件方差估计的分布,讨论持续性接近 1 时估计的不稳定性。
- 实现 3.5.6 节的两步估计:对模拟数据的 \(a_t^2\) 拟合 ARMA(1,1)(注意
statsmodels的 MA 符号约定),反解 \(\alpha_1,\beta_1\),与 MLE 比较。
原书推荐习题:3.1/3.2(GARCH 多步预测推导);3.3/3.4(手写条件对数似然);3.5(Intel 的 GARCH 与 1–5 步预测);3.6(Merck 的 ARCH 效应检验与 ARCH 建模);3.7(3M 完整流程:检验—定阶—样本外预测—ARCH-M—EGARCH);3.8(GM 的高斯/t GARCH、GARCH-M 与自由度检验);3.11、3.12(日收益的 GARCH 建模与预测)。
原书对照
| 本章小节 | 原书章节 | PDF 页码(书页) |
|---|---|---|
| 3.0 导言 | 第 3 章导言 | p.129–130(书页 109–110) |
| 3.1 波动率的特征 | 3.1 Characteristics of Volatility | p.130–131(书页 110–111) |
| 3.2 模型结构 | 3.2 Structure of a Model | p.131–133(书页 111–113) |
| 3.3 建模步骤与检验 | 3.3 Model Building;3.3.1 Testing for ARCH Effect | p.133–135(书页 113–115) |
| 3.4 ARCH 模型 | 3.4 The ARCH Model(3.4.1–3.4.4) | p.135–151(书页 115–131) |
| 3.5.1–3.5.4 GARCH 与例 3.3 | 3.5 The GARCH Model;3.5.1 An Illustrative Example | p.151–159(书页 131–139) |
| 3.5.5–3.5.6 预测评价、两步法 | 3.5.2 Forecasting Evaluation;3.5.3 A Two-Pass Estimation Method | p.159–160(书页 139–140) |
| 3.5.7 GARCH 峰度 | 3.16 Kurtosis of GARCH Models | p.185–186(书页 165–166) |
| 3.6 IGARCH 与 RiskMetrics | 3.6 The Integrated GARCH Model | p.160–162(书页 140–142) |
| 3.7 GARCH-M | 3.7 The GARCH-M Model | p.162–163(书页 142–143) |
| 估计程序 | Appendix: Some RATS Programs for Estimating Volatility Models | p.187–188(书页 167–168) |