4. 关联特征体系设计

前三章我们分别建立了订单簿快照、逐笔成交和撤单事件三条独立的数据流。但单看任何一条流,信息都是残缺的:快照告诉你“某一时刻盘口长什么样”,逐笔成交告诉你“谁在什么价位吃掉了什么”,撤单事件告诉你“某笔挂单消失了”。真正有研究价值的问题——比如“这笔撤单是不是因为盘口被压而主动撤退”“撤单之后同向成交是否立刻跟进”——必须把三条流在时间轴上对齐后才能回答。本节的任务就是设计一套关联特征体系,把三类原始事件转换成可计算、可解释、可复现的特征向量。

一、对齐基准:以撤单事件为锚点的时间窗口

关联特征的第一步是确定“以谁为中心对齐”。由于研究目标是撤单行为及其成交响应,我们以每一条撤单事件作为锚点事件,向前取盘口变化窗口、向后取成交响应窗口。设撤单事件发生在时刻 t_c,则定义:

  • 前窗 [t_c - Δ_pre, t_c):用于刻画撤单前的盘口与成交环境,Δ_pre 常取 3~10 秒;
  • 后窗 (t_c, t_c + Δ_post]:用于刻画撤单后的成交响应,Δ_post 常取 1~5 秒;
  • 快照对齐:取 t_c 之前最近一个快照作为“撤单前盘口”,取 t_c 之后第一个快照作为“撤单后盘口”。若快照间隔为 3 秒而 Δ_post 只有 1 秒,则后窗内可能没有快照,此时该特征置为缺失并打标记,而不是用未来快照回填。

这里必须强调一个容易踩的坑:时间戳口径要统一。交易所逐笔数据的时间戳通常精确到毫秒甚至微秒,而快照是切片生成的。如果撤单事件用的是本地接收时间、快照用的是交易所生成时间,两者之间会存在网络延迟偏差,导致前窗特征“看到未来”。工程上应统一使用交易所时间戳,并在数据接入层记录一份本地时间用于延迟监控,但特征计算只用交易所时间。

二、三类核心关联特征

(1)撤单前盘口变化特征。这类特征回答“撤单发生时盘口正在往哪个方向走”。最直接的是撤单档位附近的买卖压力变化:设撤单位于买盘第 k 档,计算前窗内该档位挂单量的变化率、买一至买五总量变化率,以及撤单档位相对盘口中间价的距离。一个典型特征是“撤单前同侧盘口是否在快速变薄”——若买盘挂单在撤单前 5 秒内减少了 40%,而该撤单本身只占减少量的一小部分,说明是群体性撤退而非个体行为。另一个重要特征是价差变化:撤单前价差是否走阔,往往预示流动性提供者在收缩。

(2)撤单与同向/反向成交的时序关系。这是关联特征体系的核心。对每笔撤单,统计前窗内同向成交笔数、反向成交笔数、同向成交量占前窗总成交量的比例,以及“最近一笔同向成交距撤单的时间间隔”。逻辑上,若撤单前反向成交密集(比如卖单持续吃掉买盘),买盘撤单很可能是被动撤退;若撤单前同向成交活跃(买单不断成交),买盘撤单则可能是主动收手。后窗则统计撤单后是否出现同向成交放大——这是判断“撤单是否为后续成交让路”的关键信号。

(3)撤单聚集度特征。单笔撤单可能是噪声,但短时间内同一方向、相近价位的批量撤单往往具有信息含量。聚集度可以从三个维度度量:时间聚集(前窗内同方向撤单笔数)、价位聚集(撤单价位前后 N 个 tick 内的撤单量占比)、账户聚集(若数据含账户标识,统计同一账户在窗口内的撤单次数)。没有账户数据时,可用“同价位同方向撤单的连续序号间隔”作为代理指标。

撤单事件锚定的关联特征提取示意 t 前窗 Δ_pre(3~10s) 后窗 Δ_post(1~5s) 撤单事件 t_c 快照 快照 快照 快照 快照 前窗特征 · 撤单档位挂单量变化率 · 同侧盘口变薄幅度 · 价差走阔程度 · 同向/反向成交笔数与量比 后窗特征 · 撤单后同向成交是否放大 · 反向成交跟进速度 · 盘口恢复时间 · 撤单后价差变化 聚集度 时间聚集 价位聚集 账户聚集

三、特征计算的一个具体示例

假设某只股票快照间隔 3 秒,我们观察到一条买盘第 3 档的撤单事件,撤单量 8000 股,时间戳 10:15:23.400。前窗取 6 秒,即从 10:15:17.400 开始。计算过程如下:

前窗内快照:10:15:18.000、10:15:21.000 两个快照
买3档挂单量:18.000 时 20000 股 → 21.000 时 12000 股
撤单前该档变化率 = (12000 - 20000) / 20000 = -40%
本笔撤单量 8000 股,占前窗该档减少量的 100%
→ 说明该档减少几乎全部由本笔撤单贡献,属个体行为而非群体撤退

前窗逐笔成交:同向(买)成交 3 笔共 1500 股,反向(卖)成交 11 笔共 9200 股
反向成交占比 = 9200 / (9200 + 1500) ≈ 86%
最近一笔反向成交距撤单 = 0.8 秒
→ 反向成交密集且贴近撤单时刻,符合“被动撤退”模式

后窗 3 秒内:同向成交 0 笔,反向成交 2 笔共 3000 股
→ 撤单后无同向跟进,进一步支持被动撤退判断

这个例子中,三个特征方向一致地指向“被动撤退”,比任何单一特征都更有说服力。实际工程中,这类特征会以数值形式写入特征表,供后续模型或规则使用。

四、特征表结构与缺失处理

建议的特征表以“撤单事件 ID”为主键,每行对应一笔撤单,列包括:锚点时间、方向、档位、撤单量、前窗各特征、后窗各特征、聚集度特征,以及一组质量标记——前窗快照数不足、后窗无快照、成交数据缺口等。质量标记不是可有可无的附属品:当后窗内没有快照时,后窗盘口特征必须置空并标记,模型训练时应将这些样本单独处理或剔除,绝不能把空值当零值参与计算,否则会系统性低估撤单后的盘口恢复速度。

设计特征时优先保证“可解释”而非“数量多”。一个能说清经济含义的特征(如反向成交占比),在研究和风控场景中往往比十个黑箱衍生特征更有价值。建议每个特征都附一行计算口径说明,包括窗口长度、数据源、缺失规则。

最后需要提醒的是,关联特征的有效性依赖于三条数据流的时间一致性。在正式使用前,应做一次对齐校验:随机抽取若干撤单事件,人工核对前窗内成交与快照是否确实发生在撤单之前,确认没有因时间戳口径不一致而引入前视偏差。这一步看似繁琐,却是整个特征体系可信度的地基。