2. 盘口数据基础与跨时段特性

构建跨时段盘口异常基线,第一步不是写检测规则,而是把“数据长什么样、每个字段在什么时刻有意义”搞清楚。盘口数据本质上是交易所行情网关按时间顺序推送的增量消息流,Level-1 与 Level-2 的差别不只是档位数量,更在于信息粒度与可还原的市场微观结构。若字段语义理解错位,后续任何基线都会把正常行为误判为异常。

Level-1 与 Level-2 的数据结构差异

Level-1 通常只提供最优一档买卖价与量、最新成交价、累计成交量与成交额、以及有限的统计字段。它适合刻画“价格中枢与即时流动性”,但无法还原挂单在档位间的迁移。Level-2 则提供十档甚至更多档位的买卖盘、逐笔委托与逐笔成交,能够重建订单簿的演化过程。工程上常见的快照结构可抽象为:

{
  "symbol": "600XXX",
  "timestamp": "2024-06-03 09:25:00.300",
  "last_price": 10.52,
  "volume": 128400,          // 累计成交量(股)
  "amount": 1351968.0,       // 累计成交额(元)
  "bids": [[10.51, 3200], [10.50, 8700], ...],  // 价, 量
  "asks": [[10.52, 2100], [10.53, 6400], ...]
}

逐笔委托字段一般包含委托序号、通道号、委托时间、价格、数量、买卖方向与委托类型;逐笔成交则包含成交序号、成交时间、成交价、成交量与买卖委托序号。这里有两个容易踩坑的细节:其一,累计成交量是单调递增的,跨时段计算增量时必须做差分,且要处理集合竞价一次性撮合造成的“跳变”;其二,逐笔委托的“撤单”往往以独立消息或数量为负的形式出现,若不单独识别,会把撤单误算成新增挂单,直接污染盘口深度基线。

四个时段的盘口行为差异

同一天内,盘口在不同交易时段呈现完全不同的统计特性,这正是“跨时段基线”必须分时段建模的根本原因。

  • 集合竞价(09:15–09:25):只接受委托、不连续撮合,盘口会显示虚拟开盘参考价。09:20 前允许撤单,之后撤单受限,因此 09:20 前后挂单量常出现明显“抽单”或“堆单”,深度序列波动剧烈但并非异常。
  • 连续竞价(09:30–11:30、13:00–14:57):逐笔撮合,订单簿持续演化,价差、深度、委托到达率相对平稳,是基线建模的主要样本区间。
  • 午休前后(11:30 与 13:00):11:30 后停止撮合但委托可继续申报(视交易所规则),13:00 开盘瞬间常出现积压委托集中释放,形成短时成交与深度突变。
  • 收盘集合竞价(14:57–15:00):与开盘竞价类似但方向相反,尾盘挂单集中,收盘价由一次性撮合产生,最后一笔成交量往往显著放大。
交易日盘口时段划分与行为特征 09:15 09:25 09:30 11:30 13:00 14:57 15:00 开盘集合竞价 过渡 上午连续竞价 午休 下午连续竞价 收盘竞价 撮合方式 一次性集中撮合 逐笔连续撮合 暂停撮合 逐笔连续撮合 一次性集中撮合 盘口深度 虚拟价,波动大 平稳演化 委托积压 平稳演化 尾盘集中堆单 撤单特征 09:20 前可撤 正常撤补 申报受限 正常撤补 撤单受限 成交量 开盘一笔跳变 增量平稳 无成交 开盘释放积压 收盘一笔放大 i 基线建模建议:连续竞价段作为主样本;集合竞价与午休前后单独建基线, 并对累计量做差分、对撤单消息单独归类,避免跨时段混用同一阈值。

从字段到可用的基线输入

理解结构之后,需要把原始消息整理成可计算的时序特征。以十档盘口为例,常用特征包括:买一卖一价差、买卖一档量比、前五档累计深度、订单簿不平衡度(买量减卖量除以总量)。计算时统一以“快照时间戳”为对齐基准,同一秒内多条消息按序号排序,避免乱序导致深度回退。对于累计成交量,采用 delta_vol = vol_t - vol_{t-1},并在集合竞价结束、午休结束两个边界处单独标记,不参与连续段的平滑统计。

一个可操作的示例:假设某股票在 10:00–10:05 的买一量序列为 3200、3500、3100、2800、3000 手,卖一量序列为 2100、1900、2400、2600、2300 手,则不平衡度依次约为 0.21、0.30、0.13、0.04、0.13。若把这段数据与 09:20 前后的竞价数据混在一起求均值,得到的“正常区间”会被竞价阶段的极端值拉宽,导致连续竞价中的真实异常被掩盖。因此分时段、分特征建立基线,是后续异常检测能否有效的前提。

实操建议:先按“时段标签 + 特征名”建立二维基线表,每个格子记录均值、标准差与样本量;样本量不足的格子(如收盘竞价仅 3 分钟)改用分位数而非正态假设,避免小样本下的阈值失真。

最后要强调的是数据质量校验:检查时间戳是否单调、档位价格是否严格有序、买卖价是否存在交叉、累计量是否出现负增量。这些校验应在进入基线计算前完成,任何一项失败都应打上质量标记而非直接丢弃,以便在异常复盘时区分“市场异常”与“数据异常”。只有把字段语义、时段边界与质量校验三者对齐,跨时段盘口异常基线才具备可解释性和可复现性。