4. 跨时段划分与时段对齐方法
跨时段盘口异常基线建模的第一个工程难点,不是算法,而是“时间”。盘口数据在一天之内并不是平稳的:开盘集合竞价后的前几分钟流动性骤增、价差剧烈波动;盘中进入相对稳定的连续撮合;尾盘又出现方向性资金集中和收盘效应;隔夜则跨越了信息真空与消息冲击。若把全天数据混在一起统计,开盘的极端波动会把盘中的正常阈值抬高,尾盘的异常又会被开盘噪声稀释,基线就失去了判别力。因此本节要解决两件事:如何切分交易时段,以及如何把不同交易日、不同时段的数据对齐到可比的时间坐标上。
一、时段切分:按“微观结构状态”而非钟表等分
切分规则的设计原则是:同一时段内,盘口的统计特性(价差分布、委托量水平、成交频率、撤单率)应尽量同质;不同时段之间则应存在可解释的结构差异。以A股连续竞价为例,一种可落地的切分方案如下(示例参数,需按标的与交易所规则校准):
- 开盘冲击段:09:30:00–09:35:00。集合竞价撮合后的信息释放期,价差与成交量方差最大,通常单独建模或只做粗粒度监控。
- 早盘稳定段:09:35:00–10:30:00。流动性较高、方向性较强,是异常检测的主战场之一。
- 盘中过渡段:10:30:00–13:00:00(含午休)。成交节奏放缓,需注意11:30–13:00的休市断点。
- 午后稳定段:13:00:00–14:30:00。结构与早盘稳定段相近但活跃度略低,可共享部分基线参数。
- 尾盘段:14:30:00–15:00:00。收盘集合竞价前方向性资金集中,撤单与挂单行为显著变化。
- 隔夜段:15:00:00–次日09:30:00。无连续撮合,主要承载公告、外盘、消息面冲击,用于解释次日开盘偏移。
切分点不应机械固定。更稳健的做法是用滚动窗口统计各分钟的全天成交额占比、平均价差和撤单率,寻找统计特性的“拐点”作为边界。例如某标的在09:33后价差中位数回落至全天中位数的1.2倍以内,即可把开盘冲击段的右边界定在09:33而非09:35。切分规则一旦确定,应写入配置并版本化管理,避免不同批次建模使用不同边界导致基线不可比。
二、边界效应:切分点附近的“污染”处理
硬切分会在边界处产生两类问题。其一是窗口跨越污染:若用5分钟滚动窗口计算盘口指标,09:33–09:38的窗口同时包含冲击段与稳定段,指标既不代表开盘也不代表盘中。其二是状态切换滞后:尾盘段开始后的头一两分钟,市场尚未完全进入尾盘行为模式。
常用处理手段有三种:一是在边界两侧设置缓冲带(如各剔除60秒),缓冲带数据不参与基线统计但保留用于异常回溯;二是采用软归属,即对边界附近的样本按距离加权,靠近中心的样本权重高;三是分段独立计算指标,滚动窗口不跨段,段首样本用较短窗口预热。工程上推荐缓冲带加段内独立窗口的组合,实现简单且可解释。
三、时间对齐:把不同交易日放到同一坐标上
跨时段建模要求“同一时段位置”的样本可比。对齐包含三个层次:
第一层是交易日历对齐。剔除休市日、半日市,并标记除权除息日——除权日开盘参考价跳变,若不对齐会把正常的除权跳空误判为异常。做法是维护交易日历表,并为每个交易日打上“正常/半日/除权”标签,除权日样本在价格类指标上做复权处理或直接排除。
第二层是时段内相对时间对齐。把每个交易日的每个时段映射为“段内偏移秒数”,例如早盘稳定段内第t秒,t从0开始。这样不同日期同一t位置的样本可直接聚合,计算均值、分位数和方差,形成分时段基线。
第三层是事件对齐。隔夜段的消息冲击无法用钟表对齐,需以公告发布时间、外盘收盘等事件为锚点,把隔夜信息折算为“开盘偏移特征”,再与次日开盘冲击段关联。
四、落地实现:一份可执行的时段配置
把上述规则固化为配置表,是保证跨批次可比的关键。下面给出一个示例配置(时间为示例,需按实际标的校准),字段包括段名、起止时间、缓冲带宽度、是否参与基线、特殊标记:
segment_id, name, start, end, buffer_sec, in_baseline, note
S1, 开盘冲击段, 09:30:00, 09:35:00, 30, false, 仅监控不建模
S2, 早盘稳定段, 09:35:00, 10:30:00, 60, true, 主建模段
S3, 盘中过渡段, 10:30:00, 11:30:00, 60, true, 午休前截断
S4, 午后稳定段, 13:00:00, 14:30:00, 60, true, 与S2共享部分参数
S5, 尾盘段, 14:30:00, 15:00:00, 60, true, 收盘效应单独统计
S6, 隔夜段, 15:00:00, 09:30:00, 0, false, 事件对齐用
实现时,对每条盘口快照先按时间戳定位 segment_id,再计算段内偏移 offset = ts - segment_start,若 offset < buffer_sec 或 offset > duration - buffer_sec 则标记为缓冲样本。随后按 (segment_id, offset_bucket) 分组聚合,offset_bucket 可取1秒或5秒粒度。这样得到的基线天然带有“时段位置”维度,后续异常打分时,只需用当前快照的 segment_id 与 offset 去查对应基线,即可避免跨时段误判。
五、对齐质量的检查
切分与对齐是否合理,可用三个可观察指标检验:一是各时段内指标的变异系数应明显低于全天混合的变异系数;二是相邻时段边界处的指标跳变应能被缓冲带平滑,若缓冲后仍有大幅跳变,说明切分点选错;三是同一 offset 位置跨日聚合的样本量应足够(建议每桶不少于30个交易日样本),否则基线分位数不稳定。满足这三点,才具备进入分时段基线建模的条件。