4、量化策略的生命周期:从回测到实盘,规则变更在哪个环节埋下隐患?
做量化这些年,我见过太多策略在回测里跑得风生水起,一上实盘就崩盘。说白了,大部分问题都出在同一个地方——规则变更。
你想想看,一个策略从想法到实盘,要经历好几个阶段。每个阶段都有规则在变。有的是市场规则变了,有的是交易所规则变了,还有的是我们自己策略逻辑变了。这些变化,就像埋在地雷,踩到一个就够你受的。
我个人习惯,把量化策略的生命周期分成四个阶段:策略构思 → 历史回测 → 模拟交易 → 实盘运行。今天咱们就挨个拆解,看看规则变更到底在哪个环节埋下了隐患。
4.1 策略构思阶段:规则还没定,隐患已经来了
很多人觉得,策略构思就是拍脑袋想个逻辑,能有什么隐患?
其实不然。我在项目中遇到过好几次,团队讨论策略时,默认了一些「常识性」规则。比如「A股市场T+1交易」、「期货夜盘交易时间」、「科创板涨跌幅20%」。这些规则看起来是常识,但一旦市场规则调整,你的策略逻辑可能就全废了。
我曾经接手过一个策略,构思时默认了「可转债T+0交易」。结果2022年可转债新规出台,部分品种交易规则调整,策略直接失效。后来复盘才发现,当初根本没把交易规则写进策略文档里。
所以我的建议是:在策略构思阶段,就把所有依赖的规则列出来。包括但不限于:
- 交易时间规则(开盘、收盘、午休、夜盘)
- 涨跌停限制(主板、创业板、科创板、北交所各不相同)
- 交易费用规则(佣金、印花税、过户费、经手费)
- 最小变动单位(股票0.01元,期货各有不同)
- 申报数量限制(100股起、1手起、整数倍要求)
这些规则,就是策略的「地基」。地基不稳,后面盖多高都没用。
4.2 历史回测阶段:规则变更的「重灾区」
回测阶段,是规则变更埋下隐患最多的地方。为什么?因为回测用的是历史数据,而历史数据里的规则,和现在可能完全不一样。
举个例子。2016年之前,A股还有「熔断机制」。如果你回测2015年的数据,用当时的规则跑策略,结果可能很漂亮。但你把同样的策略拿到2024年实盘,熔断没了,交易规则变了,策略表现自然天差地别。
我整理了一个表格,你看看回测阶段常见的规则变更陷阱:
| 规则类型 | 历史规则(举例) | 当前规则 | 对策略的影响 |
|---|---|---|---|
| 涨跌停限制 | 无涨跌停(早期A股) | ±10%(主板) | 策略可能过度依赖极端波动 |
| 交易费用 | 印花税千分之三 | 印花税万分之五 | 高频策略收益被高估 |
| 最小变动单位 | 股票0.01元 | 部分品种0.001元 | 滑点模型失效 |
| 交易时间 | 下午3点收盘 | 下午3点收盘(未变) | 但期货夜盘规则多次调整 |
回测不是「用历史数据跑一遍」那么简单。你得确保回测时使用的规则,和实盘时的规则一致。否则,回测结果就是「刻舟求剑」。
4.3 模拟交易阶段:规则变更的「缓冲带」
模拟交易,说白了就是「实盘前的最后一道防线」。但很多人把模拟交易当成了「回测的延续」,忽略了规则变更的验证。
我记得有一次,一个同事做期货CTA策略。回测时用的是「按收盘价成交」的假设,模拟交易时发现,实际成交价和收盘价差了0.5%。为什么?因为交易所的撮合规则变了——从「价格优先、时间优先」变成了「做市商优先」。这个规则变更,回测时根本体现不出来。
模拟交易阶段,我建议重点关注这几类规则变更:
- 撮合规则:连续竞价、集合竞价、做市商机制,不同市场差异很大
- 订单类型:市价单、限价单、止损单、冰山单,实盘支持哪些?
- 风控规则:自成交控制、频繁报撤单限制、持仓限额
- 数据延迟:模拟交易的数据是实时还是延迟15分钟?
我个人习惯,在模拟交易阶段至少跑3个月。这3个月里,我会刻意观察:策略是否触发了任何风控规则?订单成交率是否和回测一致?滑点是否在预期范围内?如果发现问题,立刻调整,而不是硬着头皮上实盘。
4.4 实盘运行阶段:规则变更的「终极考验」
实盘阶段,规则变更的隐患往往来自「外部」。比如:
- 交易所突然调整交易时间(比如2020年疫情初期,部分期货品种夜盘暂停)
- 监管政策变化(比如2021年「雪球产品」被叫停)
- 市场微观结构变化(比如2023年A股全面注册制,涨跌幅规则调整)
这些规则变更,你无法预测,但可以提前准备。我的做法是:给策略加上「规则监控模块」。一旦检测到规则变更,自动暂停交易,或者切换到备用策略。
嗯,这里要注意:实盘阶段的规则变更,往往伴随着市场剧烈波动。如果你没有提前做好预案,很可能在规则变更的第一时间就遭受重大损失。
4.5 一张图看懂:规则变更在生命周期中的分布
说了这么多,咱们用一张SVG图来总结一下。这张图展示了量化策略的四个阶段,以及每个阶段规则变更的「隐患点」:
4.6 我的建议:建立「规则变更清单」
说了这么多隐患,总得给个解决方案。我个人习惯,在策略上线前,会建立一份「规则变更清单」。这份清单包含三部分:
- 已知规则:当前策略依赖的所有规则,逐条列出
- 历史规则差异:回测期间和当前实盘期间,规则有哪些不同
- 规则监控点:哪些规则一旦变更,策略需要立即调整或暂停
这份清单,我会放在策略代码的根目录下,命名为 RULES_CHANGELOG.md。每次规则变更,都更新这个文件。这样,不管是团队协作还是策略复盘,都有据可查。
规则变更不是「黑天鹅」,而是「灰犀牛」。它一直在那里,只是你选择视而不见。量化策略的生命周期里,每个环节都可能埋下隐患。但只要你提前识别、主动监控、及时应对,这些隐患就能变成可控的风险。
公众号:蓝海资料掘金营,微信deep3321