核心解答
股票策略里最危险的一种回测假设,是“只要信号出现,就一定能按照图表上的价格完成交易”。
在流动性充足、价格连续的情况下,这种简化有时影响不大。
但放到A股,涨跌停、停牌、一字板和竞价阶段都可能让一个理论上正确的信号根本无法成交。
信号产生和订单成交必须分开
策略可以在某天收盘后判断第二天买入,也可以盘中产生信号。
但回测引擎必须再回答:下一次真正允许下单是什么时间,当时证券是否可交易,以及价格和成交量是否允许完成订单。
如果把“出现买入信号”直接等于“已经持仓”,整个执行层就被跳过了。
涨停时想买不一定能买到
当证券价格达到当日价格限制附近,卖盘可能非常少。
尤其出现封板或接近一字板的情况时,历史K线虽然显示某个价格,但并不代表你的订单就能够获得成交。
如果策略专门追逐强势涨停股,却在回测里默认全部以涨停价买入,结果可能严重高估实际可复制性。
跌停时想卖也可能卖不掉
风险模型经常假设“价格跌到止损位就立即卖出”。
但如果证券已经处在无法获得足够对手盘的极端状态,现实里止损指令并不能保证马上成交。
因此最大回撤不能只根据理论止损价计算,还应该考虑无法执行期间价格继续变化的风险。
这对高仓位策略尤其重要。
停牌期间不能制造虚假交易
停牌证券没有正常连续成交。
如果数据处理只是向前填充价格,而策略引擎仍然允许在这些日期买卖,就会制造现实不存在的交易。
停复牌状态应该成为回测数据的一部分,并明确规定不可交易期间如何处理持仓和信号。
一字板比普通涨停更需要特殊处理
只看日K最高价和最低价,有时无法判断真实可成交深度。
如果整天价格几乎锁在限制位置,策略不能仅凭“收盘价等于某价格”就认为能够随意买入或卖出。
更严谨的模型可以结合开高低收、成交量、盘口或更细粒度数据判断可执行性。
成交量决定策略容量
历史上某只股票当天成交金额很小,而回测却假设策略能瞬间买入占当日成交量很大比例的仓位,价格冲击就被完全忽略。
资金规模越大,应该越关注订单占成交量比例,并为冲击成本和部分成交留出空间。
一个在10万元规模能执行的策略,不一定能够直接放大到1000万元。
竞价和交易阶段也不能混为一谈
开盘集合竞价、连续竞价以及其他交易阶段的撮合条件并不完全相同。
“用当天开盘价买入”实际上已经隐含了一个很强的成交假设。
策略应该明确订单是在前一交易日生成,还是看到当天开盘数据以后才生成,避免无意中使用已经发生的信息获得开盘成交。
不同板块和证券规则不能硬编码成一个值
A股不同市场、板块、特殊证券状态和时期可能适用不同价格限制或交易规则。
回测引擎应该根据证券和日期读取对应规则,而不是永远写死一个统一百分比。
历史规则发生变化时,也需要按当时有效规则重放。
怎样做更现实的执行压力测试
可以分别采用理想成交、保守成交和极端成交三个场景。
对涨停买单降低成交概率,对跌停卖单延后退出,对低成交量股票限制最大订单规模,并额外加入滑点。
如果策略在保守执行模型下仍有明显优势,可信度远高于只在理想成交下漂亮。
资料依据
上海证券交易所、深圳证券交易所现行及历史交易规则对价格限制、停复牌、竞价和订单撮合均有具体规定。
实际量化研究应根据证券代码、交易日期和对应市场采用当时有效规则。
风险提示
历史回测不代表未来收益。本文讨论的是回测工程和交易执行建模,不构成投资建议。
结论
股票回测真正要模拟的不是“信号对不对”,而是信号出现以后订单能不能在现实市场完成。涨跌停、停牌和流动性一旦被忽略,策略最漂亮的利润往往恰恰来自那些现实中最难成交的交易。
继续了解这个主题
如果拿今天仍然上市的公司去回测十年前的策略,可能已经在无意中删除了历史里的失败公司,这就是幸存者偏差。
阅读全文 →股票量化股票回测为什么必须处理复权?拆股和分红会制造“假收益”拆股、反向拆股和现金分红会改变历史价格或持仓数量。量化回测如果混用未复权价格和复权收益,很容易制造不存在的暴涨暴跌。
阅读全文 →股票量化你是不是偷看了未来?股票回测里的前视偏差有多危险前视偏差不会让程序报错,反而常常让回测异常漂亮。真正关键的是历史某个时点到底能不能获得那条数据。
阅读全文 →量化研究一个量化策略从想法到实盘,中间到底应该经历多少道测试?成熟量化流程不是“想法→回测赚钱→上线”,而是从数据审计、样本内、Walk-Forward、样本外、压力测试到小规模实盘逐层验证。
阅读全文 →淄博卓亚网络科技服务有限公司
电话:15269365953
地址:山东省淄博市张店区体育场街道办事处华光路2号泽泉消防市场三楼S18