OptiNod 学院

夏普与索提诺——除以波动率的绩效,以及连上行也要惩罚的局限

只用收益率比较策略,会漏掉达到同一收益的路径上波动率的差异。本文梳理夏普比率的局限,以及索提诺比率为什么更贴近实盘。

即使收益率相同,路径上的波动率不同,实盘中能否坚持下来也会不同。夏普比率衡量的就是这种波动率,但它连向上的急涨也算作风险。


夏普比率(Sharpe Ratio)是William Sharpe在1966年整理出的一个简单比值。用策略的平均收益减去无风险收益率,再除以收益率的标准差。分子是“承担风险所得到的超额收益”,分母是“获得这些收益期间收益率波动了多少”。它把每一单位波动率带来了多少超额收益,压缩成一个数字。


大多数交易者只拿收益率这一个数字来比较策略。A策略年化80%,B策略年化60%,就得出A更好的结论。这种比较漏掉的是分母。如果A在达到80%的过程中资金曲线波动了30%,而B只波动了12%,那么在实盘中几乎没有人会把A持有到最后。因为中途的回撤会让人撒手。收益率相同的两个策略,只要波动率不同,就是完全不同的策略。


不过夏普比率本身也有结构性的弱点。分母中的标准差把向上跳动的波动和向下坠落的波动同样算作风险。一天上涨 +10%的日子也计入波动率,使得分数被扣减。交易者真正害怕的只有下行,但夏普连这种向上的急涨也当作风险。弥补这个弱点的,是只把下行放进分母的索提诺比率(Sortino Ratio)。


即使收益率相同,波动率不同,能否承受这个策略也会不同
即使收益率相同,波动率不同,能否承受这个策略也会不同

收益率相同,波动率不同就是不同的策略


夏普比率的出发点,是用收益除以波动率这个简单的想法。以更低的波动率实现同样超额收益的策略,得分更高。在实盘中这个分母之所以重要,是因为人承受回撤的能力有限。波动率大的资金曲线会在中途形成很深的坑,大多数交易者会在这个坑里平仓或减仓。即使最终收益率很好,如果无法把这条曲线持有到最后,这份收益就没有兑现。


用BTC的实际数据来看,2023年第一季度(1月1日至4月1日),BTC从16,617美元涨到28,453美元,上涨约71%。同一时期日收益率的标准差约为2.96%。同样是71%,如果日波动率在1%多一点,资金曲线会平缓得多,交易者在达到同样收益的过程中承受的心理压力也完全不同。只比较收益率这一个数字,这个差异就完全消失了。


分子中的无风险收益率也需要说明。夏普比率先把总收益中的无风险收益率扣除,把得到的超额收益放进分子。无风险收益率是同一笔资金在没有风险的情况下运作所能得到的收益,通常采用短期国债利率或货币市场利率。它随时期而变,有时接近0%,有时在年化4~5%的水平,没有固定值。加密策略的年化收益率如果是几十个百分点的量级,把无风险收益率设为0结果也不会有太大变化,但要让比较对象之间使用相同的无风险收益率,分子才不会错位。


所有这些计算的出发点是相同的。比较策略时,第一个问题是每一单位波动率赚了多少。收益率本身是第二个问题。在相同杠杆下,用25%波动率做出年化50%的策略,可以比用60%波动率做出年化80%的策略放大得更多。因为波动率低,在同样的风险预算内就有空间把仓位做得更大。收益率高的策略并不总是更好的策略。


夏普把向上跳动的波动同样算作风险


夏普比率分母中的标准差,是把偏离平均值的所有偏差平方后相加。不管是向上偏离还是向下偏离,只看距离,同样算作风险。矛盾由此产生。交易者当作亏损来接受的只是向下坠落的波动,但夏普把一天上涨 +10%的日子也计入波动率,使分数降低。大幅上涨越频繁的策略,分母越大,夏普就越低。


