量化交易中文教材

第 07a 章 风险价值:RiskMetrics、计量方法与分位数估计

本章对应 Tsay 原书第 7 章前半(7.1–7.4 节):VaR 的定义、RiskMetrics、基于 ARMA–GARCH 的计量方法、经验分位数与分位数回归,以及期望损失(ES)。极值理论(EVT)方法与各方法的综合比较放在第 07b 章。

学习目标

  1. 准确理解 VaR 的概率定义(损失分布的上分位数)、计算 VaR 需要的五个要素,以及多头用负收益分析的符号约定。
  2. 掌握 RiskMetrics(零均值 + EWMA/IGARCH(1,1) + 条件正态),能推导时间平方根法则,并说明它在什么条件下失效。
  3. 会用 ARMA–GARCH 模型计算 1 期和多期 VaR,正确使用标准化 Student-t 分位数。
  4. 掌握经验分位数的渐近分布及其在尾部的不精确性,理解分位数回归的检验函数(check loss)。
  5. 理解 VaR 不满足次可加性的问题,会计算正态和经验分布下的期望损失(ES)。
  6. 会用突破次数做 VaR 回测(Kupiec 无条件覆盖检验与 Christoffersen 独立性检验,本章补充内容)。

读前导读

这一章在解决什么问题

VaR 你在 CFA 和 FRM 风格的材料里已经很熟:参数法(方差–协方差)、历史模拟法、蒙特卡洛法,以及「VaR 不告诉你尾部有多深」的批评。这一章不是重复这些概念,而是把它们和前几章的时间序列模型接起来,回答三个更细的问题:VaR 里的 \(\sigma\) 从哪里来(条件波动率模型)?10 日 VaR 能不能直接乘 \(\sqrt{10}\)(什么时候能、偏差往哪个方向)?不假设分布时,用历史分位数估计 VaR 到底有多准?

几个连接点:RiskMetrics 的 EWMA 就是第 03a 章的 IGARCH(1,1),也是 CFA 中「指数加权移动平均估计波动率」那一节;方差–协方差法的组合 VaR 公式就是 CFA 组合方差公式 \(\sigma_p^2=\sum w_i^2\sigma_i^2+2\sum w_iw_j\rho_{ij}\sigma_i\sigma_j\) 两边乘以分位数系数;ES(CVaR)是巴塞尔 FRTB 的新监管指标;回测部分的 Kupiec 检验就是对「突破次数」做二项分布检验,对应巴塞尔的「交通灯」框架。

本章贯穿一条主线:分布假设决定尾部。正态假设在 5% 水平上问题不大,在 1% 及更小的尾部概率上系统性低估风险;历史分位数不依赖假设,但在尾部样本太少、估计噪声大。第 07b 章的极值理论就是为解决这个两难而来。

需要先想起来的数学

1. 分位数与 CDF 的反函数。 \(F(x)=P(X\le x)\),\(q\) 分位数 \(x_q\) 满足 \(F(x_q)=q\)。正态下 \(x_{0.95}=1.645\),\(x_{0.99}=2.326\)。VaR 就是损失分布的高分位数。

2. 条件期望与迭代期望(塔性质)。 \(E[E(X\mid F_{t+1})\mid F_t]=E(X\mid F_t)\):先用更多信息预测、再对这个预测取平均,等于直接用少的信息预测。时间平方根法则的推导靠它。例:今天预测明天的「明天对后天的预测」,就等于今天对后天的预测。见 第 00 册第 07 章 概率中的分析工具。

3. 几何级数的部分和。 \(1+\phi+\dots+\phi^{k-1}=\frac{1-\phi^k}{1-\phi}\)。多期 GARCH 方差 (7.10) 用它求和。例:\(\phi=0.9\),\(k=10\),和为 \(6.51\)。见 第 00 册第 04 章 级数与收敛。

