
一、未来函数——回测中最致命的坑
未来函数是指策略代码中无意间使用了"未来才知道的数据"来做出当下的交易决策。举个例子,如果代码中用"当日收盘价"作为"开盘买入"的判断依据,这就是典型的未来函数——因为在开盘时,收盘价还没有出现,策略在实盘中根本无法执行这个判断。
避免未来函数的方法是在编写策略时时刻检查:当前这个判断条件,在那个时间点上是否真的已经知道。PTrade的回测系统中,当策略出现逻辑错误时,错误输出区域会显示相关的语法错误和运行时错误信息,帮助投资者排查问题。[4]
二、过度优化——看起来漂亮不可怕,可怕的是只对历史有效
过度优化是指在回测中不断调整策略参数,使得策略在历史数据上获得极佳的表现,但这种表现只是针对特定历史行情的"精确拟合",而不是策略本身的有效性。一旦市场环境发生了变化,过度拟合的策略可能立即失效。
避免过度优化的方法有几个:一是使用足够长的回测周期,PTrade系统支持长达十年的回测周期和秒级回测,在更长的时间区间内验证策略的稳定性。[5]二是做样本外测试,用一部分数据做参数优化,用另一部分独立数据做最终验证。三是做参数敏感性分析,观察参数小幅变动时策略表现是否大幅波动。
三、幸存者偏差——只看活下来的股票
回测中最容易被忽视的问题之一是幸存者偏差。如果回测只用当前仍在交易的股票做测试,就等于忽略了那些已经退市或者被ST的股票——这些股票的历史数据恰恰包含了大量亏损案例。用这样的数据跑出来的回测结果,天然就是偏乐观的。
避免幸存者偏差的方法是在回测时使用包含退市股票在内的完整历史数据。PTrade系统的回测功能支持从特定时间窗口内提取全量股票数据进行测试,减少幸存者偏差的影响。[4]
四、交易成本被严重低估
回测中设置的佣金、滑点和冲击成本往往偏低。很多投资者在回测时只设置了万分之三的佣金,但实盘交易中还要考虑印花税(卖出千分之一)、过户费(沪市)、以及因为盘口厚度有限而产生的冲击成本。
建议在回测中设置一个相对保守的交易成本参数,把佣金、印花税、滑点三部分都考虑进去。对于高频策略,滑点成本对收益的侵蚀尤为显著,建议至少设置2-3个Tick的滑点。
回测是量化策略开发的"体检报告"但体检报告不能保证未来健康。只有客观认识回测的局限性,才能做出更稳健的策略。我司的PTrade量化平台提供十年回测周期、秒级回测和层层穿透的可视化分析工具,配合10万入金即可开通的低门槛、线上全流程办理、专业量化社群的答疑指导,以及低佣、VIP通道等权益,帮助投资者在回测阶段就避免常见的陷阱,为实盘交易打好基础。
(点击头像右边咨询按钮,最新的VIP低佣开户政策自取)