第27章 绩效归因分析:收益来源分解、夏普比率、最大回撤
各位,波动率曲面套利策略跑起来了,回测曲线也挺漂亮。但问题来了——这钱到底是怎么赚的?
我见过太多团队,策略赚钱时兴高采烈,一亏钱就抓瞎。说白了,就是没做绩效归因。今天咱们就把这块硬骨头啃下来。
27.1 收益来源分解:拆开黑箱看本质
我个人习惯,做任何策略都要先问三个问题:
- 赚的是方向的钱,还是波动的钱?
- 是曲面形态的钱,还是时间价值的钱?
- 有没有隐含的尾部风险在替你买单?
对于跨品种套利,收益来源可以拆成四块:
| 收益来源 | 驱动因素 | 典型特征 |
|---|---|---|
| 曲面斜率收益 | 不同期限隐含波动率差异 | 均值回复,周期性强 |
| 曲面曲度收益 | 虚值/实值期权定价偏差 | 尾部事件时爆发 |
| 跨品种价差收益 | 相关性结构变化 | 趋势性,但回撤大 |
| 时间衰减收益 | Theta 收割 | 稳定但容量有限 |
具体怎么拆? 我一般用回归法:
# 收益分解示例(Python伪代码)
import statsmodels.api as sm
# 假设我们有每日收益序列
daily_returns = strategy.pnl.diff()
# 构造因子暴露矩阵
factors = pd.DataFrame({
'slope_delta': slope_changes, # 曲面斜率变化
'curvature_delta': curv_changes, # 曲度变化
'spread_delta': spread_changes, # 品种价差变化
'theta_decay': theta_values # 时间衰减
})
# 多元线性回归
model = sm.OLS(daily_returns, sm.add_constant(factors))
results = model.fit()
print(results.summary())
# 看每个因子的系数和显著性
关键点: 如果回归的 R² 低于 0.7,说明你的收益还有大量无法解释的部分。这时候要小心——可能是运气,也可能是你没发现的隐性风险。
27.2 夏普比率:别被数字骗了
夏普比率,量化圈最常用的指标。但说实话,很多人用错了。
标准公式大家都懂:
Sharpe = (Rp - Rf) / σp
但这里有几个坑,我一个个说:
- 计算频率问题:日频夏普和年化夏普差很多。我习惯用日频数据算,再年化。年化因子 = sqrt(252)。
- 收益率分布假设:夏普比率假设收益是正态分布。但期权策略的收益分布,你想想看——有偏、厚尾,夏普比率会失真。
- 无风险利率选择:用国债收益率?还是用 Libor?我个人建议用隔夜拆借利率,更贴近实际资金成本。
避坑指南: 我曾经见过一个策略,夏普比率高达 3.5,但最大回撤只有 2%。后来一查,是因为用了月度数据计算,而且没考虑交易成本。换成日频数据后,夏普直接掉到 1.2。所以——永远用最高频的数据算夏普。
另外,我建议同时看 Sortino 比率(只考虑下行波动)和 Calmar 比率(收益/最大回撤)。这三个指标放一起,才能看清策略的真实风险收益特征。
27.3 最大回撤:最诚实的风险指标
最大回撤,说白了就是你最多亏过多少钱。这个数字很残酷,但很诚实。
计算方式不复杂:
# 最大回撤计算
def max_drawdown(equity_curve):
rolling_max = equity_curve.cummax()
drawdown = (equity_curve - rolling_max) / rolling_max
return drawdown.min()
# 回撤持续时间
def drawdown_duration(equity_curve):
# 记录从峰值到恢复的天数
peak = equity_curve[0]
duration = 0
max_duration = 0
for val in equity_curve:
if val >= peak:
peak = val
duration = 0
else:
duration += 1
max_duration = max(max_duration, duration)
return max_duration
但光看最大回撤还不够。我一般会看三个维度:
- 回撤深度:最大亏损比例
- 回撤时长:从峰值到恢复需要多久
- 回撤频率:一年发生几次超过 5% 的回撤
举个例子,两个策略:
- 策略 A:最大回撤 15%,但 3 天就恢复
- 策略 B:最大回撤 10%,但需要 6 个月恢复
你选哪个?我个人选 A。因为回撤时长直接影响资金利用率,也影响你的心理承受能力。
27.4 知识体系框架
下面这张图,是我做绩效归因的核心逻辑:
27.5 实战中的几个要点
最后,分享几个我在实战中总结的经验:
我的习惯: 每周做一次绩效归因报告。不是等亏钱了才去查,而是持续监控。如果连续两周收益来源从「曲面斜率」变成「时间衰减」,说明市场结构变了,策略可能需要调整。
关于夏普比率的陷阱——我记得有一次,一个策略夏普 2.8,但仔细一看,是因为它在大部分时间空仓,只有少数几天有收益。这种策略的夏普没有意义。我建议同时看交易频率和持仓时间。
关于最大回撤的认知——嗯,这里要注意:最大回撤是历史数据,不代表未来。但如果你发现策略的回撤集中在某个特定市场环境下(比如波动率飙升时),那就要考虑加对冲了。
好了,绩效归因这块就聊到这儿。记住一句话:不能解释的收益,就是隐藏的风险。