Value-at-Risk:推导这个无处不在的分位数
一步步推导作为组合损失分位数的 VaR。三条估计路径, 参数法、历史法、Monte Carlo, 以及为什么每条假设在压力下都会失效。
走进任何一家风险管理部门的会议室,幻灯片上的第一个数字一定是 VaR。走进监管办公室,他们开口第一句就是 VaR 模型。走进交易大厅,每个台子都知道自己盘中的 VaR 数字。从 1990 年代起,这个数字就成了市场风险的主导度量, 它被写进了 Basel II/III 资本规则、交易所清算所的保证金模型、还有任何稍具规模的金融机构每日风险报告里 (McNeil, Frey & Embrechts, 2010, §2.1)。
这也是一个被大多数从业者用错的度量。风险面板上那个数字,几乎从来不是真正驱动决策的那个数字;真正起作用的是它背后的假设。如果你不知道你那个 VaR 数字到底是哪条假设在撑着, 参数化的高斯尾部、历史样本、还是 Monte Carlo, 你就不知道这个 VaR 到底在告诉你什么。
这篇文章是一个可上手的推导。我们从定义出发,过一遍三条估计路径,然后把假设一个个拆开来看。
损失、收益与符号约定
设 是组合在持有期 内的损失。大多数银行定义 ,其中 是收益,所以 为正意味着组合亏了钱。持有期 对交易台来说是一天,在 Basel 框架下的监管资本则是 10 天。
假设 是连续随机变量,累积分布函数 。 的 分位数, 也就是满足 的 , 是
Value-at-Risk 在置信水平 下的定义为
时,我们看的是损失分布的 99 分位。直观的解释是:以 的概率,持有期内的损失不会超过 VaR。等价地说,损失超过 VaR 的概率是 。
那个著名的”1000 万美元 1 天 99% VaR”意思就是:以 99% 的概率,这个组合在一天之内不会亏超过 1000 万美元。换算过来,平均每 100 个交易日大约会出现一次超过 1000 万美元的亏损,一年差不多 2.5 次。
实际工作中有两个很容易被忽视的细节 (McNeil, Frey & Embrechts, 2010, §2.2):
- VaR 是一个阈值,不是期望损失。VaR 被突破时的实际损失可能远大于 VaR。
- VaR 对阈值之外的尾部形状毫无信息。5000 万的亏损和 50 亿的亏损,一旦超过 VaR,对 VaR 来说就都在”尾部”里,没有任何区分能力。
参数化 VaR:Delta-Normal 近似
最省事的 VaR 计算方式,是给 假设一个参数形式,然后直接读分位数。最常用的就是 delta-normal 方法,它假设:
- 组合收益对风险因子的变化是线性的(delta 近似)。
- 风险因子的变化联合正态。
在这两条假设下,组合损失也服从正态分布 (Hull, 2018, Ch. 22)。
设组合价值为 ,其中 是风险因子向量(对数价格、利率、外汇)。对小幅变化 ,线性近似为
其中 是梯度向量(也就是 “delta” 向量)。如果 ,那么
损失 ,其中 。这就是 方差-协方差 VaR 公式。均值为 0 的正态分布的 分位数是
其中 是标准正态分位数函数。对 ,,所以
好处是显而易见的:闭式解、计算快、只需要当前的 delta 和协方差矩阵。坏处也很显眼:三条假设几乎都会出问题。
第一个坑:凸性。 对非线性头寸(期权、按揭、结构化产品),大幅变化下线性近似就不靠谱了。delta-gamma 近似加了一个二阶项:
如果 是高斯的,这个二次型是 chi-squared 分布, 的分布就是非中心 chi-squared。VaR 可以通过 Cornish-Fisher 展开或者完整的数值反演来计算 (Hull, 2018, Ch. 22.4)。
第二个坑:肥尾。 日频股票收益的峰态在 5 到 15 之间,正态分布预测的是 3。平静市况下,经验上 对应的分位数大概在 2.5–3σ,但到了压力期会跳到 4–6σ。用 250 天收益校准的正态 VaR,会系统性地低估真实的尾部分位数。
第三个坑:均值偏移。 delta-normal 公式假设 的均值是 0。对多日持有期这个假设是错的:漂移会累积。10 天 VaR 时,相关均值是 ,这会显著影响分位数。大多数银行的处理方法是先算 1 天 VaR,再在 iid 假设下乘 , 这个做法理论上不严谨,但在均值较小时实践中还过得去。
历史 VaR:过去收益的分位数
非参数的替代方案是:拿昨天的损失排个序,查 分位数。没有分布假设,就是经验分布。
算法 (Glasserman, 2004, §1.3):
- 收集组合过去 天的日 P&L 值 。
- 升序排列,得到顺序统计量 。
- 用 估计 分位数。
个交易日(约两年)、 时,顺序统计量的索引是 。历史 99% VaR 就是样本中第 495 大的损失。如果 500 天里只有 4 天出现亏损,那历史 VaR 就被第四大的观测值封顶了, 它不可能超过经验支撑集。
好处清楚:没有分布假设,尾部是什么样就是什么样,跟非量化的人也好解释。
坏处也清楚,而且更严重:
回看窗口的敏感性。 历史 VaR 完全取决于回看窗口。窗口里只要有某一天特别糟糕,99% VaR 就能跳 30%。把窗口从 250 天加到 1000 天,估计更稳定但对 regime 变化的反应也更迟钝。文献里一般认为 250–500 天是个比较实际的折中 (Basel Committee, 1996)。
尾部观测的重要性。 因为真正用到的只有 这一项,历史 VaR 把 99% 的数据都扔了。样本量翻倍并不会让 VaR 估计移动太多, 从 500 天的 变成 1000 天的 ,两种情况下都还是第二大的观测值。高置信水平下分位数估计的方差本来就差。
条件 vs 无条件。 历史 VaR 默认今天跟历史上最差的那天可以互换。如果 2020 年巨亏,但 2021–2023 都风平浪静,用四年窗口算出来的历史 VaR 会被 2020 完全主导。这个估计其实在说:“如果 2020 发生在今天会怎样”, 并不让人安心。
Monte Carlo VaR:模拟路线
第三条路是模拟。建一个风险因子的联合动态模型,沿持有期模拟很多条路径,每条路径上对组合重新定价,然后读模拟损失的 分位数 (Glasserman, 2004, Ch. 4)。
算法:
- 指定风险模型:,其中 是 iid 冲击。
- 对 ,向前模拟 步路径并计算 。
- 把 排序,报告第 小的值。
、 时,我们取的是第 99,000 小的模拟损失。这个分位数估计量的方差大致为
其中 是分位数处的密度。对密度的平方反比依赖,就是为什么高分位数 VaR 用模拟估计起来很贵, 通常需要 10 万到 100 万条路径才能在 99.5% 这个水平上得到一个紧的估计 (Glasserman, 2004, §4.1)。
Monte Carlo VaR 是最灵活的:非线性、肥尾、随机波动率、regime 切换都能处理。每加一个特性都只需要扩展模拟模型,整体流程不变。代价是算力和模型风险。如果风险模型错了,模拟分布的每一个分位数都错,VaR 也不例外。
import numpy as np
from scipy import stats
# 模拟一个 2 资产高斯组合的 1 天收益
np.random.seed(0)
n_sims = 100_000
mu = np.array([0.0004, 0.0002])
Sigma = np.array([[0.0004, 0.0001],
[0.0001, 0.0009]])
L = np.random.multivariate_normal(mu, Sigma, size=n_sims) # 损失
portfolio_loss = -0.6 * L[:, 0] - 0.4 * L[:, 1] # 加权损失
# 历史 VaR:经验分位数
hist_var_99 = np.quantile(portfolio_loss, 0.99)
# 高斯假设下的参数化 VaR
port_vol = np.sqrt(np.array([0.6, 0.4]) @ Sigma @ np.array([0.6, 0.4]))
param_var_99 = port_vol * stats.norm.ppf(0.99)
# 比较
print(f"Parametric VaR (Gaussian): {param_var_99:.5f}")
print(f"Monte Carlo VaR (empirical): {hist_var_99:.5f}")
跑一下这段代码,你会发现参数化数字比经验数字略小, 因为有限样本的尾部本身就有噪声。
为什么这些假设重要
直说吧:大部分操作层面的 VaR 数字是错的。不是差一点,是压力时期错 2 到 5 倍。假设有三层,任何一层失效都会让数字作废。
第一层:分布假设。 参数化 VaR 假设正态或对数正态尾部。金融收益是幂律尾的。用 250 天校准的 99% 正态 VaR,平静市况下漏掉的真实尾部损失经验频率大概是 1.5–2%,压力期则是 5–10%。Basel 委员会自己也意识到了这一点,要求银行用 12 个月压力数据计算 stressed VaR (BCBS, 2012)。
第二层:相依性。 三种 VaR 都对风险因子如何联动做了假设。参数化假设固定的协方差矩阵,历史假设过去的相依关系可以外推,Monte Carlo 假设模拟模型捕捉到了相依性。2008 年危机表明这三者可以同时失效:平时被假设近似独立的资产,到了压力时刻变得几乎完全相关, 偏偏就是 VaR 最不能错的那个时刻。
第三层:持有期缩放。 时间平方根规则 只在 iid 高斯收益下才正确。在 GARCH 下,缩放大致还是 ,但乘性修正能差到 30–50%。在跳跃下,合适的缩放更接近 的线性。
VaR 到底什么时候用
即便有这些局限,VaR 在一些场景下仍然是合适的工具 (McNeil, Frey & Embrechts, 2010, §2.6):
- 高置信水平下的资本预算。 银行用 99% 或 99.9% VaR 分配风险资本时,这笔钱”大多数时候够用”。不是保证,但算个预算。
- 沟通。 “1 天 99% VaR 是 1000 万美元”是个非量化也能懂的数字。Expected Shortfall(下篇文章讲)解释起来更费劲,但理论上更优。
- 对手方和集中度筛查。 如果头寸 A 和 B 的 99% VaR 都是 100 万美元,那就有理由设置一个集中度限额。
- 监管报告。 Basel III 要它。大多数清算所要它。大多数内部限额也要它。
VaR 不适合:尾部风险定价、为低概率灾难事件设定经济资本、跨本质不同的组合比较风险、或者检测模型风险。这些场景需要 Expected Shortfall 或者其他 coherent 替代, 下篇文章接着讲。
关键点是:永远不要在不知道用的是哪条路径的情况下就信一个 VaR 数字。参数化 VaR 最快也最错。历史 VaR 最经得起推敲也最目光短浅。Monte Carlo VaR 最灵活也最暴露在模型风险下。一个稳健的风险栈应该把三条路都跑一遍,并且在三者分歧时打上 flag。
参考文献
Basel Committee on Banking Supervision. Minimum Capital Requirements for Market Risk. BCBS d424, 2012.
Glasserman, P. (2004). Monte Carlo Methods in Financial Engineering. Springer. ISBN 978-0387004518. Chs. 1, 4.
Hull, J. C. (2018). Options, Futures, and Other Derivatives (10th ed.). Pearson. ISBN 978-0134472089. Ch. 22.
McNeil, D., Frey, R., & Embrechts, P. (2010). Quantitative Risk Management: Concepts, Techniques and Tools. Princeton University Press. Chs. 2-3.