这个效应在加密市场尤其大。BTC的向上急涨与向下急跌一样大,有时还更大。看2024年第四季度(10月1日至年底)BTC的日收益率,单日最大涨幅是 +10.3%,单日最大跌幅是 -5.59%。波动最大的一天在上方。夏普比率把这个 +10.3%当作波动率,使分母变大,同时压低策略的分数。对交易者来说最高兴的一天,在指标里反而成了扣分因素。


用索提诺比率重新计算同一时期,情况就不同了。2024年第四季度BTC的日标准差约为2.53%,但只看下行的下行偏差(Downside Deviation)约为1.31%。分母缩小到一半左右,索提诺约是夏普的1.93倍。收益率相同,数据相同,只要在风险计算中去掉向上的急涨,对策略的评价就会相差将近两倍。这个差距越大,说明该策略的上行波动越大。


夏普把向上的急涨也算作风险,索提诺只把下行放进分母
夏普把向上的急涨也算作风险,索提诺只把下行放进分母

索提诺只把下行偏差放进分母


索提诺比率保持分子不变,只改变分母。只挑出低于目标收益率(通常为0)的日子的收益率,平方后相加,高于目标的日子在分母计算中按0处理。这就是下行偏差。向上跳动的波动不算作风险,所以分母只反映交易者实际要承受的亏损波动。即使是同一个策略,上行波动越大,夏普与索提诺的差距就越大。


2023年第一季度的BTC很好地说明了这种差距。这一区间的日标准差约为2.96%,下行偏差约为1.44%,不到一半。90个交易日中上涨的天数和下跌的天数相近,但最大涨幅 +9.62%大于最大跌幅 -6.19%。大幅波动集中在上方。结果年化夏普约为4.1,而年化索提诺约为8.5,索提诺超过夏普的两倍。


怎么读这个差距,在实盘中很重要。索提诺明显高于夏普,意味着该策略的波动主要来自上方。趋势跟踪策略经常是这种形态。它的结构是小额亏损频繁止损、大额盈利一次拿下,因此大幅的上行波动把夏普拉低。如果只看夏普就放弃这种策略,就会错过实盘中最好驾驭的策略。索提诺更能体现这种策略的实际面貌。


加密市场不能直接套用股票的年化方式


夏普和索提诺通常经过年化后再比较。做法是把日指标乘以交易日数的平方根,而各资产类别的交易日数不同。股票一年约252个交易日,所以标准差乘以 √252,约15.9。加密货币没有周末和节假日,24小时全年365天交易,所以应乘以 √365,约19.1。两个系数之比约为1.20,因此在加密市场直接使用股票的系数,会把波动率比实际低估约17%。


这个差异会扭曲比较。把2023年第一季度BTC的日标准差2.96%用 √365年化,约为56.6%,但如果误用 √252,则为约47.0%。相当于把波动率低估了9.6个百分点,分母变小,夏普比率就被夸大了。把股票用的回测工具直接拿来跑加密数据,夏普看起来比实际更好的陷阱就出在这里。


这看起来只是对齐年化系数的简单问题,但在把不同资产类别放在一起比较时尤其危险。把股票策略和加密策略的夏普并排比较来挑选时,如果只有一方用252、另一方用365,比较本身就错位了。如果不确认回测结果的年化系数是以哪个资产类别为准,看起来不错的夏普,可能只是计算方式造成的错觉。


在肥尾分布中,夏普会低估风险


夏普和索提诺有一个共同的前提,即都用标准差来衡量波动率。收益率接近正态分布时,标准差能很好地概括风险。但加密货币的收益率是尾部比正态分布更厚的肥尾(Fat Tail)分布。平时很安静,偶尔会真的出现按标准差衡量几乎不可能出现的大幅暴跌。标准差没有充分反映这种罕见的大额亏损的风险。


