3. 单信号定义与量化表达

盘口分析要走向可计算、可回测、可组合,第一步不是急着找组合规律,而是把“大单挂单、撤单、托单、压单、扫单”这些交易者用眼睛感知的现象,翻译成机器能读、能比较、能统计的变量。本节的核心任务,就是建立一套标准化信号字典:每个信号都有明确的触发条件、强度度量、方向含义和有效时间窗,使后续的相关性约束与组合判断建立在同一套语言之上。

从盘口现象到信号变量的映射原则

盘口原始数据通常只有逐笔委托、逐笔成交和快照三个层次。快照给出买一至买十、卖一至卖十的价位与挂单量;逐笔委托给出每笔挂单、撤单的价位、数量与方向;逐笔成交给出成交价、成交量与主动方向。信号定义的本质,是在这些原始字段上构造可判定的条件表达式,并输出一个归一化的强度值。

设计时建议遵循三条原则。第一,可复现:触发条件只依赖确定的字段与阈值,不依赖“看起来很大”这类主观描述。第二,可归一:强度尽量映射到 0~1 或 0~100,便于不同股票、不同时段横向比较。第三,带时间戳与有效期:盘口信号是瞬时现象,必须记录触发时刻与衰减窗口,否则组合时会误把早已消失的信号当作当前状态。

五类典型信号的触发条件与强度度量

下面给出一个可直接落地的信号字典示例。其中阈值均为教学示例参数,实盘需按标的流动性、价格档位和时段自行标定。

信号 触发条件(示例) 强度度量 方向含义
大单挂单 BIG_ORDER 单档新增挂单量 ≥ 该档近 20 笔均量的 5 倍,且金额 ≥ 100 万元 min(1, 挂单量 / (10 × 均量)) 买向偏多、卖向偏空
撤单 CANCEL 某档挂单在 3 秒内减少 ≥ 原量 60%,且无对应成交 撤单量 / 该档原挂单量 买向撤单偏空、卖向撤单偏多
托单 SUPPORT 买盘连续 ≥ 3 档出现大单,且买一至买三合计 ≥ 卖方同档 2 倍 买三档合计 / (买三档 + 卖三档) 偏多,但需警惕撤托
压单 PRESSURE 卖盘连续 ≥ 3 档出现大单,且卖一至卖三合计 ≥ 买方同档 2 倍 卖三档合计 / (买三档 + 卖三档) 偏空,但需警惕撤压
扫单 SWEEP 500 毫秒内主动成交吃掉 ≥ 3 个卖档(或买档),累计量 ≥ 均量 8 倍 min(1, 扫单量 / (20 × 均量)) 向上扫偏多、向下扫偏空

需要注意方向约定:本文统一以“买盘方向为正、卖盘方向为负”表达信号方向。托单、向上扫单记为正;压单、向下扫单记为负;撤单则按被撤档位所在方向取反,即买档撤单为负、卖档撤单为正。全文与图示保持一致,切换参照系时必须显式说明。

信号字典的字段结构

为了让信号能被程序统一消费,每个信号应输出为一条结构化记录,而不是一个孤立的布尔值。建议字段如下:

{
  "signal_id": "SWEEP_UP",
  "ts": "2024-06-11T10:03:27.412",
  "symbol": "600XXX",
  "direction": 1,
  "strength": 0.78,
  "raw": {"volume": 1560000, "levels": 4, "avg_vol": 92000},
  "ttl_ms": 3000,
  "source": "trade"
}

其中 strength 是归一化强度,ttl_ms 是有效期,超过该窗口信号自动失效,避免陈旧信号参与组合。同一时刻可能并存多个信号,因此还需要一个信号状态表按标的维护当前有效信号集合,供后续相关性约束模块读取。

强度归一化与阈值标定的实操要点

强度归一化最常用的做法是“相对基准法”:以该标的近 N 笔同档挂单量或近 N 分钟成交量均值为基准,用当前量除以基准再截断到 0~1。基准窗口不宜过短,否则在放量时段会把普通挂单误判为大单;也不宜过长,否则在缩量时段会过度敏感。教学示例可取 20 笔或 5 分钟,实盘按流动性分层标定。

阈值标定建议采用分位数而非固定绝对值。例如把“大单”定义为该标的近 20 个交易日同档挂单量的 95 分位以上,这样不同价位的股票都能得到相对合理的判定。扫单的档位数与时间窗同样需要标定:时间窗过宽会把连续小单误判为扫单,过窄则漏掉分批扫单。示例中取 500 毫秒、3 档,属于中等流动性标的的经验起点。

信号字典一旦确定,就应冻结版本号。后续调整阈值或新增字段时,用新版本号区分,避免历史回测与实时计算使用不同定义导致结论不可比。

信号之间的时序与依赖关系

五类信号并非彼此独立。托单可能先于扫单出现,压单可能被撤单消解,扫单又可能引发新的挂单。理解它们的时序关系,是后续做相关性约束的前提。下图以一条时间轴展示典型信号在盘口中的出现顺序、方向与强度衰减关系。

盘口信号时序与强度衰减(示例) 方向约定:买向为正、卖向为负;强度 0~1,超过有效期自动失效 时间 t0 t1 t2 t3 t4 t5 托单 SUPPORT 方向 +1 · 强度 0.62 大单挂单 BIG_ORDER 方向 +1 · 强度 0.71 向上扫单 SWEEP 方向 +1 · 强度 0.78 买档撤单 CANCEL 方向 −1 · 强度 0.55 压单 PRESSURE 方向 −1 · 强度 0.66 扫单后买档被撤,强度衰减 偏多信号 偏空信号 扫单类 虚线:信号有效期内的强度衰减路径

图中可以看到,托单与大单挂单往往先出现,扫单是主动成交的爆发点,而撤单可能在任何时刻消解此前的托单或压单。若把“托单存在”与“买档撤单”同时当作偏多证据,就会得出错误结论——这正是后续相关性约束要解决的问题。因此信号字典不仅要定义单个信号,还要为每个信号标注可被哪些信号消解,例如托单可被同档撤单消解,压单可被向上扫单消解。

标准化信号字典的落地检查

在把字典交给下游模块前,建议逐项核对:每个信号是否有唯一 ID 与版本号;触发条件是否只依赖已落库字段;强度是否已归一且方向符号一致;有效期是否明确;是否存在与其他信号的消解关系声明;同一时刻重复触发时是覆盖还是累加。把这些约定写进字典文档,后续的组合规则、相关性约束和回测才有共同基准,否则不同人写出的“托单”很可能根本不是同一个东西。

信号强度不是概率,也不是预期收益。它只表示该现象相对基准的显著程度。把强度直接当作仓位系数或胜率使用,是常见的误用。