VaR 计算方法:参数法、历史模拟法与蒙特卡洛模拟法

在金融风险计量中,VaR(Value at Risk)的计算方法主要分为三大流派:参数法(方差-协方差法)、历史模拟法和蒙特卡洛模拟法。三种方法在假设前提、计算效率、尾部风险捕捉能力上存在显著差异。本章将系统梳理三者的数学原理、适用场景及 Spark 实现要点,为后续 VaR 归因与稳定性巡检奠定基础。

1. 参数法(方差-协方差法)

参数法假设资产收益率服从某种已知的概率分布(通常为正态分布或 t 分布),仅需估计组合的均值与方差-协方差矩阵即可解析计算 VaR。其核心公式为:

VaR(α) = μ - σ · z_α · √(Δt)

其中,μ 为组合期望收益率,σ 为组合标准差,z_α 为置信水平 α 对应的分位数(如 95% 对应 1.645),Δt 为持有期。

适用场景:投资组合规模大、资产数量多、需要快速计算;市场处于正常波动区间,尾部风险不突出。
局限性:无法刻画厚尾分布;对非线性衍生品(如期权)的估值误差较大;协方差矩阵的估计对历史数据长度敏感。

2. 历史模拟法

历史模拟法不假设任何参数分布,直接使用过去 N 个交易日的实际收益率序列,按升序排列后取对应分位数的收益率作为 VaR 估计值。其计算步骤为:

  1. 收集历史数据:获取组合内各资产过去 N 日的收益率序列。
  2. 构建历史损益序列:将当前持仓权重与历史收益率相乘,得到每日组合损益。
  3. 排序取分位:将损益序列从小到大排序,取第 (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 输出的角度,对比三种方法的计算路径与核心差异:

VaR 三种计算方法流程对比 历史收益率数据 参数法 估计均值 & 协方差矩阵 解析公式计算 VaR 历史模拟法 构建历史损益序列 排序取分位数 蒙特卡洛模拟法 生成 M 条随机路径 路径重估 & 损益汇总 VaR 估计值 核心差异 参数法依赖分布假设,历史模拟法依赖真实历史,蒙特卡洛法依赖随机过程与重估模型

6. Spark 实现中的选择策略

在实际 VaR 归因巡检系统中,三种方法的选择需综合考虑数据规模、资产复杂度与巡检频率:

  • 日频巡检:推荐使用参数法或历史模拟法,计算延迟控制在秒级。
  • 周频/月频深度巡检:使用蒙特卡洛模拟法,结合 Spark 的 mapPartitions 并行模拟,单次巡检可覆盖 10 万条路径。
  • 混合策略:对线性资产用参数法快速计算,对衍生品子组合用蒙特卡洛法精确估值,最后通过协方差聚合得到整体 VaR。
稳定性巡检提示:无论采用哪种方法,都应定期回测 VaR 的覆盖频率(如 95% VaR 的实际损失超过次数是否接近 5%),并在 Spark 中实现自动化告警。参数法需监控协方差矩阵的条件数,历史模拟法需关注滚动窗口长度的敏感性,蒙特卡洛法需检查模拟路径的收敛性。