前视偏差:我们故意注入它,量出它值多少
作者 chwoo · 加密货币交易7年。自2026年春起运行自动交易机器人。 · · 更新
前视偏差是指回测用上了那一刻还不存在的信息。这是一份回测所能带有的最危险的缺陷,因为它不会报错, 它会给出一条漂亮的资金曲线。
我们没有去罗列它发生的各种方式,而是把它注入了进去。本站的引擎在信号出现的那根K线 之后 的那根上按开盘价成交,这是诚实的做法。为了这篇文章,我们故意改写了K线数据,让引擎按它不可能知道的价格 成交,然后量出每一个谎言值多少钱。
每一种作弊值多少
BTC一小时线上的三个策略,计入现实成本(单边手续费0.06%与滑点0.02%),杠杆1倍,仓位90%,数据截至 2026年9月21日。唯一变化的是假设的成交价。
| 策略与成交假设 | 交易数 | 胜率 | 收益 | 最大回撤 |
|---|---|---|---|---|
| RSI 30 — 下一根开盘(诚实) | 699 | 38.3% | -79.2% | 85.2% |
| RSI 30 — 信号K线收盘 | 699 | 38.3% | -79.2% | 85.2% |
| RSI 30 — 信号K线最低 | 628 | 60.8% | +13,596.4% | 15.9% |
| 布林带 — 下一根开盘(诚实) | 1,178 | 40.1% | -82.6% | 88.5% |
| 布林带 — 信号K线收盘 | 1,178 | 40.1% | -82.6% | 88.5% |
| 布林带 — 信号K线最低 | 1,139 | 49.8% | +2,526.2% | 26.9% |
| MACD — 下一根开盘(诚实) | 2,573 | 32.4% | -70.2% | 92.3% |
| MACD — 信号K线收盘 | 2,573 | 32.4% | -70.3% | 92.3% |
| MACD — 信号K线最低 | 2,573 | 43.0% | +657,482.9% | 26.3% |
一旦把成交挪到信号K线的最低价,三个策略全部从亏损翻成盈利,MACD那个给出657,482.9%——这个数字该当成错误信息来读,而不是结果。没人会真信着把它发出去。要紧的是 跟着它一起出现的那些东西。
看回撤那一列。诚实的MACD回撤是92.3%,作弊版本是 26.3%。胜率也从32.4%涨到43.0%。前视偏差不只是把收益吹大,它还让其他每一项统计同时显得健康。 所以它能通过审阅:一条回撤26%、胜率43%的曲线,看起来根本不像有bug。
人人都在警告的那个错误,在这里几乎无害
接下来是出人意料的部分。每一组中间那一行就是那个经典错误:用K线的收盘价算出指标,然后假设自己就在那个 收盘价上买入。每一篇回测入门都在警告它。在我们的测量里,它在三个策略上最多只把结果改变了 0.1个百分点。
之所以要把这一点说清楚,是因为流传的建议是从股票那边搬过来的,在加密市场里被反复重复却没人去核对。收盘价还是下一根开盘价,不是你的加密回测在撒谎的地方。 在下一根K线成交依然是正确的做法,本站也是这么做的,但只修这一处并不会让回测变诚实。
伤害真正放大的地方
把乐观成交再次用在同一条RSI规则上,只改周期。
| 周期 | 诚实 | 信号K线收盘 | 信号K线最低 | 虚增 |
|---|---|---|---|---|
| 15分钟 | -91.9% | -92.1% | +172,130.8% | 172,222.7个点 |
| 1小时 | -79.2% | -79.2% | +13,596.4% | 13,675.6个点 |
| 4小时 | -41.9% | -41.9% | +1,988.3% | 2,030.2个点 |
| 1天 | -13.1% | -13.1% | +78.0% | 91.1个点 |
方向和直觉相反。日线的振幅比15分钟线宽得多,你会以为在日线上作弊更值钱。实际上是 91.1个点对172,222.7个点。
解释不是K线大小,而是复利。每笔交易上一点点虚假的优势,在15分钟策略多得多的交易数上不断重复,就被乘成 一个荒唐的总数。前视偏差恰恰在策略交易最频繁的地方最危险,而那也正是新手起步的地方。
测量消不掉的那点含糊
有一种情况没有干净的答案。如果一根K线的最高价碰到了你的止盈,最低价碰到了你的止损,OHLC数据说不出哪个 先发生。回测必须做出选择,而选那个有利的,就是换了个名字的前视偏差。
本引擎总是把这样的K线判为 止损,也就是悲观的读法。它会让结果平均而言比现实略差一点,而我们宁愿误差偏向这一边。反过来判的工具,恰恰会 在真实成交最糟糕的高波动K线上显示出更好的数字。
怎样在回测里核查这件事
- 对「高胜率配低回撤」保持怀疑。 在第一张表里,作弊把MACD的回撤从92.3%降到26.3%,同时抬高了胜率。这个组合就是特征。
- 问清楚在哪一根K线上成交。 答案应该是信号之后的那一根。在加密市场里这没有你被告知的那么要紧,但一个答不上这个问题的工具,还会 有别的问题。
- 问清楚同一根K线上止盈与止损相撞时怎么处理。 如果答案是有利的那一边,或者根本没有答案,那么结果就乐观了一个未知的幅度。
- 最怀疑高频的结果。 周期那张表显示,交易越多的地方,偏差的复利效应越猛。
- 确认指标只用已收盘的K线。 一个会重绘自己历史数值的指标,能通过这张清单上其他所有的检查。
本站的引擎与一份独立编写的Python实现逐笔交易对照验证过,所以我们才知道上表里那一列「诚实」是真的诚实。 那套交叉验证写在方法论页面上。
参考资料
- Binance public market data (data.binance.vision) — The candle archive every number on this site is computed from.
- Binance klines endpoint — The raw response shows the open time, close time and close price a candle is only final at.