分类
绩效
难度
进阶
适用场景
EA 评估回测

夏普比率

夏普比率:一项风险调整后的收益指标——超额收益除以收益率的标准差。它奖励平滑的资金曲线,因此可以一路吹捧一个马丁格尔 EA,直到它爆仓的那一刻。

亦称:夏普, Sharpe

更新于

一句话讲清

相对于这一路有多颠簸,策略赚到了多少收益?它奖励稳步的爬升,惩罚锯齿状的爬升,哪怕锯齿状的那条最终更高。请把它读成平滑度评分,而不是盈利评分。

为什么重要

对于一个你打算无人值守地放着跑的 EA,资金曲线的形状和它最终落在哪里同样重要,因为正是剧烈的摆动会让交易者在最糟的时刻出手干预。夏普比率是把这个形状变成一个数字的标准方法——同时也是对那些风险尚未兑现的策略产生误判的标准途径。

  • 它把两个收益完全相同的策略区分开。一个靠小额而规律的盈利一点点磨出来,另一个在单独一个爆发月里做出同样的总额,这是两种不同的产品,而只有风险调整后的数字才会这样说。
  • 它是 EA 卖家引用最多的数字,所以知道它怎么算本身就是一种防御:换一个采样频率,同一个策略就会给出不同的夏普,而底层交易一点都没变。
  • 它有一个众所周知、在 EA 营销里极常见的盲区——它看不见尚未平仓的风险,而那恰恰是马丁格尔或网格所背负的风险。

如何计算

夏普比率 =(平均收益率 − 无风险利率)÷ 收益率的标准差
平均收益率
在所用采样周期内的平均收益率——每笔交易、每日或每月。
无风险利率
不承担市场风险即可获得的收益,通常是短期国库券。它是衡量策略的基准——没有任何交易策略是无风险的,而这正是这项比较值得做的原因。在 EA 回测中通常被设为零。
收益率的标准差
收益率围绕自身均值分散得有多宽,向上与向下的偏离同等计入。

分母才是全部论点所在。波动率随测量频率而变,所以按每笔交易、按日、按月计算出的夏普,对同一个策略而言是三个不同的数字。年化数值按惯例来自月度收益率;而 MetaTrader 5 的策略测试器并不是这么算的。

多少算高、多少算低

  • 低于 0.5 波动并没有付钱给你
  • 0.5–1.0 作为组合中的一条腿可以接受,单独使用则不行
  • 1.0–2.0 扎实——大多数可信策略都住在这里
  • 高于 2.0 对零售 EA 回测来说好得可疑——在有前向测试之前先假定过拟合

需要一起看的指标

单一数字无法描述一套策略。下列指标会改变这个数字的读法。

示例

两个 EA 在同一年里都赚了 30 %。第一个稳步上行;第二个横盘颠簸了十一个月,然后一跃而起。夏普把第一个排在前面,因为这个排序讲的是收益率的离散程度,而不是它们的总和。

EA A —— 年度收益
+30 %
EA A —— 月度收益率的标准差
10 %
无风险利率为零时夏普 3.0。
EA B —— 年度收益
+30 %
EA B —— 月度收益率的标准差
30 %
无风险利率为零时夏普 1.0。

这里没有任何一句话说 EA B 不赚钱——只是说它是通过一条宽了三倍的路交出同样的结果。

计算 30 ÷ 10 = 3.0 · 30 ÷ 30 = 1.0

结果 同样的利润,风险调整后的质量相差三倍

怎么读这个数字

在你知道采样频率、样本长度以及产出它的工具之前,一个夏普数字不携带任何信息。先把这三样确定下来,再去读这个数。

区间 含义
来自 MetaTrader 5 的策略测试器 由测试器自己的收益序列算出,因此与用年化月度收益率手工计算的夏普并不吻合。那条熟悉的「高于 2.0 就是优秀」的阶梯并不能套到它身上。
由月度收益率年化而来 公开基准线所依据的惯例基础,也是那些基准线唯一应当被对照阅读的基础。
在不足约一年的区间上测得 统计上噪声很大。一个耀眼的三个月数值,在整整一年的尺度上常常腰斩,而策略本身什么都没变。
用在一个把亏损单挂着不平的策略上 具有主动误导性。未实现亏损从不会进入已实现收益序列,所以曲线之所以看起来平滑,恰恰是因为风险还没有被承担。
  • 除非两个数字出自同一工具、同一采样频率、同一时间跨度,否则永远不要用夏普给两个 EA 排名。
  • 这个公式假定收益率大致服从正态分布。马丁格尔和网格的收益率恰恰相反——长时间的平静之间点缀着罕见的巨额亏损——所以夏普会系统性地低估它们的尾部风险。
  • 把它和最大回撤并排放,后者回答夏普无法回答的问题:最糟的那个坑到底有多深?
  • 如果大幅盈利的月份正在被扣分,那就改读索提诺比率——它只除以下行偏差。

mt5depot 的 EA 页面会写明每个数字来自哪一次测试运行、覆盖哪个窗口,因此本站公开的两个数字彼此之间是可比的。

常见误区

相信马丁格尔或网格 EA 的高夏普

这类策略会展示近乎垂直的资金曲线,已实现波动率极小,因为每一笔亏损仓位都被挂着摊低成本而不是平掉。夏普只看见那条平滑的已实现曲线并为之加分——一直到这一篮子仓位无法挽回、一次平仓抹掉数月盈利的那一刻。

比较用不同采样频率算出的数字

波动率随测量频率而变,所以日收益率的夏普和月收益率的夏普是两种不同的动物。策略没有变,变的只是分母。

把短样本的夏普读成策略的属性

它是从一个样本中抽出的统计量。三个月的收益率几乎可以产生任何数值,而窗口越短,这个数描述的就越是运气而非设计。

把夏普当成一份完整的风险评估

它对最糟的单笔亏损只字不提,对一段下跌持续了多久只字不提,对尾部风险也只字不提。它的位置在回撤和恢复因子旁边,而不是取代它们。

常见问题

夏普比率越高就一定越好吗?
不是。更高的夏普意味着单位波动下的收益更平滑,但它对最糟的亏损只字不提,而且可以被那些藏起未实现风险的策略钻空子。一个回撤很浅的 1.3 夏普,可能描述的是比建立在马丁格尔之上的 2.5 安全得多的 EA。
MT5 EA 的夏普比率多少算好?
对于覆盖有意义周期的年化数值,1.0 到 2.0 是扎实且可信的区间。零售 EA 回测中任何高于 2.0 的数值,在前向测试确认之前,都应当被当作过拟合的红旗。
为什么 MetaTrader 5 的夏普和我自己算的对不上?
因为 MT5 是从策略测试器的收益序列算出来的,而不是从年化月度收益率。两种方法使用的分母不同,所以数值理所当然会有差异。只比较以同样方式产生的夏普值。
夏普比率和索提诺比率有什么区别?
夏普除以全部收益率的标准差,因此既惩罚大幅亏损的月份,也惩罚大幅盈利的月份。索提诺只除以下行偏差,这样策略就不会因为交易者本来就想要的那种波动而被扣分。

相关文章