有朋友用PTrade、QMT做量化打板,遇到一个很直接的问题:回测曲线很好看,到了实盘,收益差距却很大。于是会想,是不是参数不对?软件有问题?还是通道不够快?我觉得,先把回测到底算了什么弄清楚,再谈怎么改。回测是在一组历史数据和成交假设下,计算这套规则会得到什么结果。里面的买入、卖出条件,实盘未必都能实现。[淘股吧]

一、为什么打板回测和实盘容易出现差距?
第一,回测算你买到了,实盘可能根本没买到。假设某个模型看到股价触板,就按涨停价记作全部成交。但实盘中,从收到行情、判断信号到提交委托,需要经历一个过程,订单还要满足实际成交条件。历史上那个价格出现过成交,不代表你的订单在那个时点、以那个数量也能成交。具体用什么规则撮合,要查当前版本、策略代码和参数,不能把这个假设当成PTrade或QMT的统一规则。

第二,实际买到的股票,可能已经变了。举一个纯假设的例子:回测里,一只股票触板后封住,次日上涨,贡献了利润;实盘没有买到。另一只后来开板,实盘反而成交,随后出现亏损。如果这种差异反复出现,实盘参与的交易就和回测不同了。方向和程度需要逐笔核对,不能先认定所有策略都会这样。因此,不能简单拿回测收益乘一个“成交率”,就当成实盘预期。没成交的究竟是哪批订单,会影响结果,也会改变后续资金和持仓。

第三,回测看见的信息,盘中可能还没形成。比如用某一分钟结束后的完整成交量生成信号,却按这一分钟更早的价格成交,就要检查是否用了当时尚不知道的信息。还有复权方式、股票池、行情周期、策略触发时机等。代码看起来一样,也需要核对两边实际读到的数据和执行时点。

第四,买入以外的假设也可能过于理想。计划买多少,就默认成交多少;到了止损条件,就默认能按设定价格退出;费用和滑点设置过低,这些都会影响结果。另外,参数是不是在同一段历史上反复调到最好?换一段没有参与调参的时间,还能不能保持表现?市场环境变化和过度拟合,也可能让回测与后续实盘拉开差距。

二、回测报告里,我会重点看哪些地方?
第一,看成交明细和日志,先检查结果有没有可信的基础。抽查几笔主要盈利、主要亏损和封板附近的交易:信号什么时候出现,用了什么数据,模型为什么判定成交,数量是多少,最后怎么退出?如果报告只有曲线和年化收益,没有这些说明,就需要补充。后面的胜率、回撤、夏普比率,都建立在这些交易记录上。

第二,看利润从哪里来,有多依赖少数交易或某段行情。总收益里,是不是少数几笔交易贡献了大部分利润?这些交易的成交假设是否经得起检查?按月、按阶段拆开后,盈利是否过于集中?交易次数和覆盖时间够不够支持判断?这里还可以看胜率、平均盈利、平均亏损,但要明确统计单位,是订单还是一笔完整交易。只看胜率,很容易忽略少数大亏损。

第三,看怎么亏,以及亏损持续了多久。最大回撤之外,还要看连续亏损、单笔大亏损、回撤持续时间,以及亏损时的仓位。但有一个前提:如果模型把难以卖出的情况处理得过于理想,回撤也会被低估。回测最大回撤只是那段历史、那套假设下的结果,不是实盘亏损的上限。

第四,看条件稍微变化,结果是不是就站不住了。在模型支持的范围内,提高成本、收紧成交量约束、测试信号延迟;再看看参数附近的其他取值,以及没有参与调参的历史区间。如果只有某个精确参数、某段行情、非常宽松的成交假设才能赚钱,就值得继续追问。这些检查更适合用来发现问题、比较方案、排除明显不合理的假设。即使都通过了,也不能据此保证实盘收益。

三、怎么一步步缩小差距?
第一步,固定版本,建立对照。把代码、参数、股票池和数据口径存下来。对照已有实盘记录时,比较相同日期、相同规则下的信号和订单。不要每天改完参数,又拿新回测去解释旧实盘。

第二步,把差距标到具体环节。建议按股票和信号逐条记录:回测信号时间、实盘信号时间、委托发送情况、接收或报错回报、成交时间、价格和数量。区分信号不同、未发单、发出后未成交、部分成交、成交价不同,以及退出不同。缺少关键回报的,先记“待确认”。不同系统的时间戳也要核对口径,不能直接相减就认定通道延迟。全部信号都要保留,包括没买到的。只比较两边都成交的交易,会漏掉实际交易样本变化的问题。

第三步,根据记录修正假设,再重新计算。发现数据或代码差异,就修正相应逻辑;发现成交过于宽松,就检查数量、时机、排队和未成交处理。排队问题不能只靠加一点滑点来代替。部分检查可以用现有回测设置完成,部分需要补数据或修改代码。历史数据无法还原的成交细节,应保留不确定性,用不同假设测试影响,不能补一个有利的答案。改动成交后,还要连同后续持仓、资金占用和交易一起重算,不能只删掉几笔记录就算结束。

第四步,固定修改后的规则,观察后续表现。可以先通过不自动下单的信号记录或模拟运行,检查触发、委托逻辑和异常处理。模拟成交仍然有自己的假设,不能代替真实成交验证。发现问题再修改,但要给改过的版本留出新的观察区间。反复用同一段数据调到漂亮,检验作用会越来越弱。如果记录确实指向委托响应或执行链路,再和技术支持核对终端、网络、柜台等环节。需要什么工具,应当由具体问题决定。缩小差距,有时意味着执行改善了;也可能意味着回测变得保守,原先漂亮的收益降下来了。后者同样有价值,因为它让判断更接近实际。

你现在用PTrade还是QMT做打板?实盘差距主要是买不到、成交时机不同,还是买到之后的表现不如预期?