风险的度量:波动率、VaR、CVaR、最大回撤——我们到底该用哪个?

做风险预算,第一步就是回答一个灵魂拷问:风险到底是什么?

你打开任何一本量化教材,都会看到一堆风险指标——波动率、VaR、CVaR、最大回撤。新手往往一脸懵:我到底该用哪个?

说实话,我刚开始做量化那会儿也犯过难。有一次我拿着一个策略的回测报告去见老板,上面只放了波动率和最大回撤。老板看了一眼,问了一句让我至今难忘的话:“你这个策略,最坏情况下一天能亏多少?” 我答不上来。因为波动率和最大回撤,都回答不了这个问题。

所以今天,我们就来把这几个指标掰开揉碎,讲清楚它们的本质、适用场景,以及——在风险预算里,我到底该用哪个

风险度量指标 波动率 (Volatility) 标准差,衡量离散程度 VaR (在险价值) 给定置信水平下的最大损失 CVaR (条件VaR) 尾部损失的期望值 最大回撤 (Max DD) 从峰值到谷底的最大跌幅 风险预算中:CVaR 最常用,波动率做辅助

1. 波动率:最基础,但最不“风险”

波动率,说白了就是收益率的标准差。它衡量的是资产价格上下波动的剧烈程度。

优点很明显:计算简单,数据好拿,而且有很好的数学性质——方差可加、可分解,做优化时特别顺手。

但问题也很大。我举个例子:

  • 策略A:每天稳定赚0.1%,偶尔一天亏5%
  • 策略B:每天上下波动2%,但长期不赚钱

你猜哪个波动率更高?很可能是B。但哪个更危险?显然是A——因为A的那一次亏损,可能直接让你爆仓。

核心结论:波动率只告诉你“动得有多厉害”,不告诉你“会亏多少”。在风险预算里,它适合做约束条件,不适合做目标函数

2. VaR:终于能回答“最坏情况”了

VaR(Value at Risk,在险价值)回答的就是老板那个问题:“最坏情况下,一天能亏多少?”

它的定义很简单:在给定的置信水平(比如95%)下,未来一段时间内的最大可能损失。

举个例子:95% VaR = -2%,意思是——有95%的把握,你的亏损不会超过2%。

听起来不错对吧?但我得提醒你一个坑:VaR 不告诉你那剩下的5%会发生什么

我曾经见过一个策略,95% VaR 只有 -1.5%,看起来非常安全。结果呢?那5%的尾部里,有一次直接亏了30%。VaR 完全没捕捉到。

避坑指南:VaR 不满足“次可加性”(subadditivity),这意味着分散化投资组合的 VaR 可能比各资产 VaR 之和还大——这显然违背了“分散化降低风险”的基本常识。

3. CVaR:尾部风险的“照妖镜”

CVaR(Conditional VaR,条件在险价值),也叫 Expected Shortfall(期望损失)。它回答的是:“当最坏情况真的发生时,我平均会亏多少?”

还是刚才那个例子:95% VaR = -2%,那 CVaR 就是——在所有亏损超过2%的日子里,这些亏损的平均值。

这个指标好在哪里?它关注尾部。那些极端行情、黑天鹅事件,VaR 可能视而不见,但 CVaR 会把它算得清清楚楚。

我个人习惯在风险预算里用 CVaR 作为核心目标。为什么?因为它满足次可加性,而且对尾部风险极其敏感。你想想看,做风险预算不就是为了防范极端情况吗?

实战技巧:计算 CVaR 时,建议用历史模拟法或蒙特卡洛模拟。参数法(假设正态分布)会严重低估尾部风险——金融市场哪有那么“乖”的正态分布?

4. 最大回撤:投资者的“心理底线”

最大回撤(Maximum Drawdown),就是从净值最高点到最低点的最大跌幅。

这个指标特别直观。你跟客户说“这个策略最大回撤15%”,他马上就能理解——哦,最惨的时候亏了15%。

但我要泼一盆冷水:最大回撤是一个“事后”指标。它只能告诉你过去发生了什么,不能预测未来。而且它极度依赖样本区间——如果你选的区间刚好没遇到大熊市,最大回撤会非常好看,但这不代表策略真的安全。

我记得有一次回测一个CTA策略,三年最大回撤只有8%,看起来稳得很。结果一拉到2015年股灾期间,最大回撤直接飙到35%。这就是样本偏差的威力。

我的建议:最大回撤适合做风控红线——比如“回撤超过20%就强制止损”。但不适合做风险预算的优化目标,因为它不满足任何数学上的优良性质。

5. 到底该用哪个?一张表说清楚

指标 优点 缺点 风险预算中的角色
波动率 计算简单,数学性质好 不区分涨跌,忽略尾部 约束条件
VaR 直观,监管常用 不满足次可加性,忽略尾部 辅助参考
CVaR 关注尾部,满足次可加性 计算稍复杂 核心目标
最大回撤 直观,客户易理解 事后指标,样本依赖 风控红线

6. 代码实战:用Python计算这四个指标

光说不练假把式。我们来看看怎么用Python算这些指标。假设你有一组收益率数据:

import numpy as np
import pandas as pd

# 模拟收益率数据(1000个交易日)
np.random.seed(42)
returns = np.random.normal(0.001, 0.02, 1000)

# 1. 波动率(年化)
volatility = np.std(returns) * np.sqrt(252)
print(f"年化波动率: {volatility:.2%}")

# 2. VaR(95%置信水平,日度)
var_95 = np.percentile(returns, 5)
print(f"95% VaR (日): {var_95:.2%}")

# 3. CVaR(95%置信水平,日度)
cvar_95 = returns[returns <= var_95].mean()
print(f"95% CVaR (日): {cvar_95:.2%}")

# 4. 最大回撤
cum_returns = np.cumprod(1 + returns)
peak = np.maximum.accumulate(cum_returns)
drawdown = (cum_returns - peak) / peak
max_drawdown = drawdown.min()
print(f"最大回撤: {max_drawdown:.2%}")

输出结果:

年化波动率: 31.75%
95% VaR (日): -3.18%
95% CVaR (日): -4.52%
最大回撤: -28.34%

你看,CVaR 比 VaR 更“悲观”——它告诉你尾部平均亏损是4.52%,而不是3.18%。这多出来的1.34%,就是那些极端行情带来的真实风险。

7. 我的最终建议

做了这么多年风险预算,我的经验是:

  • 核心用 CVaR:它最贴近“风险”的本质——尾部损失。
  • 波动率做辅助:用来控制整体波动水平,或者做约束条件。
  • VaR 做监管合规:很多机构要求报 VaR,那就报呗,但心里要有数。
  • 最大回撤做风控红线:设一个硬性止损线,别让回撤失控。

嗯,说白了就是——CVaR 是将军,波动率是参谋,VaR 是外交官,最大回撤是守门员。各司其职,缺一不可。

下次有人问你“风险怎么度量”,你可以把这张表甩给他。然后说一句:“看你想防什么——防日常波动,还是防黑天鹅?”

专注资料整理