回测是什么?回测报告怎么看

Blave Agent 回测输出的八个数字——各自代表什么,哪些真正值得信赖。

最后更新 2026-09
要点总结
  • 回测是把一套交易规则套回历史数据跑一遍,先看它过去会怎么表现,再决定要不要投真钱。
  • 收益要跟风险一起看:范例策略 btc_sma_cross 总收益 +145.8%、买入持有 +68.2%,同一段期间最大回撤 −42.6%。
  • 这支范例没有设回测结束日,每跑一次都跑到当天,上面是其中一次执行的快照——你现在自己跑会拿到不一样的数字。
  • Sharpe 是每承担一单位总风险换到多少收益:0.5–1.0 对趋势策略可接受;超过 1.5 而回测期不到两年,要带着怀疑看。
  • 成本会把薄的优势吃光:同一支策略四年手续费付掉本金的 22%,Omega 只有 1.04。

你手上有一份回测报告,总收益 +145.8%,而你不知道这个数字该让你兴奋还是警戒。回测是把一套交易规则套回历史数据跑一遍,看它过去会怎么表现;它给你的不是「会赚多少」的预测,而是一组可以用来判断的数字:收益、风险、成本。判断的方法是三个一起看,不是只看第一个。

用一个真实示例来建立认知

btc_sma_cross 策略(BTCUSDT 1h,SMA45/SMA100,从 2022-01-01 起)的回测结果如下。这支范例没有设回测结束日,每跑一次都跑到当天,所以下面是其中一次执行的快照,你现在自己跑会拿到不一样的数字:

总收益
+145.8%
Benchmark(买入持有)
+68.2%
最大回撤
−42.6%
Sharpe Ratio
0.77
Sortino Ratio
0.72
Omega Ratio
1.04

这个策略的收益是买入持有的两倍多——但期间也出现了 −42.6% 的最大回撤。能不能接受完全取决于你的风险承受度,以下的指标说明会帮你想清楚。报告还有两个成本相关的数字——Total Fees Paid(这个策略 4 年付掉本金的 22%)和交易笔数(Trades)——会在下面 Omega 的段落再次登场。

这是 Blave Agent 回测引擎跑出来的真实示例。如果你还没有自己的策略、不知道从哪里开始,不用从零写代码做这件事——官方策略库里的策略每一个都附真实回测,你可以先看数字,再决定要不要部署。

Sharpe Ratio — 风险调整后收益

Sharpe ratio = 年化收益 ÷ 年化波动率(上行和下行都算)。它回答的问题是:每承担一单位总风险,能换到多少收益?

Sharpe解读
< 0风险调整后亏钱
0 – 0.5偏弱,几乎无法补偿风险
0.5 – 1.0趋势策略可接受(SMA 示例落在这里)
1.0 – 1.5好
> 1.5强——若回测期短,要带着怀疑去看
短期回测出现高 Sharpe 是红旗。 6 个月回测显示 Sharpe 3.0,实际上只有不到 130 个数据点,那是噪声,不是信号。超过 1.5 的 Sharpe 至少需要 2 年以上才能信任。

Sortino Ratio — 只惩罚下行风险

Sortino ratio 和 Sharpe 类似,但只把下行波动算作风险,上涨的波动不罚。它回答:每承担一单位坏的波动,能换到多少收益?

SMA Cross 的 Sortino(0.72)和 Sharpe(0.77)相近,代表这个策略的波动是对称的。如果 Sortino 远高于 Sharpe,代表策略有大幅盈利但回撤受控——这是更理想的分布。

Sortino 与 Sharpe 的关系意义
Sortino ≈ Sharpe收益对称,上行和下行波动相近
Sortino >> Sharpe收益正偏——大幅盈利、小幅亏损(理想)
Sortino << Sharpe收益负偏——小幅盈利、偶尔大幅亏损(危险)

最大回撤(MDD)— 最糟的那个时刻

最大回撤是整个回测期间,资产净值从高点到低点最大的跌幅。净值从 $100,000 跌到 $57,380 再回升,MDD 就是 −42.6%。

MDD 重要,是因为它衡量的是你需要承受多大的痛苦才能撑过去。现实中大多数人会在回升前就停掉策略。

永远不要投入超过你心理上能承受亏掉两次的金额。
如果 MDD 是 −42.6%,投入 $100 万表示你可能面临 $42 万的账面亏损。如果那会让你停掉策略,就少投一点。

Omega Ratio — 完整的收益分布

Omega ratio = 超过阈值(通常为 0)的总收益 ÷ 低于阈值的总亏损。不像 Sharpe 只看均值和标准差,Omega 捕捉完整的收益分布。

Omega解读
< 1.0整体亏损
1.0 – 1.1微利——扣掉真实成本后很容易转亏
1.1 – 1.3扎实
> 1.5强——或可能过拟合

SMA Cross 的 Omega = 1.04,只比 1.0 略高。加上四年共支付了本金 22% 的手续费,真实世界的优势相当薄。这对趋势跟踪策略来说是正常的——这类策略的质量主要看 Sharpe 和 Sortino,Omega 偏低不代表策略有问题。

回测最常见的五个错误

1

前视偏差(Lookahead Bias): 在决策时用了当时不存在的数据。Blave Agent 预设用下一根开盘执行来防止这个问题(例外是策略自己标记 exec_at_close 的那几根 K 线——例如台指期换月结算,会在当根收盘成交),但自定义指标计算还是可能引入——例如用整段历史数据的平均值来计算 Z-score。

2

忽略预热期(Warm-up Period): SMA(100) 这样的指标需要 100 根 K 线才有意义。前 100 根应该排除在绩效计算之外。Blave Agent 的 WARMUP 参数会自动处理这件事。

3

在全部数据上优化: 如果你用所有可用数据扫描参数,再回头用同一段数据报告绩效,你报告的是训练误差,不是泛化能力。至少留 20–30% 的数据做样本外验证。(在 Blave 上实际怎么做,见〈样本外验证怎么做〉。)

4

忽略手续费: btc_sma_cross 四年下来支付了本金 22% 的手续费。频率更高的策略,手续费很容易吃掉所有 alpha。费率要照你真的要下的市场填:FEE = 0.0005 对应的是 Binance U 本位合约 VIP0 的 taker 0.05%(maker 是 0.02%);Binance 现货最低阶的 maker、taker 都是 0.1%,现货策略照 0.0005 写就是低估成本。

5

把总收益和风险调整后收益混为一谈: MDD −80%、收益 200% 的策略,不比 MDD −15%、收益 80% 的策略「更好」。前者大多数真实用户会在最低点附近恐慌出场。

这些数字不会告诉你的事

  • 这几个数字全部是从同一段历史算出来的。期间换了,数字就换——上面那组是一次执行的快照,不是这支策略的固定成绩。
  • 期间越短,每个数字的不确定性越大。6 个月的 Sharpe 3.0 是噪声不是信号;同样的怀疑也要用在 Sortino 和 Omega 上,它们吃的是同一段收益序列。
  • 把上面五个错误全部避开,你得到的是一份诚实的回测,不是一个会赚钱的策略。诚实之后的下一个问题是「这个成绩是不是运气」,那要另外验。