4、历史模拟法详解

历史模拟法(Historical Simulation, HS)是 VaR 计算中最直观、最符合监管直觉的非参数方法。它不假设收益率服从任何特定分布,而是直接使用过去实际发生的市场数据来模拟当前组合的未来损益分布。本章将深入拆解其数据选取、排序分位数计算、实现步骤及核心优劣。

4.1 历史数据选取

历史模拟法的第一步是确定“历史窗口”的长度与数据频率。窗口长度直接影响 VaR 的敏感性与稳定性。

参数 典型值 对 VaR 的影响
窗口长度 250 个交易日(约 1 年) 较短窗口对近期市场变化更敏感,但波动大;较长窗口更稳定,但可能包含过时信息
数据频率 日收益率 日数据最常用;周/月数据会减少样本量,降低 VaR 精度
数据清洗 剔除异常值、调整分红拆股 未清洗数据会导致 VaR 被极端值扭曲
实操建议:巴塞尔协议要求至少 1 年(250 个交易日)的历史数据。对于流动性较差的资产,可考虑使用 2 年窗口,但需注意权重衰减。

4.2 排序与分位数计算

历史模拟法的核心操作是对历史损益序列进行排序,然后直接读取对应置信水平的分位数。

  1. 计算历史损益:将当前组合的权重乘以每个历史场景下的因子收益率,得到 N 个历史场景损益。
  2. 升序排列:将 N 个损益值从小到大排序,形成经验分布。
  3. 确定分位数位置:对于置信水平 c(如 99%),VaR 对应第 (1-c) × N 个最小损益。
  4. 插值处理:若位置不是整数,使用线性插值或取相邻值。
# Python 示例:历史模拟法 VaR 计算核心逻辑
import numpy as np

def historical_var(returns, confidence_level=0.99):
    """
    历史模拟法计算 VaR
    :param returns: 历史收益率序列 (numpy array)
    :param confidence_level: 置信水平,默认 99%
    :return: VaR 值(正数表示损失)
    """
    sorted_returns = np.sort(returns)
    index = int(np.ceil((1 - confidence_level) * len(sorted_returns))) - 1
    var = -sorted_returns[index]  # 取负值表示损失
    return var

# 示例:假设有 500 个日收益率
np.random.seed(42)
returns = np.random.normal(0.001, 0.02, 500)
var_99 = historical_var(returns, 0.99)
print(f"99% VaR (历史模拟法): {var_99:.4f}")
关键点:分位数位置计算时,若 N=250,置信水平 99%,则取第 2.5 个最小损益。通常做法是取第 3 个最小损益(向上取整)或进行线性插值。
历史模拟法分位数计算流程 历史损益序列 升序排列 确定分位数位置 插值处理 输出 VaR 值 说明:历史模拟法直接使用经验分布的分位数,无需假设正态分布或 t 分布 VaR = - (排序后第 ⌈(1-c)×N⌉ 个最小损益)

4.3 历史模拟法实现步骤

以下为完整的历史模拟法实现流程,从数据准备到 VaR 输出:

步骤 操作内容 输出
1 收集风险因子历史价格序列(如利率、汇率、股价) 原始价格矩阵
2 计算每个因子的日对数收益率或百分比收益率 收益率矩阵
3 获取当前组合各头寸的市值权重 权重向量
4 将权重向量与每个历史场景的收益率相乘,得到场景损益 场景损益序列
5 对场景损益序列升序排列 排序后损益序列
6 根据置信水平读取分位数,输出 VaR VaR 值
常见陷阱:步骤 4 中若组合包含非线性产品(如期权),不能简单使用线性映射,需使用全估值法(Full Valuation)重新定价每个历史场景。

4.4 历史模拟法的优缺点

维度 优点 缺点
模型假设 无需假设收益率分布形态,完全由数据驱动 隐含假设“历史会重演”,无法捕捉结构性突变
实现难度 逻辑简单,易于编程实现和监管沟通 计算量大(需存储全量历史数据),对大数据集效率低
尾部风险 能自然捕捉厚尾和尖峰特征 尾部样本稀少,分位数估计方差大
动态性 对市场 regime change 有一定滞后适应性 等权重处理所有历史数据,近期数据无更高权重
压力测试 可直接使用历史极端事件场景(如 2008 年) 无法生成未发生过的极端情景
历史模拟法优缺点对比 ✅ 优点 • 无分布假设,完全非参数 • 实现简单,监管友好 • 自然捕捉厚尾与尖峰 • 可直接使用历史极端场景 • 适用于非线性组合(全估值) ❌ 缺点 • 假设历史会重演 • 尾部样本少,估计方差大 • 等权重处理,忽视近期信息 • 无法生成未发生过的情景 • 大数据集计算效率低
总结:历史模拟法因其透明性和无参数假设,成为监管机构(如巴塞尔委员会)推荐的基础方法。但在实际应用中,常需结合衰减权重(如指数加权历史模拟法)或混合模型来弥补其静态等权重的缺陷。