4. 积分求截断期望。 \(E(X\mid X>c)=\frac{\int_c^\infty xf(x)dx}{P(X>c)}\)。正态密度满足 \(f'(x)=-xf(x)\),所以 \(\int_c^\infty xf(x)dx=f(c)\),ES 公式由此而来。见 第 00 册第 03 章 积分。

5. 似然比检验。 \(LR=-2\ln(L_0/L_1)\),\(L_0\) 是原假设下的最大似然,\(L_1\) 是无约束下的最大似然,大样本下服从 \(\chi^2\),自由度为约束个数。

6. 下确界 \(\inf\)。 集合的「最大下界」。对于有最小值的集合,\(\inf\) 就是最小值。分位数定义中用 \(\inf\) 只是为了处理 CDF 有跳跃或平台的情况。见 第 00 册第 01 章 函数极限与连续。

怎么读这一章

核心必读:7.1.2 定义和 7.1.4 的三点说明、7.2.1–7.2.2 RiskMetrics 与时间平方根法则的推导、7.3.1 标准化 t 分位数(实务中最常见的错误)、7.3.2 中 (7.10) 的结论段(\(\sqrt k\) 法则的偏差方向)、7.4.1 的经验分位数渐近方差和尾部不精确的结论、7.5 回测。可以第一次只看结论的:7.3.2 中 (7.7)–(7.8) 的一般 ARMA 推导、7.4.2 分位数回归的线性规划细节。建议顺序:7.1 → 7.2 → 7.3 → 7.4.1 → 7.5 → 7.4.2,再读量化实战的回测输出。


7.1 风险价值

7.1.1 动机

极端价格变动罕见但影响巨大:1987 年 10 月股灾、LTCM 危机、雷曼兄弟破产,以及全球金融危机中 VIX 飙升、股指暴跌。风险价值(Value at Risk,VaR)已成为度量市场风险的标准工具。机构用它评估自身风险、分配资本;监管者用它设定保证金和资本要求,确保机构在灾难事件后仍能经营。金融风险通常分为信用风险、操作风险和市场风险;VaR 主要针对市场风险,但概念可以推广。

原书统一用 IBM 日对数收益(1962-07-03 至 1998-12-31,9,190 个观测)演示各种方法,本章和第 07b 章沿用这个设定,便于比较。

7.1.2 定义

设在 \(t\) 时刻关注未来 \(\ell\) 期。\(\Delta V(\ell)\) 为头寸价值从 \(t\) 到 \(t+\ell\) 的变化,\(L(\ell)\) 为相应的损失(多头时是 \(-\Delta V\),空头时是 \(\Delta V\)),其 CDF 为 \(F_\ell(x)\)。持有期 \(\ell\)、尾部概率 \(p\) 的 VaR 定义为

\[p=\Pr[L(\ell)\ge\text{VaR}]=1-\Pr[L(\ell)<\text{VaR}].\tag{7.1}\]

含义:头寸持有人在 \(\ell\) 期内遭受不少于 VaR 的损失的概率为 \(p\);或者说,以 \(1-p\) 的概率损失小于 VaR。机构把它理解为"正常市场条件下的最大损失",监管者理解为"异常市场条件下的最小损失"——说法不同,数是同一个。

用分位数的语言:对 CDF \(F\) 和 \(0<q<1\),第 \(q\) 分位数为 \(x_q=\inf\{x\mid F(x)\ge q\}\)。所以

\[\text{VaR}=x_{1-p},\]

即损失分布的 \((1-p)\) 分位数。CDF 实际上未知,所以 VaR 研究的本质就是估计损失分布的上尾及其分位数。

白话解释:\(x_q=\inf\{x\mid F(x)\ge q\}\) 读作「使累积概率首次达到 \(q\) 的那个最小的 \(x\)」。连续分布下它就是 \(F^{-1}(q)\)。用 \(\inf\) 是为了照顾离散分布。例:损失只取 0、50、100,概率分别为 0.90、0.06、0.04。\(F(0)=0.90\),\(F(50)=0.96\),\(F(100)=1\)。求 95% 分位数:满足 \(F(x)\ge0.95\) 的最小 \(x\) 是 50,所以 95% VaR 为 50;99% VaR 为 100。练习 5 的次可加性反例就要用到这种离散情形的读法。

7.1.3 计算 VaR 的五个要素

  1. 尾部概率 \(p\):风险管理常用 0.01,压力测试用 0.001;
  2. 持有期 \(\ell\):市场风险常用 1 天或 10 天,信用风险用 1 年或 5 年;
  3. 数据频率:可与 \(\ell\) 不同,市场风险常用日数据;
  4. 损失分布 \(F_\ell(x)\) 或其分位数:计量建模的重点,不同估计方法形成不同 VaR 方法;
  5. 头寸金额或组合的盯市价值。

7.1.4 三点说明

符号与单位。 VaR 基于损失的上尾。多头在收益为负时亏损,所以分析多头要用负收益 \(-r_t\);空头用 \(r_t\)。对数收益近似百分比变化,由 \(r_{t+1}\mid F_t\) 的上分位数得到的是百分比 VaR,美元 VaR = 头寸价值 × 对数收益 VaR;需要更精确时可用 \(\text{Value}\times[\exp(\text{VaR}_r)-1]\)。

预测分布。 VaR 是对未来损失的预测,应使用预测分布(如 1 天 VaR 用 \(r_{t+1}\mid F_t\))。严格的预测分布应包含参数估计的不确定性,但难以计算,大多数方法忽略它。

VaR 的局限。 VaR 只是一个分位数,不描述分位数之外发生什么:两个头寸可能 VaR 相同,但超过 VaR 后的损失差别很大。更严重的是 VaR 不满足次可加性(sub-additivity)——合并后的风险应不大于各部分风险之和,VaR 有时违反这一点,可能惩罚分散化。因此需要期望损失(expected shortfall,ES),又称条件风险价值(CVaR):

\[\text{ES}_q=E(L\mid L>\text{VaR}_q).\]

ES 满足次可加性,是一致风险度量(coherent risk measure)。巴塞尔协议的市场风险框架(FRTB)已把监管指标从 99% VaR 改为 97.5% ES。

金融直觉:VaR 何时违反次可加性?典型场景是损失集中在小概率事件上的头寸,例如卖出深度虚值期权或持有低违约率债券。单笔损失概率低于 \(p\) 时,VaR 完全看不见它(练习 5 中各自 VaR 为 0);合在一起后「至少一笔出事」的概率超过 \(p\),VaR 突然跳出来。反过来说,VaR 会鼓励交易员把风险「藏」在 \(p\) 以下的尾部:卖出大量 0.9% 概率才会亏的期权,99% VaR 显示为零风险。ES 对尾部做平均,任何尾部损失都会反映出来,所以不存在这个漏洞。只要收益服从联合正态分布(更一般地,椭圆分布族),VaR 与 \(\sigma\) 成正比,就满足次可加性,问题主要出在非正态、离散或高度偏斜的损失上。


7.2 RiskMetrics

7.2.1 模型

J.P. Morgan 开发的 RiskMetrics(Longerstaey & More 1995)在最简单的形式下假设组合日对数收益条件正态,\(r_t\mid F_{t-1}\sim N(\mu_t,\sigma_t^2)\),且

\[\mu_t=0,\qquad \sigma_t^2=\alpha\sigma_{t-1}^2+(1-\alpha)r_{t-1}^2,\quad 0<\alpha<1.\tag{7.2}\]

这就是指数加权移动平均(EWMA),也就是无漂移的 IGARCH(1,1)(第 03a 章 3.6 节)。\(\alpha\) 通常在 (0.9, 1),日数据典型值为 0.94。(这里的 \(\alpha\) 就是第 03a 章 3.6 节的 \(\beta_1\)、第 10 章的 \(\lambda\)。)

7.2.2 多期收益与时间平方根法则

\(k\) 期对数收益 \(r_t[k]=r_{t+1}+\dots+r_{t+k}\)。在 (7.2) 下,\(r_t[k]\mid F_t\sim N(0,\sigma_t^2[k])\),\(\sigma_t^2[k]=\sum_{i=1}^{k}E(\sigma_{t+i}^2\mid F_t)\)。把波动方程改写为

\[\sigma_t^2=\sigma_{t-1}^2+(1-\alpha)\sigma_{t-1}^2(\epsilon_{t-1}^2-1),\]

\(i\ge2\) 时 \(E(\epsilon_{t+i-1}^2-1\mid F_t)=0\),于是 \(E(\sigma_{t+i}^2\mid F_t)=E(\sigma_{t+i-1}^2\mid F_t)=\dots=\sigma_{t+1}^2\)(\(\sigma_{t+1}^2\) 在 \(t\) 时已知)。因此

\[\sigma_t^2[k]=k\,\sigma_{t+1}^2,\qquad r_t[k]\mid F_t\sim N(0,k\sigma_{t+1}^2).\]

推导拆解: 第一步(为什么方差可以相加):零均值下 \(r_{t+i}=\sigma_{t+i}\epsilon_{t+i}\),不同期的 \(r\) 不相关(\(\epsilon\) 独立且均值为零),所以 \(\operatorname{Var}(\sum r_{t+i}\mid F_t)=\sum E(r_{t+i}^2\mid F_t)=\sum E(\sigma_{t+i}^2\mid F_t)\),最后一步用了 \(E(\sigma^2\epsilon^2\mid\cdot)=\sigma^2E\epsilon^2=\sigma^2\) 和迭代期望。 第二步(改写波动方程):把 \(r_{t-1}^2=\sigma_{t-1}^2\epsilon_{t-1}^2\) 代入 (7.2):\(\sigma_t^2=\alpha\sigma_{t-1}^2+(1-\alpha)\sigma_{t-1}^2\epsilon_{t-1}^2=\sigma_{t-1}^2+(1-\alpha)\sigma_{t-1}^2(\epsilon_{t-1}^2-1)\)。 第三步(取条件期望):对 \(i\ge2\),\(\epsilon_{t+i-1}\) 在 \(t\) 时未知,\(E(\epsilon^2-1)=0\),所以 \(E(\sigma_{t+i}^2\mid F_t)=E(\sigma_{t+i-1}^2\mid F_t)\)。一路往回推到 \(\sigma_{t+1}^2\),它只依赖 \(r_t\) 和 \(\sigma_t^2\),在 \(t\) 时已知。 结论:IGARCH 下「今天对未来任意一天的方差预测都等于明天的方差」,方差预测是一条水平线,\(k\) 天加总就是 \(k\) 倍。如果是普通 GARCH(\(\alpha_1+\beta_1<1\)),预测会向长期均值回归,水平线变成曲线,这就是 7.3.2 中 (7.10) 的情形。

对应的 VaR:尾部概率 5% 时下一交易日 \(\text{VaR}=1.65\sigma_{t+1}\),1% 时为 \(2.326\sigma_{t+1}\)(再乘头寸金额),\(k\) 日 VaR 为

\[\text{VaR}(k)=\sqrt k\times\text{VaR},\]

这就是 RiskMetrics 的时间平方根法则(square root of time rule)。由于零均值正态,多头与空头 VaR 相同。

例 7.1:1997 年 6 月马克/美元汇率日收益标准差约 0.53%,1,000 万美元多头的 5% 1 日 VaR 为 \(10{,}000{,}000\times1.65\times0.0053=\$87{,}450\),10 日 VaR 为 \(87{,}450\times\sqrt{10}\approx\$276{,}541\)。

例 7.2(IBM):为演示假设零均值 IGARCH(1,1),估计得 \(\sigma_t^2=0.9396\sigma_{t-1}^2+0.0604a_{t-1}^2\)(模型被标准化残差平方的 \(Q(10)=56.19\) 拒绝)。已知 \(r_{9190}=-0.0128\),\(\hat\sigma^2_{9190}=0.0003472\),得 \(\hat\sigma^2_{9190}(1)=0.000336\)。1,000 万美元多头:5% VaR \(=1.65\sqrt{0.000336}\times10^7=\$302{,}500\);1% VaR \(=2.326\sqrt{0.000336}\times10^7=\$426{,}500\)。(用 S-Plus mgarch 估计得 \(\alpha=0.964\),VaR 为 311,520 与 439,187 美元,略高。)

7.2.3 评价

优点:简单、易懂、提高了市场风险的透明度。缺点:收益厚尾,正态假设常低估 VaR;时间平方根法则只是这个特殊模型的产物,零均值或无漂移 IGARCH(1,1) 任一假设不成立就失效。例如 \(r_t=\mu+a_t\),\(\mu\ne0\),则 \(r_t[k]\mid F_t\sim N(k\mu,k\sigma_{t+1}^2)\),95% 分位 \(k\mu+1.65\sqrt k\sigma_{t+1}=\sqrt k(\sqrt k\mu+1.65\sigma_{t+1})\ne\sqrt k(\mu+1.65\sigma_{t+1})\)。

7.2.4 多个头寸

若各头寸收益都服从 RiskMetrics 模型,且联合零均值正态(相关系数 \(\rho_{ij}\)),则组合 VaR 为

\[\text{VaR}=\sqrt{\sum_{i=1}^{m}\text{VaR}_i^2+2\sum_{i<j}\rho_{ij}\,\text{VaR}_i\,\text{VaR}_j}.\]

这就是"方差–协方差法"。原理是组合收益仍是零均值正态,其标准差满足同样的二次型;VaR 与标准差成正比,所以 VaR 也按此合成。这里 VaR 要带符号:空头头寸的 VaR 取负号,才能体现对冲效果。只有在零均值联合正态下该式才精确。

推导拆解:设头寸 \(i\) 的美元损失 \(L_i=-V_ir_i\),标准差 \(s_i=|V_i|\sigma_i\),\(\text{VaR}_i=z\,V_i\sigma_i\)(\(z\) 为正态分位数,空头 \(V_i<0\) 故 VaR 带负号)。组合损失 \(L=\sum L_i\) 仍是零均值正态,方差 \(\operatorname{Var}(L)=\sum_iV_i^2\sigma_i^2+2\sum_{i<j}\rho_{ij}V_iV_j\sigma_i\sigma_j\),正是 CFA 的组合方差公式。组合 VaR \(=z\sqrt{\operatorname{Var}(L)}\),把 \(z\) 乘进根号,每一项 \(z^2V_iV_j\sigma_i\sigma_j\) 恰好是 \(\text{VaR}_i\text{VaR}_j\),即得上式。\(\rho=1\) 时根号内是完全平方,组合 VaR 等于各 VaR 之和;\(\rho<1\) 时小于之和,差额就是分散化收益。

7.2.5 正态下的期望损失

损失服从正态时,超过 VaR 的条件分布是截断正态。对 \(X\sim N(0,1)\),上尾概率 \(p\),\(q=1-p\):

\[E(X\mid X>x_q)=\frac{f(x_q)}{p},\qquad f(x)=\frac{1}{\sqrt{2\pi}}e^{-x^2/2}.\]

(证明:\(\int_{x_q}^{\infty}xf(x)dx=f(x_q)\),再除以 \(p\)。)

推导拆解:为什么 \(\int_{x_q}^\infty xf(x)dx=f(x_q)\)?对 \(f(x)=\frac1{\sqrt{2\pi}}e^{-x^2/2}\) 用链式法则求导:\(f'(x)=\frac1{\sqrt{2\pi}}e^{-x^2/2}\cdot(-x)=-xf(x)\)。所以 \(xf(x)=-f'(x)\),它的原函数是 \(-f(x)\)。于是 \(\int_{x_q}^\infty xf(x)dx=[-f(x)]_{x_q}^{\infty}=0-(-f(x_q))=f(x_q)\),用了 \(x\to\infty\) 时 \(f(x)\to0\)。 数值核对:\(p=0.01\),\(x_q=2.326\),\(f(2.326)=0.3989\times e^{-2.705}\approx0.02665\),除以 0.01 得 2.665,与下文系数一致。

所以条件分布 \(N(\mu_t,\sigma_t^2)\) 下

\[\text{ES}_q=\mu_t+\frac{f(x_q)}{p}\sigma_t.\]

常用系数:\(p=0.05\) 时 \(x_q=1.645\),\(\text{ES}=2.0627\sigma_t\);\(p=0.01\) 时 \(x_q=2.326\),\(\text{ES}=2.6652\sigma_t\)。可见正态下 ES 只比 VaR 大 15%–25%;厚尾分布下差距会大得多。


7.3 计量方法:ARMA–GARCH

7.3.1 1 期 VaR

用第 02a–04b 章的时间序列模型刻画条件分布:

\[r_t=\phi_0+\sum_{i=1}^{p}\phi_ir_{t-i}+a_t-\sum_{j=1}^{q}\theta_ja_{t-j},\qquad a_t=\sigma_t\epsilon_t,\quad \sigma_t^2=\alpha_0+\sum_{i=1}^{u}\alpha_ia_{t-i}^2+\sum_{j=1}^{v}\beta_j\sigma_{t-j}^2.\tag{7.5–7.6}\]

参数已知时得到 1 步预测 \(\hat r_t(1)\) 和 \(\hat\sigma_t^2(1)\)。若 \(\epsilon_t\) 正态,\(r_{t+1}\mid F_t\sim N[\hat r_t(1),\hat\sigma_t^2(1)]\),VaR 分位为 \(\hat r_t(1)+z_{1-p}\hat\sigma_t(1)\)。

若 \(\epsilon_t\) 服从自由度 \(v\) 的标准化 Student-t(方差为 1),要特别小心:普通 \(t_v\) 的方差是 \(v/(v-2)\),所以

\[p=\Pr(t_v\le q)=\Pr\Big(\frac{t_v}{\sqrt{v/(v-2)}}\le\frac{q}{\sqrt{v/(v-2)}}\Big),\]

即标准化 t 的分位数是普通 t 分位数除以 \(\sqrt{v/(v-2)}\)。1 期 VaR 分位为

\[\hat r_t(1)+\frac{t_v(1-p)}{\sqrt{v/(v-2)}}\hat\sigma_t(1).\]

常见错误:直接用 t.ppf(0.99, v) 乘以 \(\hat\sigma\) 会高估 VaR。以 \(v=5\) 为例,普通 t 的 99% 分位是 3.365,标准化后只有 2.607。

例 7.3(IBM,1,000 万美元多头,1998-12-31 的下一日 VaR)。 对负收益建模。

  • 正态:\(r_t=-0.00066-0.0247r_{t-2}+a_t\),\(\sigma_t^2=0.00000389+0.0799a_{t-1}^2+0.9073\sigma_{t-1}^2\)。预测 \(\hat r(1)=-0.00071\),\(\hat\sigma^2(1)=0.0003211\)。5% 分位 \(-0.00071+1.6449\sqrt{0.0003211}=0.02877\),VaR \(=\$287{,}700\);1% 分位 \(0.04097\),VaR \(=\$409{,}738\)。
  • 标准化 \(t_5\):\(r_t=-0.0003-0.0335r_{t-2}+a_t\),\(\sigma_t^2=0.000003+0.0559a_{t-1}^2+0.9350\sigma_{t-1}^2\)。预测 \(\hat r(1)=-0.000367\),\(\hat\sigma^2(1)=0.0003386\)。5% 标准化分位 \(2.015/\sqrt{5/3}=1.5608\),VaR \(\approx\$283{,}520\);1% 标准化分位 \(3.3649/\sqrt{5/3}=2.6065\),VaR \(=\$475{,}943\)。

厚尾分布的效果随尾部概率变小而显现:5% 时两种分布的 VaR 几乎相同,1% 时 t 分布的 VaR 高出 16%。

7.3.2 多期 VaR

设预测原点 \(h\),\(k\) 期收益 \(r_h[k]=r_{h+1}+\dots+r_{h+k}\),点预测 \(\hat r_h[k]=\sum_{\ell=1}^{k}\hat r_h(\ell)\)。由 MA 表示 \(r_t=\mu+a_t+\psi_1a_{t-1}+\cdots\),\(\ell\) 步预测误差为 \(e_h(\ell)=a_{h+\ell}+\psi_1a_{h+\ell-1}+\dots+\psi_{\ell-1}a_{h+1}\),于是

\[e_h[k]=a_{h+k}+(1+\psi_1)a_{h+k-1}+\dots+\Big(\sum_{i=0}^{k-1}\psi_i\Big)a_{h+1},\tag{7.7}\]
\[\operatorname{Var}(e_h[k]\mid F_h)=\sigma_h^2(k)+(1+\psi_1)^2\sigma_h^2(k-1)+\dots+\Big(\sum_{i=0}^{k-1}\psi_i\Big)^2\sigma_h^2(1),\tag{7.8}\]

\(\sigma_h^2(\ell)\) 是 GARCH 的 \(\ell\) 步波动率预测。

推导拆解:以 \(k=2\) 为例。\(e_h(1)=a_{h+1}\),\(e_h(2)=a_{h+2}+\psi_1a_{h+1}\)。两期累计误差 \(e_h[2]=e_h(1)+e_h(2)=a_{h+2}+(1+\psi_1)a_{h+1}\)。规律是:越早出现的冲击,被后面越多期的预测误差「重复计入」,系数是 \(\psi\) 权重的部分和。由于各期 \(a\) 条件不相关、\(E(a_{h+\ell}^2\mid F_h)=\sigma_h^2(\ell)\),方差就是系数平方乘以对应的方差预测再求和,即 (7.8)。

金融直觉:若收益有正自相关(\(\psi_1>0\),动量),一次冲击会在后续继续推动价格同向变动,多期风险大于各期之和,\(\sqrt k\) 法则低估;若负自相关(均值回复),多期风险小于 \(\sqrt k\) 法则的结果。这和「方差比检验」的思路一致。

特例 \(r_t=\mu+a_t\)、GARCH(1,1):\(\psi_i=0\),\(\operatorname{Var}(e_h[k]\mid F_h)=\sum_{\ell=1}^{k}\sigma_h^2(\ell)\),其中

\[\sigma_h^2(1)=\alpha_0+\alpha_1a_h^2+\beta_1\sigma_h^2,\qquad \sigma_h^2(\ell)=\alpha_0+\phi\,\sigma_h^2(\ell-1),\quad\phi=\alpha_1+\beta_1.\tag{7.9}\]

递推得 \(\sigma_h^2(\ell)=\frac{\alpha_0(1-\phi^{\ell-1})}{1-\phi}+\phi^{\ell-1}\sigma_h^2(1)\),对 \(\ell\) 求和:

推导拆解:(7.9) 第二式的来源:\(\sigma_{h+\ell}^2=\alpha_0+\alpha_1a_{h+\ell-1}^2+\beta_1\sigma_{h+\ell-1}^2\),在 \(F_h\) 下取期望,\(E(a_{h+\ell-1}^2\mid F_h)=E(\sigma_{h+\ell-1}^2\mid F_h)=\sigma_h^2(\ell-1)\),两项合并为 \(\phi\sigma_h^2(\ell-1)\)。 递推的解:记长期方差 \(\bar\sigma^2=\alpha_0/(1-\phi)\),则 \(\sigma_h^2(\ell)-\bar\sigma^2=\phi[\sigma_h^2(\ell-1)-\bar\sigma^2]\),偏离长期水平的部分每期乘以 \(\phi\),所以 \(\sigma_h^2(\ell)=\bar\sigma^2+\phi^{\ell-1}[\sigma_h^2(1)-\bar\sigma^2]\),展开即为上式。 求和:\(\sum_{\ell=1}^k\phi^{\ell-1}=\frac{1-\phi^k}{1-\phi}\),于是 \(\sum\sigma_h^2(\ell)=k\bar\sigma^2+\frac{1-\phi^k}{1-\phi}[\sigma_h^2(1)-\bar\sigma^2]\),整理即为 (7.10)。这个形式比原式更直观:多期方差 = \(k\) 倍长期方差 + 当前偏离的「衰减累计」。

\[\operatorname{Var}(e_h[k]\mid F_h)=\frac{\alpha_0}{1-\phi}\Big(k-\frac{1-\phi^k}{1-\phi}\Big)+\frac{1-\phi^k}{1-\phi}\,\sigma_h^2(1).\tag{7.10}\]

(精读笔记记录原书 (7.10) 括号内印作 \(k-1-\phi^k/(1-\phi)\),按推导应为 \(k-(1-\phi^k)/(1-\phi)\),此处已更正。)正态时 \(r_h[k]\mid F_h\sim N(k\mu,\operatorname{Var}(e_h[k]))\);t 或 GED 新息下多期收益不再是简单分布,要用模拟求多期 VaR。

(7.10) 揭示了时间平方根法则的偏差方向:GARCH 是均值回复的。当前波动 \(\sigma_h^2(1)\) 高于长期水平 \(\alpha_0/(1-\phi)\) 时,未来方差逐渐回落,\(\sqrt k\) 法则高估多期 VaR;当前波动低于长期水平时,\(\sqrt k\) 法则低估多期 VaR。

例 7.3(续):高斯 AR(2)–GARCH(1,1),15 日持有期:条件均值 −0.00998,条件方差 0.0047948,5% 分位 \(-0.00998+1.6449\sqrt{0.0047948}=0.10392\),VaR \(=\$1{,}039{,}191\),小于 \(287{,}700\times\sqrt{15}=\$1{,}114{,}257\)。


7.4 分位数估计

非参数方法:不对收益分布做具体假设,只假设预测期内分布不变。

7.4.1 经验分位数与次序统计量

样本 \(r_1,\dots,r_n\) 的次序统计量(order statistics)\(r_{(1)}\le\dots\le r_{(n)}\)。

定理(Cox & Hinkley 1974):\(r_t\) iid,连续分布,密度 \(f\),\(x_p=F^{-1}(p)\),\(f(x_p)\ne0\)。则 \(\ell=np\) 时

\[r_{(\ell)}\ \dot\sim\ N\Big[x_p,\ \frac{p(1-p)}{n[f(x_p)]^2}\Big].\tag{7.11}\]

所以可以用 \(r_{(\ell)}\) 估计 \(x_p\)。\(np\) 不是整数时线性插值:设 \(\ell_1<np<\ell_2\) 为相邻整数,\(p_i=\ell_i/n\),

\[\hat x_p=\frac{p_2-p}{p_2-p_1}r_{(\ell_1)}+\frac{p-p_1}{p_2-p_1}r_{(\ell_2)}.\tag{7.12}\]

(7.11) 的方差分母里有 \(f(x_p)^2\)。在尾部,\(p\) 小、\(f(x_p)\) 更小,方差急剧变大——经验分位数在尾部很不精确。例如 \(N(0,1)\) 的 1% 分位,\(n=1000\) 时标准误约 \(\sqrt{0.0099/1000}/0.0267\approx0.12\),是分位数本身 2.33 的 5%;0.1% 分位(3.09)时标准误约 0.30,接近分位数本身的 10%。

白话解释:为什么方差公式里有 \(f(x_p)^2\)?分两步看。第一步,样本中低于真实分位数 \(x_p\) 的观测比例 \(\hat p\) 是二项比例,标准误 \(\sqrt{p(1-p)/n}\),这部分你在 CFA 中就会算。第二步,把「比例的误差」换算成「\(x\) 轴上的误差」:在 \(x_p\) 附近,\(x\) 移动 \(\Delta x\),累积概率大约变化 \(f(x_p)\Delta x\)。所以比例误差 \(\Delta p\) 对应的分位数误差是 \(\Delta x\approx\Delta p/f(x_p)\)。尾部密度 \(f\) 很小,即那里的数据很稀疏,同样的比例误差会被放大成很大的分位数误差。这是「用一阶导数换算误差」的思路,和用久期把收益率误差换算成价格误差一样(统计上称 delta 方法)。\(\dot\sim\) 读作「近似服从」。

例 7.4(Intel 日对数收益,1972-12-15 至 2008-12-31,9,096 个观测):多头用负收益。\(9096\times0.95=8641.2\),\(\hat x_{0.95}=0.8r_{(8641)}+0.2r_{(8642)}=4.2952\%\)。

例 7.5(IBM,9,190 个观测):\(np=8730.5\),95% 经验分位 \((r_{(8730)}+r_{(8731)})/2=2.1603\%\),1,000 万美元多头 VaR \(=\$216{,}030\),明显小于计量方法的结果。99% 分位:\(9098<9190\times0.99<9099\),\(p_1=9098/9190=0.98999\),\(p_2=0.9901\),插值得 \(\hat x_{0.99}\approx3.630\%\),VaR \(=\$363{,}000\)。(原书在此处把 9098 误印为 9198;原书 7.6.1 节(本册第 07b 章 7.7.2 节)比较表中此值又写作 365,709,前后不一致。)

评价:优点是简单、无分布假设。缺点有三:(1) 假设分布在样本期与预测期不变,等于说未来损失不会超过历史最大损失;(2) \(p\) 小时经验分位数不是有效估计;(3) 不能纳入解释变量(如当前波动水平)。实际中经验分位数 VaR 可视为真实 VaR 的下界——前提是样本足够大、\(p\) 不太小。

经验 ES:超过经验分位数的观测的平均,

\[\widehat{\text{ES}}_q=\frac{1}{N_q}\sum_{i=1}^{n}x_{(i)}\mathbb 1[x_{(i)}>\hat x_q].\]

IBM 负收益、\(p=0.01\):\(\hat x_{0.99}=3.630\%\),\(\widehat{\text{ES}}_{0.99}=5.097\%\)——ES 比 VaR 大 40%,远超正态下的 15%,这就是厚尾。

业界的"历史模拟法"(historical simulation)就是用滚动窗口(如过去 250 或 500 天)的经验分位数做 VaR。

7.4.2 分位数回归

收益的条件分布常依赖可观测的解释变量(如美联储的利率决议、当前波动水平)。Koenker & Bassett (1978) 的分位数回归直接对条件分位数建模。先注意经验分位数可以写成一个优化问题:

\[\hat x_p=\arg\min_\beta\sum_{i=1}^{n}w_p(r_i-\beta),\qquad w_p(z)=\begin{cases}pz, & z\ge0,\\ (p-1)z, & z<0.\end{cases}\]

\(w_p\) 称检验函数(check function),机器学习中称弹球损失(pinball loss)。直观理解:低估(\(z>0\))每单位罚 \(p\),高估每单位罚 \(1-p\);最优点使低于它的观测比例恰为 \(p\)。

推导拆解:把 \(\beta\) 往右挪一个很小的量 \(\delta\),看总损失怎么变。对于 \(r_i>\beta\) 的观测(共 \(n_+\) 个),\(z=r_i-\beta\) 减少 \(\delta\),每个损失减少 \(p\delta\);对于 \(r_i<\beta\) 的观测(共 \(n_-\) 个),\(z\) 更负,每个损失增加 \((1-p)\delta\)。总变化 \(=[-pn_++(1-p)n_-]\delta\)。在最优点,往哪边挪都不能再降低损失,所以 \(pn_+\approx(1-p)n_-\)。又 \(n_++n_-\approx n\),解得 \(n_-\approx pn\),即恰好 \(p\) 比例的观测落在 \(\beta\) 下方,\(\beta\) 就是 \(p\) 分位数。\(p=0.5\) 时两边罚得一样多,就是「绝对偏差最小化得到中位数」这个熟悉的结论。\(\arg\min\) 表示「使目标函数最小的那个参数值」。

推广到线性模型 \(r_t=\boldsymbol\beta'\boldsymbol x_t+a_t\)(\(\boldsymbol x_t\in F_{t-1}\)):

\[\hat{\boldsymbol\beta}_p=\arg\min_{\boldsymbol\beta}\sum_{t=1}^{n}w_p(r_t-\boldsymbol\beta'\boldsymbol x_t),\qquad \hat x_p\mid F_{t-1}=\hat{\boldsymbol\beta}_p'\boldsymbol x_t.\tag{7.14}\]

这是一个线性规划问题,R 用 quantreg 包,Python 用 statsmodels.QuantReg。


7.5 VaR 回测(补充)

原书第 7 章没有专门讨论 VaR 回测,但它是 VaR 模型投入使用前的必经步骤,这里给出两个标准检验,以便与第 04b 章的预测评估思想衔接。

记突破(violation / hit)指示 \(I_t=\mathbb 1(L_t>\text{VaR}_t)\)。若 VaR 模型正确,\(\{I_t\}\) 应是成功概率为 \(p\) 的 iid 伯努利序列。

Kupiec 无条件覆盖检验:\(n\) 天中突破 \(x\) 次,\(\hat\pi=x/n\),

\[LR_{uc}=-2\ln\frac{(1-p)^{n-x}p^x}{(1-\hat\pi)^{n-x}\hat\pi^x}\ \sim\ \chi^2_1.\]

白话解释:分子是「假设突破率真是 \(p\)」时观察到这串突破记录的概率,分母是「突破率取样本值 \(\hat\pi\)」时的概率(这是能达到的最大值)。比值越接近 1,说明 \(p\) 和数据越吻合。数值例子:250 天、目标 \(p=1\%\),期望突破 2.5 次。若突破 2 次,\(LR_{uc}\approx0.11\),完全正常;突破 7 次,\(LR_{uc}\approx5.5\),超过 3.84,在 5% 水平拒绝。注意 250 天的检验功效很低:真实突破率为 2%(模型低估风险一倍)时,也常常只观察到 3–5 次突破,难以拒绝。这就是为什么监管回测用一年数据只能做「交通灯」式的粗筛。

Christoffersen 独立性检验:统计 \(n_{ij}\)(前一天状态 \(i\)、当天状态 \(j\) 的天数),\(\pi_{01}=\frac{n_{01}}{n_{00}+n_{01}}\),\(\pi_{11}=\frac{n_{11}}{n_{10}+n_{11}}\),检验 \(\pi_{01}=\pi_{11}\) 的似然比,也服从 \(\chi^2_1\)。突破成簇(今天突破后明天更容易突破)说明模型对波动变化反应太慢。

这与第 07b 章 POT 模型的诊断思路一致:超越的间隔应服从指数分布、无序列相关。


量化实战

应用场景

  1. 风控系统的 VaR/ES 引擎:历史模拟法(7.4)、参数法(RiskMetrics、GARCH,7.2–7.3)、EVT(第 07b 章)是业界三大类方法,大多数风控系统都同时实现几种,作为相互校验。
  2. 多期风险与时间平方根法则:监管 10 日 VaR 常由 1 日 VaR 乘 \(\sqrt{10}\) 得到。(7.10) 告诉我们在高波动期这会高估、低波动期会低估——正是在风险积累的平静期低估风险。
  3. 组合层面:方差–协方差法(7.2.4)是最简单的组合 VaR,可分解出各头寸的边际 VaR 和成分 VaR,用于风险预算。
  4. 分位数模型:检验函数是训练分位数预测模型(线性分位数回归、分位数梯度提升树、分位数神经网络)的标准损失,可直接预测条件 VaR。均值–CVaR 组合优化可写成线性规划(Rockafellar–Uryasev)。
  5. 仓位管理:用条件 VaR 或 ES 设定杠杆上限、止损线和风险预算,比用无条件波动率更能适应市场状态。

Python 示例

代码先核对原书的几个数字(例 7.1、例 7.3 的标准化 t 分位、正态 ES 系数),然后模拟一个 t 新息 GARCH 收益序列,用前 3,000 天估计参数、后 10,000 天滚动计算 1% VaR,比较 RiskMetrics、正态 GARCH、t-GARCH、500 日历史模拟法,并用 Kupiec 与 Christoffersen 检验回测;接着计算 ES、比较多期 VaR 的两种算法,最后用分位数回归建立条件 VaR 模型。

import numpy as np
import pandas as pd
from scipy import stats
from arch import arch_model
import statsmodels.api as sm

rng = np.random.default_rng(3)

# ---------- 0. 原书数字核对 ----------
print(f"例 7.1: 1日5% VaR = {1e7*1.65*0.0053:,.0f}, 10日 = {1e7*1.65*0.0053*np.sqrt(10):,.0f}")
v = 5
q_std = stats.t.ppf(0.99, v) / np.sqrt(v/(v-2))
print(f"例 7.3: t5 99% 分位 {stats.t.ppf(0.99, v):.4f}, 标准化后 {q_std:.4f}, "
      f"VaR = {1e7*(-0.000367 + q_std*np.sqrt(0.0003386)):,.0f}")
for p in (0.05, 0.01):
    z = stats.norm.ppf(1-p)
    print(f"正态 ES 系数 p={p}: VaR {z:.4f} sigma, ES {stats.norm.pdf(z)/p:.4f} sigma")

# ---------- 1. 模拟"真实"收益:AR(0)-GARCH(1,1),标准化 t5 新息(单位:%)----------
T = 13000
nu, w, a1, b1 = 5, 0.02, 0.08, 0.90
z = stats.t.rvs(nu, size=T, random_state=rng) / np.sqrt(nu/(nu-2))
r, s2 = np.zeros(T), np.zeros(T); s2[0] = w/(1-a1-b1)
for t in range(T):
    if t: s2[t] = w + a1*r[t-1]**2 + b1*s2[t-1]
    r[t] = 0.03 + np.sqrt(s2[t])*z[t]
loss = -r                                          # 多头:分析负收益

est, test = slice(0, 3000), slice(3000, T)        # 前 3000 天估计,后 10000 天回测
p = 0.01

# ---------- 2. 四种 1 日 VaR(滚动,参数在前 3000 天估计一次)----------
# (a) RiskMetrics: EWMA, lambda=0.94, 零均值正态
ew = np.zeros(T); ew[0] = r[:250].var()
for t in range(1, T):
    ew[t] = 0.94*ew[t-1] + 0.06*r[t-1]**2
var_rm = stats.norm.ppf(1-p)*np.sqrt(ew)

# (b)(c) 正态 / t 新息 GARCH(1,1),在估计样本拟合后对全样本做滤波
def garch_var(dist):
    res = arch_model(r[est], mean="Constant", vol="GARCH", p=1, q=1, dist=dist).fit(disp="off")
    mu_, om, al, be = res.params[["mu", "omega", "alpha[1]", "beta[1]"]]
    h = np.zeros(T + 1); h[0] = om/(1 - al - be)
    for t in range(T):                              # 用固定参数对全样本滤波:h[t+1] 是 t 日收盘时对 t+1 的预测
        h[t+1] = om + al*(r[t] - mu_)**2 + be*h[t]
    if dist == "normal":
        q = stats.norm.ppf(1-p)
    else:
        n_ = res.params["nu"]; q = stats.t.ppf(1-p, n_)/np.sqrt(n_/(n_-2))   # 标准化 t 分位
    return -mu_ + q*np.sqrt(h[:T]), res, h          # 第 t 天的 VaR 只用到 t-1 及以前的信息

var_gn, res_n, h_n = garch_var("normal")
var_gt, res_t, h_t = garch_var("t")
print(f"\nt-GARCH 估计: omega={res_t.params['omega']:.3f}, alpha={res_t.params['alpha[1]']:.3f}, "
      f"beta={res_t.params['beta[1]']:.3f}, nu={res_t.params['nu']:.2f}")

# (d) 历史模拟:过去 500 天经验分位
var_hs = pd.Series(loss).rolling(500).quantile(1-p).shift(1).values

# ---------- 3. 回测:Kupiec 无条件覆盖 + Christoffersen 独立性 ----------
def backtest(var, name):
    v_ = var[test]; l_ = loss[test]; ok = ~np.isnan(v_)
    hit = (l_[ok] > v_[ok]).astype(int); n, x = len(hit), hit.sum(); pi = x/n
    lr_uc = -2*(x*np.log(p) + (n-x)*np.log(1-p) - x*np.log(pi) - (n-x)*np.log(1-pi))
    n00 = np.sum((hit[:-1]==0)&(hit[1:]==0)); n01 = np.sum((hit[:-1]==0)&(hit[1:]==1))
    n10 = np.sum((hit[:-1]==1)&(hit[1:]==0)); n11 = np.sum((hit[:-1]==1)&(hit[1:]==1))
    p01, p11, p1 = n01/(n00+n01), n11/max(n10+n11, 1), (n01+n11)/(n-1)
    ll = lambda a, b, c: (a*np.log(c) if a else 0) + (b*np.log(1-c) if b else 0)
    lr_ind = -2*(ll(n01+n11, n00+n10, p1) - ll(n01, n00, p01) - ll(n11, n10, p11))
    print(f"{name:<14} 突破 {x:>3}/{n} ({pi:.2%})  Kupiec p={stats.chi2.sf(lr_uc,1):.3f}  "
          f"独立性 p={stats.chi2.sf(lr_ind,1):.3f}  平均VaR {np.mean(v_[ok]):.2f}%")

print("\n1% VaR 回测(后 10000 天):")
for v_, nm in [(var_rm, "RiskMetrics"), (var_gn, "正态GARCH"), (var_gt, "t-GARCH"), (var_hs, "历史模拟500d")]:
    backtest(v_, nm)
q_true = stats.t.ppf(1-p, nu)/np.sqrt(nu/(nu-2))
backtest(-0.03 + q_true*np.sqrt(s2), "真实参数(基准)")   # 用真实 sigma_t,衡量抽样噪声

# ---------- 4. 期望损失(t-GARCH 下用模拟计算最后一天)----------
n_ = res_t.params["nu"]; mu_T = res_t.params["mu"]; sd_T = np.sqrt(h_t[T])   # 对 T+1 日的预测
sim = -(mu_T + sd_T*stats.t.rvs(n_, size=400000, random_state=rng)/np.sqrt(n_/(n_-2)))
print(f"\n最后一天 t-GARCH: VaR {np.quantile(sim, 1-p):.3f}%, ES {sim[sim > np.quantile(sim, 1-p)].mean():.3f}%")

# ---------- 5. 多期 VaR:GARCH 递推 (7.9)-(7.10) vs 时间平方根 ----------
om, al, be = res_n.params["omega"], res_n.params["alpha[1]"], res_n.params["beta[1]"]
mu_n = res_n.params["mu"]; phi = al + be; k = 10; zq = stats.norm.ppf(1-p)
print(f"\n10 日 1% VaR (正态, 长期方差 {om/(1-phi):.2f}):")
for s2_1 in (0.5, om/(1-phi), 3.0):                      # 1 步方差预测 sigma_h^2(1):低波、长期、高波
    var_k = om/(1-phi)*(k - (1-phi**k)/(1-phi)) + (1-phi**k)/(1-phi)*s2_1     # 式 (7.10)
    print(f"  sigma^2(1)={s2_1:.2f}: GARCH 递推 {-k*mu_n + zq*np.sqrt(var_k):.2f}%, "
          f"时间平方根 {np.sqrt(k)*(-mu_n + zq*np.sqrt(s2_1)):.2f}%")

# ---------- 6. 分位数回归:条件 VaR 依赖于已实现波动代理 ----------
absr = pd.Series(np.abs(r)).rolling(20).mean().shift(1).values   # 过去 20 日平均绝对收益
ok = ~np.isnan(absr)
X = sm.add_constant(absr[ok])
qr = sm.QuantReg(loss[ok], X).fit(q=1-p)
print(f"\n分位数回归 (q=0.99): loss_q = {qr.params[0]:.3f} + {qr.params[1]:.3f} * MAR20")

关键输出:

例 7.1: 1日5% VaR = 87,450, 10日 = 276,541
例 7.3: t5 99% 分位 3.3649, 标准化后 2.6065, VaR = 475,948
正态 ES 系数 p=0.05: VaR 1.6449 sigma, ES 2.0627 sigma
正态 ES 系数 p=0.01: VaR 2.3263 sigma, ES 2.6652 sigma

t-GARCH 估计: omega=0.018, alpha=0.077, beta=0.910, nu=4.97

1% VaR 回测(后 10000 天):
RiskMetrics    突破 170/10000 (1.70%)  Kupiec p=0.000  独立性 p=0.530  平均VaR 1.98%
正态GARCH        突破 112/10000 (1.12%)  Kupiec p=0.237  独立性 p=0.812  平均VaR 2.12%
t-GARCH        突破  76/10000 (0.76%)  Kupiec p=0.012  独立性 p=0.612  平均VaR 2.38%
历史模拟500d       突破 122/10000 (1.22%)  Kupiec p=0.033  独立性 p=0.269  平均VaR 2.33%
真实参数(基准)       突破  85/10000 (0.85%)  Kupiec p=0.122  独立性 p=0.756  平均VaR 2.29%

最后一天 t-GARCH: VaR 2.671%, ES 3.552%

10 日 1% VaR (正态, 长期方差 1.14):
  sigma^2(1)=0.50: GARCH 递推 5.47%, 时间平方根 5.19%
  sigma^2(1)=1.14: GARCH 递推 7.81%, 时间平方根 7.84%
  sigma^2(1)=3.00: GARCH 递推 12.32%, 时间平方根 12.73%

分位数回归 (q=0.99): loss_q = 0.506 + 2.731 * MAR20

几点解读。RiskMetrics 的突破率 1.7%,被 Kupiec 检验显著拒绝——零均值正态的 EWMA 低估了厚尾数据的 1% VaR。历史模拟法覆盖率尚可但略高(1.22%),且它对波动变化反应迟钝。"真实参数"那一行用真实的 \(\sigma_t\) 和真实分布计算 VaR,本样本中也只突破了 0.85%,说明即便有 10,000 天,突破率的抽样误差也有 0.1 个百分点左右;t-GARCH 的 0.76% 有一部分来自这个抽样噪声,另一部分来自估计误差(估计的长期方差偏高)。正态 GARCH 在本样本中的 1.12% 并不代表它更好:理论上,标准化 \(t_5\) 新息低于正态 1% 分位的概率约 1.4%,换一个随机种子就可能被拒绝。ES 比 VaR 高 33%,远高于正态下的 15%。多期 VaR 一节验证了 (7.10) 的含义:当前波动低于长期水平时 \(\sqrt k\) 法则低估风险,高于长期水平时高估。


本章小结

VaR 是损失分布的上分位数,计算它的关键是估计损失分布的上尾。RiskMetrics 用零均值、EWMA 和条件正态给出最简单的答案,并推出时间平方根法则,但正态假设在小尾部概率下低估风险,\(\sqrt k\) 法则只在无漂移 IGARCH 下成立。ARMA–GARCH 计量方法给出条件均值和方差,使用 t 分布时必须用标准化分位数;多期 VaR 由 (7.8)–(7.10) 计算,GARCH 的均值回复使 \(\sqrt k\) 法则在高波动期高估、低波动期低估风险。经验分位数不依赖分布假设,但尾部估计方差很大,也不能外推到历史之外;分位数回归用检验函数把条件分位数与解释变量联系起来。VaR 不满足次可加性,应辅以 ES。所有 VaR 模型投入使用前都要回测。

概念 / 公式 要点
VaR 定义 \(p=\Pr[L(\ell)\ge\text{VaR}]\),VaR \(=x_{1-p}\);多头用负收益
RiskMetrics \(\mu_t=0\),\(\sigma_t^2=\alpha\sigma_{t-1}^2+(1-\alpha)r_{t-1}^2\),\(\alpha\approx0.94\)
时间平方根法则 \(\text{VaR}(k)=\sqrt k\,\text{VaR}\),仅对零均值 IGARCH(1,1) 成立
多头寸 \(\text{VaR}=\sqrt{\sum\text{VaR}_i^2+2\sum_{i<j}\rho_{ij}\text{VaR}_i\text{VaR}_j}\)
正态 ES \(\mu+\frac{f(x_q)}{p}\sigma\);\(p=5\%\):\(2.0627\sigma\);\(p=1\%\):\(2.6652\sigma\)
标准化 t 分位 \(t_v(1-p)/\sqrt{v/(v-2)}\)
多期方差(GARCH(1,1)) \(\frac{\alpha_0}{1-\phi}(k-\frac{1-\phi^k}{1-\phi})+\frac{1-\phi^k}{1-\phi}\sigma_h^2(1)\)
经验分位数渐近分布 \(N[x_p,\ p(1-p)/(n f(x_p)^2)]\)
检验函数 \(w_p(z)=pz\ (z\ge0)\),\((p-1)z\ (z<0)\)
Kupiec 检验 \(LR_{uc}\sim\chi^2_1\),检验突破率是否等于 \(p\)

练习

基础

  1. 某组合日收益条件分布为 \(N(0.0005,\,0.012^2)\),头寸 5,000 万元。计算 1 日 1% VaR 和 ES。 提示:VaR \(=(-0.0005+2.326\times0.012)\times5\times10^7\approx1{,}370{,}000\) 元;ES \(=(-0.0005+2.6652\times0.012)\times5\times10^7\approx1{,}574{,}000\) 元。
  2. 两个头寸的 1 日 VaR 分别为 100 万和 60 万元,相关系数 0.3。求组合 VaR;若第二个头寸是空头(相关系数仍按收益计算为 0.3)呢? 提示:\(\sqrt{100^2+60^2+2\times0.3\times100\times60}=129.6\) 万元;空头时 VaR\(_2\) 取 −60,得 \(\sqrt{13600-3600}=100\) 万元。
  3. 用标准化 \(t_4\) 分布做 1% VaR 时,分位数系数是多少?与正态的 2.326 比较。 提示:\(t_4(0.99)=3.747\),除以 \(\sqrt{2}\) 得 2.649。
  4. 某 VaR 模型在 250 个交易日中突破了 7 次(目标 1%)。用 Kupiec 检验判断是否拒绝。 提示:\(\hat\pi=0.028\),\(LR_{uc}\approx5.5\),p≈0.02,在 5% 水平拒绝(巴塞尔"交通灯"中属于黄区)。
  5. 构造一个 VaR 不满足次可加性的例子。 提示:两笔独立贷款,各有 4% 概率损失 100、否则 0。各自 5% VaR 为 0;组合损失 ≥100 的概率为 \(1-0.96^2=7.84\%\),组合 5% VaR 为 100。

进阶

  1. 证明正态分布的 ES 公式 \(E(X\mid X>x_q)=f(x_q)/p\),并推导标准化 \(t_v\) 分布的 ES 公式。 提示:对普通 \(t_v\),\(E(T\mid T>c)=\frac{f_v(c)}{p}\cdot\frac{v+c^2}{v-1}\),再按标准化尺度换算。
  2. 对 GARCH(1,1),令 \(\phi=0.98\)、\(\alpha_0=0.02\),分别取 \(\sigma_h^2(1)=0.5\) 和 \(3\),计算 \(k=1,5,10,20,60\) 时 (7.10) 给出的多期方差与 \(k\sigma_h^2(1)\) 的比值,画图说明 \(\sqrt k\) 法则偏差随 \(k\) 的变化。
  3. 修改本章代码,用 250 日窗口的历史模拟法重复回测,比较 250 日与 500 日窗口在突破率和独立性检验上的差别,解释窗口长度的权衡。
  4. (原书习题 7.1、7.2 改编)对同一组模拟或真实收益,计算 1% 下一日 VaR:(a) RiskMetrics;(b) 正态 ARMA–GARCH;(c) t-ARMA–GARCH(估计自由度);(d) 经验分位数。再计算 15 日 VaR,比较 (a) 的 \(\sqrt{15}\) 法则与 (b) 的递推结果。
  5. 用分位数回归拟合 \(q=0.01\) 和 \(q=0.99\) 两个条件分位数(解释变量为过去 20 日已实现波动),检验两个斜率是否对称;在真实股票数据上,下尾斜率通常更大,说明什么?

原书推荐习题:7.1、7.2(用同一数据系统比较 RiskMetrics、GARCH、t-GARCH、经验分位数等方法,是本章最核心的综合练习);7.4(a)(b)(多资产的 RiskMetrics 与 ARMA–GARCH VaR)。


原书对照

本章小节 原书章节 PDF 页码
7.1 风险价值 第 7 章引言、7.1 p.345–348
7.2 RiskMetrics、多头寸、ES 7.2 p.348–353
7.3 计量方法、多期 VaR 7.3 p.353–358
7.4 经验分位数、分位数回归 7.4 p.358–362
7.5 VaR 回测 本书补充,原书无对应 —
习题 第 7 章习题 p.404–406

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