2. 风险与收益度量:收益率计算、波动率、夏普比率、最大回撤、VaR与CVaR

各位同学,咱们今天聊点实在的。做量化投资,说白了就是跟数字打交道。但数字本身不会说话,你得学会怎么听。我个人习惯,拿到一组行情数据,第一件事不是跑模型,而是先把收益和风险这两个维度摸清楚。今天这一章,我就带你把这套基本功练扎实。

核心观点:收益是奖励,风险是代价。没有度量,就没有管理。

2.1 收益率计算:简单收益率 vs 对数收益率

收益率是量化分析的起点。你想想看,连赚了多少都不知道,后面的一切都是空中楼阁。但收益率怎么算,这里头有讲究。

2.1.1 简单收益率

简单收益率,也叫算术收益率。公式很直白:

R_simple = (P_t - P_{t-1}) / P_{t-1}

举个例子,昨天收盘价100块,今天涨到105块,那简单收益率就是5%。

我在项目中遇到过一个问题:当价格出现大幅波动时,简单收益率会带来偏差。比如从100跌到50,收益率是-50%;但从50涨回100,收益率却是+100%。你看,涨跌幅度不对称,这就会让后续的统计计算产生误差。

2.1.2 对数收益率

对数收益率就解决了这个问题:

R_log = ln(P_t / P_{t-1})

还是刚才的例子,从100到50,对数收益率是ln(0.5) ≈ -0.693;从50到100,对数收益率是ln(2) ≈ 0.693。完美对称。

我的建议:做时间序列分析、计算波动率、做回测时,我强烈推荐用对数收益率。它满足正态性假设,而且具有时间可加性。简单收益率更适合做截面比较或计算组合收益。

嗯,这里要注意:如果你做的是高频交易或者日内策略,简单收益率更直观。但做中长线组合管理,对数收益率是标配。

2.2 波动率:风险的第一个度量

波动率,说白了就是收益率的"上蹿下跳"程度。我刚开始做量化时,总觉得波动率越大越好——波动大才有套利空间嘛。后来被市场教育了几次才明白,波动率是把双刃剑。

2.2.1 历史波动率

计算方式很简单,就是收益率序列的标准差:

σ = sqrt( (1/(n-1)) * Σ(R_i - R̄)² )

但这里有个坑:你用什么频率的数据?日数据?周数据?月数据?

我曾经犯过一个错误:用日数据算波动率,然后直接年化,结果发现年化波动率比实际大很多。为什么?因为日收益率有自相关性,直接年化会放大噪声。

避坑指南:年化波动率 = 日波动率 × sqrt(252)。但前提是你的日收益率是独立同分布的。如果数据有自相关,这个公式会失真。我建议先用Ljung-Box检验一下自相关性。

2.2.2 年化波动率

数据频率 年化因子 说明
日数据 sqrt(252) A股交易日约252天
周数据 sqrt(52) 一年约52周
月数据 sqrt(12) 一年12个月

2.3 夏普比率:收益与风险的平衡

夏普比率是量化圈最常用的指标之一。它回答了一个问题:你每承担一单位风险,获得了多少超额收益?

Sharpe = (R_p - R_f) / σ_p

其中R_p是组合收益率,R_f是无风险利率,σ_p是组合波动率。

我个人习惯,夏普比率低于1的策略基本不看。为什么?因为这意味着你的策略收益跟波动差不多,说白了就是"白忙活"。

经验之谈:夏普比率大于2的策略,要么是数据有误,要么是过拟合了。我见过太多人拿着夏普3.0的回测结果兴奋不已,结果实盘一跑就现原形。

2.4 最大回撤:最坏情况下的亏损

最大回撤,就是你在某个时间段内,从最高点到最低点的最大亏损幅度。这个指标比波动率更直观——它告诉你"最惨能亏多少"。

Max Drawdown = min( (P_t - Peak) / Peak )

其中Peak是到时间t为止的历史最高点。

我记得有一次,一个策略的夏普比率有1.8,看起来很漂亮。但最大回撤达到了40%。我跟团队说,这个策略不能上实盘。为什么?因为40%的回撤,客户早就跑光了。你想想看,谁能扛住账户缩水40%还不割肉?

我的建议:看策略时,先看最大回撤,再看夏普比率。回撤超过30%的策略,除非你有极强的风控能力,否则别碰。

2.5 VaR与CVaR:尾部风险的度量

波动率和最大回撤只能描述"一般情况"下的风险。但金融市场最怕的是"黑天鹅"——那些极端事件。VaR和CVaR就是用来度量尾部风险的。

2.5.1 VaR(Value at Risk)

VaR回答的是:在95%或99%的置信水平下,最大可能亏损是多少?

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

计算VaR有三种方法:

  • 参数法:假设收益率服从正态分布,直接用均值和标准差算
  • 历史模拟法:直接用历史数据的分位数
  • 蒙特卡洛模拟法:随机生成大量路径,统计亏损分布

我曾经在项目中用过参数法算VaR,结果被审计质疑了。为什么?因为金融数据往往有厚尾特征,正态分布假设会低估风险。后来我改用历史模拟法,虽然计算量大一些,但结果更可靠。

避坑指南:VaR有一个致命缺陷——它只告诉你"最大亏损不超过X",但没告诉你"如果超过X,会亏多少"。这就是为什么我们需要CVaR。

2.5.2 CVaR(Conditional VaR)

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

CVaR = E[ Loss | Loss > VaR ]

举个例子,95% VaR = -2%,CVaR = -5%。意思是:在最坏的5%情况下,平均亏损是5%。

我个人更偏好用CVaR做风控。因为它考虑了尾部损失的"深度",而不仅仅是"边界"。

2.6 知识体系总览

下面这张图,我把本章的核心逻辑梳理了一下。你可以把它当作一个检查清单:

风险与收益度量知识体系 风险与收益度量 收益度量 简单收益率 对数收益率 风险度量 波动率(历史/年化) 夏普比率 最大回撤 尾部风险 VaR(在险价值) CVaR(条件VaR) 收益是奖励,风险是代价。没有度量,就没有管理。

2.7 实战中的注意事项

最后,我总结几条实战经验,希望能帮你少走弯路:

  1. 数据频率要匹配:做日频策略就用日数据算波动率,别拿周数据去套日频模型。
  2. 窗口期选择:计算历史波动率时,窗口期太短噪声大,太长反应迟钝。我个人习惯用60个交易日。
  3. 无风险利率:国内一般用10年期国债收益率,或者SHIBOR 3个月。别用美国的。
  4. VaR的局限性:它不满足次可加性,这意味着组合的VaR可能大于各资产VaR之和。CVaR没有这个问题。
  5. 回测vs实盘:回测中的最大回撤通常比实盘小20%-30%。我一般会在回测结果上打个折扣。

一句话总结:收益率告诉你赚了多少,波动率告诉你稳不稳,夏普比率告诉你值不值,最大回撤告诉你疼不疼,VaR和CVaR告诉你最坏情况有多坏。五个指标一起看,才能看清全貌。

专注资料整理