2. 盘口数据基础与高频异动定义
做盘口异动聚类,第一步不是写算法,而是把“数据长什么样”和“什么算异动”这两件事钉死。Level-2 行情与普通快照行情的根本差别在于:它不只给你一个时点的买卖五档,而是把逐笔委托、逐笔成交、订单簿重建所需的全部增量事件都推给你。聚类分析的对象正是这些事件序列在时间轴上的密度、方向与结构变化,因此必须先理解数据的分层结构,再谈异动的量化界定。
一、Level-2 行情的三层数据结构
可以把 Level-2 数据理解为三个层次,它们的时间粒度和语义完全不同:
- 快照层(Snapshot):通常每 3 秒推送一次,包含最新价、成交量、成交额、买卖十档价格与挂单量。它适合做低频统计,但会丢失档位之间的瞬时变化。
- 逐笔委托层(Order):记录每一笔委托的进入、撤单与交易所撮合前的原始意图,字段包括委托序号、买卖方向、价格、数量、委托类型(限价/市价/本方最优等)。这是识别“挂单—撤单”行为的关键。
- 逐笔成交层(Trade):记录每一笔实际撮合成交,字段包括成交序号、价格、数量、成交方向(主动买/主动卖,部分交易所用 BS 标志或由买卖委托序号推断)。这是计算主动买卖力量的基础。
三层数据通过委托序号和成交序号关联:一笔成交必然对应买方与卖方各一笔委托,通过序号可以回溯“谁主动、谁被动”。实际工程中,逐笔委托与逐笔成交往往分两个通道推送,需要按时间戳与序号做归并排序,才能重建出连续的订单簿事件流。若归并出错,后续的撤单率、大单占比都会失真,这一点在数据接入阶段就要用“序号连续性校验”和“时间戳单调性校验”兜底。
二、逐笔委托与逐笔成交的实战读法
光有字段还不够,要能读出行为。举一个教学示例(以下数值为合理假设,非实测):某股票在 10:15:00 至 10:15:30 的 30 秒内,逐笔委托通道出现 420 笔委托,其中 260 笔在挂出后 2 秒内被撤销,撤单率约 61.9%;同期逐笔成交仅 85 笔,主动买 30 笔、主动卖 55 笔,主动买卖比约 0.55。这组数据说明:大量委托并未转化为成交,而是“挂—撤”循环,属于典型的虚假挂单或试探性挂单行为。若只看快照,十档挂单量可能看起来正常,但逐笔层已经暴露了意图。
读逐笔成交时要注意方向判定。多数交易所的逐笔成交会给出 BS 标志,但部分数据源需要自行推断:成交价等于卖方委托价、且买方为主动方时记为主动买;反之记为主动卖。推断规则必须在数据字典中固定,并在全流程保持一致,否则聚类结果会因方向定义漂移而不可比。
三、异动的业务含义与量化界定
“异动”在业务上指盘口出现了偏离常态、可能预示价格方向或流动性变化的行为。它不是一个单一指标,而是一组可观测信号的组合。常见的业务含义包括:
- 虚假挂单:大额挂单快速撤单,制造买卖压力假象。
- 主动扫单:连续主动买/卖成交,吃掉多档挂单,反映真实方向意愿。
- 盘口失衡:买卖十档挂单量严重不对称,预示短期价格压力。
- 大单突袭:单笔或短时大单成交,显著偏离近期成交分布。
量化界定需要把上述含义翻译成可计算的指标。以下是一份可直接参考的异动判定参数表(阈值为示例,需按标的流动性和时段校准):
| 指标 | 计算口径 | 示例阈值 | 对应业务含义 |
|---|---|---|---|
| 撤单率 | 窗口内撤单笔数 / 委托笔数 | > 60% | 虚假挂单、试探 |
| 大单占比 | 单笔量 > 近 20 日均单量 3 倍的成交量 / 总成交量 | > 30% | 大单突袭 |
| 主动买卖比 | 主动买成交量 / 主动卖成交量 | 偏离均值 > 2σ | 方向意愿 |
| 盘口失衡度 | (买十档量 − 卖十档量) / (买十档量 + 卖十档量) | |值| > 0.7 | 短期价格压力 |
| 成交密度突变 | 当前 10 秒成交量 / 前 60 秒均值 | > 3 倍 | 扫单、异动启动 |
这些指标构成聚类分析的特征向量。需要强调的是,阈值不是拍脑袋定的,而应基于标的自身的历史分布做滚动校准:例如用过去 20 个交易日的同一时段数据计算均值和标准差,把“偏离 2σ”作为动态阈值。这样在不同流动性的标的上,异动定义才具有可比性。
把三层数据、行为读法和量化指标串起来,就得到了本节的核心结论:Level-2 的价值在于逐笔事件,异动的本质是事件序列在密度、方向和结构上的偏离,而量化界定就是把这种偏离写成可计算、可校准、可复现的指标。后续的聚类方法,都是在这组特征向量上做文章。