量化概念 09:停牌(数据里的"洞"怎么处理)

28 阅读 1045 字 · 约 4 分钟
分类:投资 专栏:量化投资

复盘一段行情,某只股票的价格突然凭空缺了两个月——不是数据丢了,是停牌。停牌期间没有交易,K 线上一个大洞。数据可以"缺",回测不行:洞怎么填、停牌期间算不算收益、信号撞上停牌怎么办,每一个都是坑。

停牌是什么

暂停交易。常见原因:

  • 筹划重大事项:资产重组、收购、吸收合并——停最久,几周到几个月
  • 例行事务:财报披露、股东大会、重要公告——通常停一两天
  • 监管核查:异常波动、问询——时间不定

停牌期间没有行情,但股票还在(多数情况)。最极端的是吸收合并:停牌后直接摘牌退市,再没有复牌日。

对量化来说,停牌是三个麻烦

麻烦一:数据出现"洞"。 停牌期间没有 bar,回测的连续价格序列断掉了。直接"向前填充"(用停牌前最后一天的价格填满)是最常见的做法,但代价是虚假的"零涨跌"——停牌日不是"没涨没跌",是"没有交易",两者语义完全不同。

麻烦二:复牌补涨补跌。 停牌期间市场不会等你。大盘跌了 15%、利好利空变了,复牌日价格一次性跳空到位——补跌或补涨。停牌前 10 元的票,停牌 3 个月、期间大盘跌 15%,复牌开盘可能直接 8.5 元。持有者这 3 个月什么都做不了,流动性被锁死。"停牌避险"是幻觉——躲过了下跌,也躲过了卖出。

麻烦三:信号撞上停牌。 信号算出来,停牌期间执行不了。T 日出信号、次日停牌,买入挂起,复牌那天可能已经跳空。动量这类因子更惨:停牌 2 个月后复牌,"20 日动量"算出来是 2 个月前的老数据,因子值已过期。

停牌示意:行情中断、复牌跳空、信号挂起

回测该怎么处理

  • 停牌不可交易:信号日或成交日遇停牌,交易挂起、顺延到复牌日,或者放弃该信号。我系统里就真实触发过:某票信号后恰逢停牌(吸收合并),交易挂起
  • 价格填充:停牌日可以用前收价填充,但停牌日收益必须算 0,不能让它参与涨跌统计;复牌日才恢复真实收益
  • 校验对账:停牌事件要和 bar 对账——停牌区间里不该有 bar 行,有就得查。我的系统校验时就对过:71 天停牌记录,其中 7 天有 bar 行且标记一致,逐条核对
  • 因子层面:动量、波动率这类依赖连续价格的因子,要么剔除停牌样本、要么接受停牌股因子值"过期"的事实

常见误区

  • 以为停牌日"没涨没跌",填充后当普通交易日处理——没有交易不等于零收益
  • 回测里停牌照常买卖——现实是挂起,不是成交
  • 用停牌股的旧价格算指数、算基准——权重还在,价格已经失真
  • 想着"复牌前买进去吃补涨"——停牌期间根本买不进,这个想法的前提就不成立

小结

停牌是数据里的洞,处理原则三条:停牌不可交易、停牌日收益算零、信号顺延或放弃。复牌补涨补跌是停牌最伤人的副作用——躲过的下跌,是以失去流动性为代价的。