返回博客

为什么回测看起来很好:四种常见偏差与检查方法

回测不会主动「撒谎」,但研究者可能把模型结果解释成超过证据范围的结论。最危险的偏差往往不是代码报错,而是代码正常运行、结果漂亮、假设却没有写清楚。

案例一:知道收盘再假设此前成交

假设规则使用当天收盘价确认突破,却让订单在这根 K 线更早的价格成交。模型可能给出好看的结果,但信号在那个执行时点尚未知。正确的检查顺序是:什么时候知道条件、什么时候下指令、模型何时处理成交。

同根 K 线的高低顺序、限价与止损同时触发等也依赖历史撮合假设,不能直接等同于真实逐笔。

案例二:挑了赢家再统计表现

如果样本只包含当前热门股、仍在交易的标的,或事后挑出的趋势区间,结果可能不能代表原研究范围。报告应说明对象怎样选、哪些历史数据没有纳入,以及这会限制什么结论。

测试更多标的本身也不自动消除偏差:如果不断筛到最好看的组合,仍然可能是在历史数据上挑赢家。

案例三:测试集被反复拿来调参

一次样本外结果不理想,于是改参数、再看同一段数据,最终直到结果好看。到这时,它已经参与调参,不再是原意义上的独立测试。

Walk-Forward 可以固定时间顺序,但研究过程仍应记录规则修改与搜索次数。邻近参数、失败窗口和交易数比单个最佳分数更有用。

案例四:把成本和制度留到最后

零费用、零滑点、理想成交或未完整处理市场制度的曲线,可以是基线,不能写成实盘可得结果。加入成本后要查看哪些交易发生变化,不只换一个总收益数字。

在观潮 Plus 中,先核对一笔交易的时序,再检查数据、成本与样本外;Pine 编译通过或 AI 草稿试跑通过,都没有完成这些验证。

怎样写一个诚实的结论

记录本次测试能说明什么、不能说明什么、哪些数据缺失、哪些现实约束未模拟。保留失败案例与下一步检查,而不把不确定性藏进一个评分。

操作见股票回测检查清单、滚动前向分析及从脚本到证据。

本文仅供研究方法参考,不构成投资建议。