不少回测代码会这样处理涨停:当天收益率大于等于10%,就认为股票无法买入。写起来很省事,但这个判断既可能漏掉真正的涨停,也可能把本来有成交机会的股票直接过滤掉。
第一个问题是价格取整。假设前收盘价为10.01元,按10%的比例计算,上限价格是11.011元。交易所会按照最小报价单位处理限价,最终涨停价可能是11.01元。此时从10.01元涨到11.01元,实际收益率约为9.99%。如果代码只判断 return >= 0.1,这只已经触及涨停价的股票反而不会被识别。
第二个问题是不同股票不能共用一个固定比例。主板、创业板等板块的涨跌幅限制并不完全相同,新股上市初期还可能没有常规涨跌幅限制。回测程序更稳妥的做法,是维护一张按证券和日期生效的交易规则表,再用前收盘价、限制比例和最小报价单位计算当日限价。现行规则也明确,涨跌幅限制价格需要按申报价格最小变动单位取整。
还有一个容易忽略的地方:价格到达涨停,并不等于整天无法成交。如果盘中曾经打开涨停,买单仍可能成交;真正难以买入的通常是开盘后一直封住、卖盘很少的情况。只有日线数据时,我们最多能看到开高低收和成交量,无法还原排队位置与盘口深度。
我在日线回测里会把状态分成三类:未触及涨停、触及但盘中打开、全天一字涨停。第一类正常撮合,第二类加入成交比例和滑点,第三类保守地判为不成交。这样虽然仍不是完整的盘口仿真,但比用单个收益率阈值判断更接近真实交易,也能避免高估策略在强势行情中的可执行性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。