平稳区间越长,夏普比率就越高。低波动的横盘区间持续时,分母变小,夏普上升,而这种平稳本身有可能正在掩盖下一次大幅暴跌的风险。2022年LUNA崩塌之前的几个月,以及多种山寨币被卷入连环清算之前的区间,就是这个样子。日波动率一直很低的资产在几天内就连续跌去几十个百分点,这样的亏损幅度,是之前的夏普完全无法预料的。


索提诺只看下行,所以比夏普多反映一点这种风险,但它仍然带着属于标准差一类的局限。两个指标都对频繁的小波动比对一次大额亏损更敏感。因此在肥尾明显的资产上,夏普和索提诺要与最大回撤(MDD)一起看。如果不同时确认资金曲线最深的坑有多深,高夏普有可能只是在侥幸躲过大幅暴跌的区间里得出的值。


按标准差衡量几乎不可能出现的大幅暴跌,在肥尾分布中真实发生
按标准差衡量几乎不可能出现的大幅暴跌,在肥尾分布中真实发生

样本太短,两个指标都不可信


夏普和索提诺由平均值和标准差计算而来,所以样本少时,两个值都会大幅波动。从30个交易日的回测得出的夏普3.0,远不如从两年数据得出的夏普1.5可信。短区间很可能碰巧波动率较低,或者趋势恰好朝一个方向,这种巧合会让分母变小,从而夸大夏普。样本很短时的高夏普,基本不要相信才更稳妥。


索提诺的这个问题更严重。分母只用下跌日的收益率来计算,所以在短区间内下跌日只有寥寥几天时,下行偏差本身就变得不稳定。在下跌日恰好较少的区间里,索提诺会高得不切实际。持续强势上涨的短区间,这种扭曲越大。下跌日少使分母变小,得到的是在实盘中难以再次出现的索提诺数值。


下面整理验证时要检查的项目。


  • 样本量:回测区间是否至少一年以上,按日数据计算是否在250根以上。低于这个量,夏普和索提诺的值只作参考。
  • 年化系数:加密是否使用了 √365,股票是否使用了 √252。混合资产类别比较时,确认双方系数一致。
  • 下跌日数:构成索提诺分母的下跌日是否足够多。下跌日不足20个时,不把索提诺作为单独的依据。
  • 同时确认最大回撤:是否一并确认了同一区间的MDD。高夏普与深MDD同时出现时,要怀疑肥尾风险。

两个指标要通过差距一起读


夏普和索提诺要放在一起看,并排比较它们的差距,能获得的信息最多。索提诺明显高于夏普,说明这是波动主要来自上方的策略。像趋势跟踪那样一次拿下大额盈利的结构就属于这种。两个值接近,意味着上行和下行波动接近对称,波动不偏向任何一边。


通过两个指标的差距,区分波动来自上行还是双向
通过两个指标的差距,区分波动来自上行还是双向

反过来,如果索提诺只比夏普略高或几乎相同,而绝对数值又很低,就是亏损波动与盈利波动一样频繁且幅度很大的信号。这样的策略即使平均收益相同,在实盘中资金曲线的坑也很深,难以承受。像前面看到的BTC 2024年第四季度那样,索提诺与夏普相差近两倍的区间是上行较大的市场,差距较小的区间则是波动在两个方向上均匀出现的市场。即使是同一个资产,这个差距也会随时期而变。


在实盘中挑选策略时,先把想看收益率的冲动放一放,首先看每单位波动率赚了多少。然后通过夏普与索提诺的差距,读出这种波动来自哪个方向,最后用最大回撤和样本量,确认这个数值是巧合,还是还能再次出现的值。经过这三步,就能看到只用收益率一个数字比较时漏掉的策略真实面貌。收益率最高的策略恰好是最适合加大仓位的策略,这种情况比想象中少见。

检查你自己的回测结果

上传优化结果 CSV 或 TradingView 策略的交易列表,即可同时查看绩效指标和稳健性检查结果。无需登录即可分析。

分析我的结果文件 查看分析示例