halo 的技术博客

返回

为什么传统VaR不够用?#

在量化交易的风险管理中,VaR(风险价值) 是最常用的风险指标,但它存在明显缺陷:只关注一定置信水平下的最大损失,完全忽略超过VaR的极端损失情况。比如99%置信度的日度VaR是2%,意味着有1%的概率当天损失超过2%,但VaR无法告诉你这1%的概率下平均损失是多少。

CVaR(条件风险价值) 弥补了这个缺陷:它衡量的是超过VaR阈值的平均损失,更能反映极端风险。对于量化策略尤其是高频、杠杆策略,CVaR比VaR更适合作为风险预算的核心指标。

CVaR的三种计算方法#

1. 历史模拟法#

直接用历史收益数据计算,不需要假设收益分布,适合非正态分布的市场环境:

import numpy as np
def calculate_cvar_historical(returns, confidence=0.95):
    var = np.percentile(returns, (1 - confidence) * 100)
    cvar = returns[returns <= var].mean()
    return var, cvar
# 示例:计算日度收益的95% CVaR
daily_returns = np.random.normal(0.0005, 0.015, 1000)  # 模拟日度收益
var_95, cvar_95 = calculate_cvar_historical(daily_returns, 0.95)
print(f"VaR 95%: {var_95:.4f}, CVaR 95%: {cvar_95:.4f}")
python

2. 参数法#

假设收益服从特定分布(如正态分布、t分布),通过分布参数直接计算CVaR,计算速度快:

from scipy.stats import norm
def calculate_cvar_parametric(returns, confidence=0.95):
    mu = returns.mean()
    sigma = returns.std()
    var = norm.ppf(1 - confidence, mu, sigma)
    # 正态分布下CVaR的解析解
    cvar = mu - sigma * norm.pdf(norm.ppf(1 - confidence)) / (1 - confidence)
    return var, cvar
python

3. 蒙特卡洛模拟法#

通过模拟大量市场情景计算CVaR,适合复杂的投资组合(如含期权、期货的策略):

def calculate_cvar_monte_carlo(returns, confidence=0.95, num_simulations=10000):
    mu = returns.mean()
    sigma = returns.std()
    simulated_returns = np.random.normal(mu, sigma, num_simulations)
    var = np.percentile(simulated_returns, (1 - confidence) * 100)
    cvar = simulated_returns[simulated_returns <= var].mean()
    return var, cvar
python

VaR与CVaR风险指标对比

压力测试:应对极端黑天鹅#

CVaR衡量的是统计意义上的极端风险,而压力测试则针对具体的极端情景,检验策略在极端市场下的生存能力。常见的压力测试方法有三种:

  1. 历史情景法:直接套用历史极端事件的市场数据(如2015年股灾、2020年疫情冲击)回测策略表现
  2. 假设情景法:自定义极端参数(如沪深300单日下跌15%、波动率飙升至50%)测试策略
  3. 蒙特卡洛情景生成:通过随机模拟生成大量极端市场路径,统计策略的损失分布

实盘压力测试流程#

  1. 确定核心风险因子:如权益 beta、波动率、流动性、相关性
  2. 设计极端情景:覆盖历史极端事件+自定义极端参数组合
  3. 计算情景下的策略最大回撤、CVaR、保证金占用
  4. 制定应对方案:如极端情景下自动降仓、切换对冲策略

多压力情景下组合收益表现

实盘风险管理系统搭建#

将CVaR和压力测试嵌入实盘系统的核心步骤:

  1. 实时计算:每日收盘后更新策略收益序列,计算最新CVaR
  2. 风险预算约束:设定单策略CVaR上限(如总账户的2%),超过则自动降仓
  3. 定期压力测试:每月/每季度执行一次全情景压力测试,调整策略参数
  4. 预警机制:当CVaR连续3个交易日上升超过20%时触发预警,人工介入检查

总结#

CVaR比VaR更能反映极端风险,结合定期压力测试可以大幅提升量化策略的实盘生存能力。对于杠杆策略,建议将CVaR作为核心风控指标,搭配压力测试覆盖黑天鹅风险。

风险管理实战:CVaR计算与压力测试方法
https://blog.halo26812.eu.org/blog/2026-06-05-cvar-stress-testing
Author halo
Published at 2026年6月5日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