1. 课程导入
在证券行情数据处理中,停牌与复牌是最常见、也最容易被低估的风险点。一只股票因重大资产重组、临时公告、异常波动核查等原因停牌,行情源在停牌期间不再推送该标的的逐笔或快照数据;复牌当日,价格往往出现跳空、成交量骤增,若数据管道没有正确处理这段“空白”,后续的因子计算、回测撮合、风控指标都会产生系统性偏差。本课程的目标,是让学员建立一套从识别、标记、修复到验证的完整方法论,而不是零散地打补丁。
学习目标
- 理解停牌、复牌在交易所规则与行情源层面的不同表现,能区分“真停牌”与“数据缺失”。
- 掌握缺失行情修复的三种主流策略:前向填充、插值重建、基于市场模型的估计,并知道各自适用边界。
- 能够设计停复牌状态表与行情修复流水线,把修复动作嵌入日常数据生产流程。
- 具备复盘能力:通过日志、对账和回测对比,定位修复引入的偏差并持续调优。
整体框架:从事件识别到数据交付
停复牌处理不是单一函数,而是一条贯穿数据接入、清洗、存储、计算、交付的链路。下图展示了本课程贯穿始终的核心框架:左侧是事件源与行情源,中间是状态判定与修复引擎,右侧是下游消费与验证闭环。
核心原理:停牌不是“没有数据”,而是“状态缺失”
很多初学者把停牌简单理解为行情为空,于是直接用前值填充。这在短停牌、无重大信息时勉强可用,但遇到长期停牌后复牌、或停牌期间发生除权除息、并购重组等公司行动时,前向填充会把错误价格带入复牌日,造成虚假收益。正确的认知是:停牌期间该证券的“可交易状态”为假,价格不是“未更新”,而是“不可观测”。因此修复的目标不是伪造一个价格,而是明确标记不可交易区间,并在需要连续价格序列时,用可解释的估计值替代,同时保留标记供下游过滤。
核心原则:先标记,再修复;标记信息不可丢失。任何修复后的价格字段,都应配套一个 is_suspended 或 data_quality_flag 字段,让下游能按需选择是否使用修复值。
方法流程:一条可落地的修复流水线
- 事件对齐:将交易所停复牌公告与行情交易日历对齐,生成每只证券的停牌区间表,字段包括
symbol、suspend_start、suspend_end、resume_date、reason。 - 缺失识别:在行情序列中扫描连续缺失的交易日,与停牌区间表做交集,区分“因停牌缺失”和“因数据源故障缺失”。
- 修复策略选择:短停牌(1~3日)可用前向填充;长停牌且无公司行动,可用行业指数或市场模型估计;涉及除权除息的,必须先做复权因子调整再修复。
- 复牌日处理:复牌首日不填充,保留真实行情,但需检查涨跌幅是否超过常规限制,标记为“复牌跳空”供风控关注。
- 验证与落库:修复后的序列写入行情表,同时写入修复日志表,记录修复方法、影响行数、时间戳。
# 停牌区间表示例(CSV)
symbol,suspend_start,suspend_end,resume_date,reason
600519.SH,2023-04-10,2023-04-14,2023-04-17,重大资产重组
000001.SZ,2023-06-01,2023-06-01,2023-06-02,临时停牌
# 修复日志表示例
log_id,symbol,fix_date,method,rows_affected,operator
1001,600519.SH,2023-04-17,forward_fill,3,data_pipeline
1002,000001.SZ,2023-06-02,market_model,1,data_pipeline
实战场景:三种典型情况与处理要点
| 场景 | 特征 | 推荐修复策略 | 风险提示 |
|---|---|---|---|
| 临时停牌半日 | 当日复牌,价格连续 | 前向填充或线性插值 | 成交量需置零或标记,避免虚假放量 |
| 重大资产重组长期停牌 | 停牌数周至数月,复牌跳空大 | 市场模型估计 + 复牌日保留真实值 | 停牌期间因子暴露失真,需单独建模 |
| 停牌期间除权除息 | 复牌参考价调整 | 先应用复权因子,再修复 | 直接前向填充会导致复牌日虚假涨跌 |
常见误区与复盘要点
误区一:把停牌缺失当成普通缺失值,用均值或中位数填充。这会在停牌期间制造不存在的波动,污染波动率因子。
误区二:修复后不保留原始缺失标记,导致回测无法剔除不可交易区间,产生“偷价”问题。
误区三:忽略复牌日的涨跌幅限制差异。部分板块复牌首日不设涨跌幅或限制不同,直接套用常规风控阈值会误报。
复盘时建议固定检查三项:修复前后价格序列的跳空分布、修复区间与停牌区间的一致性、下游因子在修复前后的IC变化。若某只证券修复后因子值异常突出,优先排查是否因复权因子未对齐或停牌区间错配导致。
实战建议:在数据管道中把停复牌处理做成独立模块,输入行情原始表和事件表,输出修复行情表和修复日志表。模块内部对每只证券、每个停牌区间生成一条可追溯记录,便于后续审计和回滚。