回测不会主动「撒谎」,但研究者可能把模型结果解释成超过证据范围的结论。最危险的偏差往往不是代码报错,而是代码正常运行、结果漂亮、假设却没有写清楚。
案例一:知道收盘再假设此前成交
假设规则使用当天收盘价确认突破,却让订单在这根 K 线更早的价格成交。模型可能给出好看的结果,但信号在那个执行时点尚未知。正确的检查顺序是:什么时候知道条件、什么时候下指令、模型何时处理成交。
同根 K 线的高低顺序、限价与止损同时触发等也依赖历史撮合假设,不能直接等同于真实逐笔。
案例二:挑了赢家再统计表现
如果样本只包含当前热门股、仍在交易的标的,或事后挑出的趋势区间,结果可能不能代表原研究范围。报告应说明对象怎样选、哪些历史数据没有纳入,以及这会限制什么结论。
测试更多标的本身也不自动消除偏差:如果不断筛到最好看的组合,仍然可能是在历史数据上挑赢家。
案例三:测试集被反复拿来调参
一次样本外结果不理想,于是改参数、再看同一段数据,最终直到结果好看。到这时,它已经参与调参,不再是原意义上的独立测试。
Walk-Forward 可以固定时间顺序,但研究过程仍应记录规则修改与搜索次数。邻近参数、失败窗口和交易数比单个最佳分数更有用。
案例四:把成本和制度留到最后
零费用、零滑点、理想成交或未完整处理市场制度的曲线,可以是基线,不能写成实盘可得结果。加入成本后要查看哪些交易发生变化,不只换一个总收益数字。
在观潮 Plus 中,先核对一笔交易的时序,再检查数据、成本与样本外;Pine 编译通过或 AI 草稿试跑通过,都没有完成这些验证。
怎样写一个诚实的结论
记录本次测试能说明什么、不能说明什么、哪些数据缺失、哪些现实约束未模拟。保留失败案例与下一步检查,而不把不确定性藏进一个评分。
本文仅供研究方法参考,不构成投资建议。