4、风险指标详解:波动率(年化)、最大回撤(MDD)、下行风险、VaR(在险价值)、CVaR(条件在险价值)

做套利策略,最怕什么?

不是赚得少,而是突然某天爆仓,或者回撤大到让你怀疑人生。

我见过太多人,策略夏普比高得吓人,结果一个黑天鹅直接归零。所以今天咱们聊聊风险指标。这些指标,说白了就是给你的策略做「体检」——看看它到底扛不扛揍。

核心观点: 收益是策略的上限,风险是策略的底线。不懂风险,赚再多也是纸面富贵。

4.1 波动率(年化)—— 策略的「心跳」

波动率衡量的是策略收益的离散程度。简单说,就是你的净值曲线抖不抖。

我个人习惯把波动率看作策略的「心跳」。心跳太慢(波动率低),说明策略可能太保守;心跳太快(波动率高),说明策略可能随时猝死。

年化波动率的计算公式:

年化波动率 = 日收益率标准差 × √252

为什么是252?因为一年大概有252个交易日。这个公式假设收益率是独立同分布的,虽然现实中不完全成立,但够用了。

我的经验: 套利策略的年化波动率通常控制在5%-15%之间。如果超过20%,你就要小心了——这已经不是套利,是在赌博。

举个例子:

import numpy as np

# 假设某套利策略的日收益率序列
daily_returns = [0.001, -0.0005, 0.002, -0.001, 0.0015, ...]
std_daily = np.std(daily_returns)
annual_vol = std_daily * np.sqrt(252)
print(f"年化波动率: {annual_vol:.2%}")

嗯,这里要注意:如果策略交易频率很低(比如周频),就用周收益率乘以√52。别搞混了。

4.2 最大回撤(MDD)—— 策略的「至暗时刻」

最大回撤,就是从净值最高点到最低点的最大跌幅。它告诉你:在最坏的情况下,你会亏多少钱。

我刚开始做量化时,总觉得最大回撤就是个数字。直到有一次,我的策略回撤了18%,客户直接打电话来骂娘……从那以后,我把MDD当作策略的「生命线」。

计算公式:

MDD = max( (Peak - Trough) / Peak )

其中Peak是历史最高净值,Trough是Peak之后的最低净值。

避坑指南: 我曾经见过一个策略,回测时MDD只有5%,实盘却回撤了20%。为什么?因为回测时用的是「未来数据」——回撤还没走完就提前平仓了。记住:MDD必须是「已实现」的回撤,不能是「假设」的。

我个人习惯用「回撤修复时间」来辅助判断。如果一个策略回撤20%后,需要3年才能修复,那这个策略基本废了。

4.3 下行风险 —— 只看「坏」的波动

波动率把上涨和下跌都算进去了。但说实话,上涨的波动我们巴不得越大越好,对吧?

下行风险只关注亏损时的波动。它衡量的是策略「跌起来有多狠」。

计算公式:

下行风险 = √( 1/N × Σ min(0, r_i - r_target)² )

其中r_target是目标收益率,通常设为0或者无风险利率。

你想想看,两个策略年化波动率都是15%,但一个下行风险只有5%,另一个是12%。你会选哪个?当然是前者——它跌得少,涨得多。

我的习惯: 在评估套利策略时,我优先看下行风险,而不是总波动率。因为套利策略的核心是「低风险」,而不是「低波动」。

4.4 VaR(在险价值)—— 最坏情况下的损失

VaR问的是:在95%(或99%)的置信水平下,未来一天(或一周)最大可能亏损是多少?

说白了,就是「最坏情况下的损失底线」。

参数法(假设正态分布):

VaR_95% = μ - 1.645 × σ

其中μ是预期收益率,σ是标准差,1.645是95%置信水平对应的z值。

历史模拟法(更常用):

# 假设有1000个历史收益率
sorted_returns = sorted(historical_returns)
VaR_95 = sorted_returns[int(0.05 * len(sorted_returns))]

避坑指南: 我曾经用参数法算VaR,结果策略实盘时亏损远超VaR值。为什么?因为收益率不是正态分布——它有肥尾。所以我建议用历史模拟法,或者至少做一下正态性检验。

VaR的局限性也很明显:它只告诉你「最坏情况下的损失底线」,但没告诉你「如果超过底线,会亏多少」。这就引出了下一个指标。

4.5 CVaR(条件在险价值)—— 比VaR更狠

CVaR也叫期望损失(Expected Shortfall)。它问的是:当亏损超过VaR时,平均会亏多少?

举个例子:VaR告诉你「95%的情况下,一天最多亏5万」。CVaR告诉你「如果那5%的坏情况发生了,平均会亏8万」。

计算公式:

CVaR_95% = 平均(所有小于VaR_95%的收益率)

用代码实现:

def calculate_cvar(returns, confidence=0.95):
    sorted_returns = sorted(returns)
    var_index = int((1 - confidence) * len(sorted_returns))
    var = sorted_returns[var_index]
    cvar = np.mean(sorted_returns[:var_index])
    return var, cvar

我的观点: 如果你只能选一个风险指标,我建议选CVaR。它比VaR更保守,也更真实。巴塞尔协议III现在也要求银行用CVaR替代VaR了。

4.6 五个指标的关系与选择

这五个指标不是孤立的,它们从不同角度描述风险:

指标 衡量什么 适用场景
年化波动率 整体波动幅度 初步筛选
最大回撤 历史最差表现 风控红线
下行风险 下跌时的波动 套利策略评估
VaR 最坏情况底线 日常风控
CVaR 极端损失均值 压力测试

我个人习惯这样用:先用波动率和MDD做快速筛选,再用下行风险和CVaR做深度评估。VaR作为日常监控指标。

重要提醒: 所有风险指标都是基于历史数据的。历史会重演,但不会简单重复。别把回测的VaR当成实盘的保证——我吃过这个亏。

套利策略风险指标体系 风险指标 年化波动率 最大回撤 (MDD) 下行风险 VaR (在险价值) CVaR (条件在险价值) 五个指标从不同维度评估策略风险,建议组合使用

最后说一句:风险指标不是越多越好,关键是要理解每个指标背后的含义,以及它们之间的权衡。我个人最看重CVaR和下行风险,因为它们更贴近套利策略的实际情况。

总结: 波动率看整体,MDD看历史最差,下行风险看下跌质量,VaR看底线,CVaR看极端。五个指标一起用,才能全面评估策略的风险特征。


公众号:蓝海资料掘金营,微信deep3321