VaR 计算方法:参数法、历史模拟法与蒙特卡洛模拟法
在金融风险计量中,VaR(Value at Risk)的计算方法主要分为三大流派:参数法(方差-协方差法)、历史模拟法和蒙特卡洛模拟法。三种方法在假设前提、计算效率、尾部风险捕捉能力上存在显著差异。本章将系统梳理三者的数学原理、适用场景及 Spark 实现要点,为后续 VaR 归因与稳定性巡检奠定基础。
1. 参数法(方差-协方差法)
参数法假设资产收益率服从某种已知的概率分布(通常为正态分布或 t 分布),仅需估计组合的均值与方差-协方差矩阵即可解析计算 VaR。其核心公式为:
VaR(α) = μ - σ · z_α · √(Δt)
其中,μ 为组合期望收益率,σ 为组合标准差,z_α 为置信水平 α 对应的分位数(如 95% 对应 1.645),Δt 为持有期。
适用场景:投资组合规模大、资产数量多、需要快速计算;市场处于正常波动区间,尾部风险不突出。
局限性:无法刻画厚尾分布;对非线性衍生品(如期权)的估值误差较大;协方差矩阵的估计对历史数据长度敏感。
2. 历史模拟法
历史模拟法不假设任何参数分布,直接使用过去 N 个交易日的实际收益率序列,按升序排列后取对应分位数的收益率作为 VaR 估计值。其计算步骤为:
- 收集历史数据:获取组合内各资产过去 N 日的收益率序列。
- 构建历史损益序列:将当前持仓权重与历史收益率相乘,得到每日组合损益。
- 排序取分位:将损益序列从小到大排序,取第 (1-α)×N 个值作为 VaR。
Spark 实现要点:历史模拟法天然适合分布式计算——可将每只资产的历史收益率作为 DataFrame 的一列,通过
pivot 或 mapGroups 并行计算每日组合损益,最后使用 approxQuantile 或 sort + limit 获取分位数。
3. 蒙特卡洛模拟法
蒙特卡洛模拟法通过生成大量随机场景来模拟资产价格的未来路径,适用于包含期权、互换等非线性产品的复杂组合。其核心流程包括:
- 随机数生成:基于资产收益率分布(正态、t 分布或带跳跃的扩散过程)生成 M 条路径。
- 价格路径模拟:使用几何布朗运动或更复杂的随机过程,逐日递推资产价格。
- 组合估值:对每条路径下的资产价格进行重新定价,得到 M 个组合损益。
- 分位数提取:对损益排序后取对应置信水平的值。
优势:可处理非线性风险、路径依赖型产品;能灵活嵌入波动率聚类、跳跃扩散等复杂模型。
计算成本:模拟次数通常需要 10,000 次以上才能收敛,在 Spark 中需合理设计分区与广播变量,避免 shuffle 瓶颈。
4. 三种方法对比总览
| 对比维度 | 参数法 | 历史模拟法 | 蒙特卡洛模拟法 |
|---|---|---|---|
| 分布假设 | 正态 / t 分布 | 无参数假设 | 可自定义(正态、跳跃、随机波动) |
| 计算速度 | 极快(O(n²)) | 中等(O(N·logN)) | 慢(O(M·N)) |
| 尾部风险捕捉 | 弱(正态假设低估尾部) | 强(直接使用历史尾部) | 强(可指定厚尾分布) |
| 非线性产品支持 | 不支持 | 有限(需历史价格重估) | 完全支持 |
| Spark 并行度 | 矩阵运算可并行 | 按资产/日期分区并行 | 按模拟路径分区并行 |
5. 三种方法计算流程对比图
下图从数据输入到 VaR 输出的角度,对比三种方法的计算路径与核心差异:
6. Spark 实现中的选择策略
在实际 VaR 归因巡检系统中,三种方法的选择需综合考虑数据规模、资产复杂度与巡检频率:
- 日频巡检:推荐使用参数法或历史模拟法,计算延迟控制在秒级。
- 周频/月频深度巡检:使用蒙特卡洛模拟法,结合 Spark 的
mapPartitions并行模拟,单次巡检可覆盖 10 万条路径。 - 混合策略:对线性资产用参数法快速计算,对衍生品子组合用蒙特卡洛法精确估值,最后通过协方差聚合得到整体 VaR。
稳定性巡检提示:无论采用哪种方法,都应定期回测 VaR 的覆盖频率(如 95% VaR 的实际损失超过次数是否接近 5%),并在 Spark 中实现自动化告警。参数法需监控协方差矩阵的条件数,历史模拟法需关注滚动窗口长度的敏感性,蒙特卡洛法需检查模拟路径的收敛性。