4. 成交概率测算的数据需求与获取
买一卖一挂单成交概率测算,本质上是在回答一个问题:我挂在买一或卖一的这笔单,在多长时间内、以多大概率能成交?要回答它,光有K线或分钟收盘价远远不够,因为成交概率取决于盘口的排队结构、对手方的主动成交节奏,以及订单在队列中的位置变化。这些信息只能从逐笔委托、逐笔成交和快照行情三类数据中还原。本节先讲清需要什么数据、字段怎么定义,再讲数据源怎么选、脏数据怎么洗。
一、三类核心数据及其分工
三类数据不是互相替代,而是各管一段。逐笔委托(order)记录每一笔委托的进入、撤单与交易所撮合前的状态,是还原“队列里排了多少量、排在我前面的是谁”的唯一依据;逐笔成交(trade)记录每一次撮合成交的价格、数量与买卖方向,是判断“对手方主动打单有多猛”的直接证据;快照行情(snapshot)按固定频率(A股常见3秒一笔,部分Level-2为逐笔重建的十档快照)给出盘口十档价格与挂量、最新价、累计成交量等,是校准队列位置和计算时间窗口的基准。
三者的关系可以这样理解:快照给出某一时刻的“静态切片”,逐笔委托与逐笔成交给出切片之间的“动态增量”。只有把增量叠加到切片上,才能得到任意时刻买一队列的真实构成。下图展示了从原始数据到成交概率测算所需中间量的数据流关系。
二、字段定义与频率要求
字段定义直接决定测算能否落地。逐笔委托至少需要:委托时间(精确到毫秒)、委托序号(交易所撮合序号,用于排队)、买卖方向、委托价格、委托数量、撤单标记。其中委托序号是重建队列的关键——同一价位上,序号越小越靠前,你的挂单排在哪个位置,决定了前面还有多少量需要被吃掉。逐笔成交至少需要:成交时间、成交价格、成交数量、主动方方向(主动买/主动卖)。主动卖方向决定了买一队列被消耗的速度,是概率测算的核心输入。快照行情至少需要:快照时间、买一至卖十的价格与挂量、最新价、当日累计成交量。
频率方面,逐笔委托与逐笔成交是事件驱动、不等间隔的,A股Level-2逐笔数据在活跃时段每秒可达数百至数千条;快照是固定频率,常见3秒一笔。测算时不能把两类频率混用:队列重建必须用逐笔事件驱动,而概率的时间窗口(如“30秒内成交概率”)需要以快照时间轴为基准做对齐。实操中建议统一转换为毫秒时间戳,并以快照时刻为锚点,把两次快照之间的逐笔事件全部归入该区间。
三、常见数据源的优缺点
| 数据源 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 交易所Level-2逐笔 | 字段最全、时序最准、含委托序号 | 费用高、需授权、存储量大 | 正式测算与回测 |
| 券商行情API | 接入方便、实时性好 | 字段可能裁剪、历史深度有限 | 实盘辅助判断 |
| 第三方数据商 | 清洗较规范、接口统一 | 存在延迟、口径差异、需核对 | 快速验证与教学 |
| 公开历史数据 | 成本低、便于复现 | 频率低、缺逐笔、样本有限 | 方法验证与演示 |
选择数据源时,优先确认三件事:是否含委托序号、成交方向标记是否可靠、快照与逐笔的时间戳是否同源。若三者不一致,后续队列重建会出现系统性偏差,概率结果再好也不可信。
四、清洗要点与实操示例
清洗不是简单去重,而是保证“队列可重建、方向可判断、时间可对齐”。以下是一段可参考的清洗检查逻辑(示例参数,非实测结果):
# 伪代码:逐笔委托与成交的基础清洗
1. 时间戳统一:全部转为毫秒,剔除时间戳为0或超出交易时段的记录
2. 委托序号校验:同一价位内序号必须严格递增,重复序号保留首条
3. 撤单配对:撤单记录需能匹配到同序号的原委托,匹配不上的标记为异常
4. 成交方向校验:主动买成交量应等于卖一队列被消耗量(允许微小误差)
5. 快照对齐:两次快照之间的逐笔事件归入区间,缺失快照段标记为不可用
6. 涨跌停处理:涨跌停价位挂单队列特殊,单独标记,不参与常规概率统计
举个教学示例:假设某股票买一价为10.00元,当前买一挂量5000手,你的委托排在序号第800位、挂量200手。通过逐笔成交统计过去5分钟主动卖向该价位的成交量为每分钟300手,则粗略估算队列前方约(800-200)=600手需要先被消耗,按每分钟300手计算约需2分钟。这个估算就是成交概率测算的雏形——实际测算中还要考虑撤单导致的队列前移、主动卖强度的时变性和快照间隔内的分布,但数据需求与清洗逻辑是一致的。
最后提醒一点:不同数据源对“主动买/主动卖”的标记口径可能不同,有的按成交价与买卖价关系推断,有的直接由交易所给出。测算前务必用一小段样本做交叉验证,确认方向标记与快照盘口变化一致,否则成交概率会被系统性高估或低估。