1. 逐笔成交数据初识

在量化研究与高频数据分析中,逐笔成交数据(Tick-by-Tick Trade Data,也常被称为成交明细、分笔成交)是最细粒度的市场交易记录。它不同于按固定周期聚合的K线,也不同于只保留最优档位快照的行情切片,而是每发生一笔撮合成交就记录一条,完整保留了成交发生的时间、价格、数量以及主动买卖方向。理解逐笔成交数据,是后续做特征提取、样本构建、微观结构建模的第一块基石。

从定义上说,逐笔成交数据描述的是“谁在什么时刻、以什么价格、成交了多少、由哪一方主动发起”。它回答的是交易层面的问题,而不是委托层面的问题。委托层面的信息属于逐笔委托数据(Order-by-Order),两者常被混淆:逐笔委托记录的是每一笔挂单、撤单的申报行为,逐笔成交记录的是申报被撮合后的结果。做特征工程时,二者往往需要配合使用,但本节先聚焦成交侧。

一条逐笔成交记录长什么样

不同数据源字段命名略有差异,但核心字段高度一致。以常见的A股Level-2逐笔成交为例,一条记录通常包含以下内容:

字段含义示例值说明
时间成交时刻09:31:07.320精确到毫秒或10毫秒,是时序特征的基础
证券代码标的标识600519用于多标的对齐
成交价格撮合价1685.00单位元,需注意复权处理
成交数量成交量300股或手,需统一单位
成交金额价×量505500部分数据源直接给出
买卖方向主动方标识B / SB为主动买(外盘),S为主动卖(内盘)
成交编号序列号1023871用于去重与排序

其中买卖方向是最容易被误解的字段。它标识的是“主动成交方”:若一笔成交由买方以卖一价主动吃单完成,则记为B(主动买);若由卖方以买一价主动砸单完成,则记为S(主动卖)。部分数据源还会给出中性标识N(如集合竞价撮合、无法判定主动方的情形)。方向字段直接决定了后续“主买量、主卖量、净主动买入”等特征的计算口径,务必在数据字典中确认其定义,不能想当然。

时间字段的精度直接决定特征分辨率。毫秒级数据可以构造秒级、分钟级的量价特征;若只有秒级精度,则高频类特征(如成交间隔、瞬时冲击)会失真。拿到数据后第一件事就是检查时间戳的最小间隔与单调性。

数据来源与获取方式

逐笔成交数据的来源主要有三类。第一类是交易所官方Level-2行情,通过券商或行情服务商(如Level-2授权厂商)以文件或实时流形式提供,权威性最高,字段规范,但通常需要付费授权。第二类是第三方数据平台,如聚宽、米筐、Tushare、Wind等,它们对原始数据做了清洗与标准化,接口友好,适合研究与回测,但字段口径可能与交易所原始定义存在差异。第三类是自建采集,通过行情网关接收实时推送并落库,适合对时效性要求高的实盘场景,但需要处理丢包、乱序、重复等问题。

无论哪种来源,拿到数据后都应先做一次“体检”:检查时间范围是否覆盖目标区间、是否存在重复成交编号、买卖方向字段的取值集合是否符合预期、成交价格是否落在当日涨跌停区间内、成交量是否出现异常零值。这些检查看似琐碎,却能避免后续特征计算出系统性偏差。

从原始记录到可用结构

原始逐笔成交往往以追加日志的形式到达,顺序即时间顺序,但跨数据源合并时可能出现乱序。工程上通常先按“证券代码+成交编号”去重,再按时间戳稳定排序,最后统一单位(价格统一为元、数量统一为股、金额统一为元),形成一张标准化的成交明细表。这张表是后续所有特征提取的输入底座。

逐笔成交数据:来源 → 清洗 → 标准化明细表 交易所 Level-2 官方授权 · 字段规范 第三方数据平台 清洗标准化 · 接口友好 自建行情采集 实时落库 · 需处理乱序 数据体检与清洗 去重(代码+成交编号) · 时间稳定排序 单位统一 · 方向取值校验 · 涨跌停区间检查 标准化成交明细表(特征提取输入底座) 时间 · 代码 · 价格(元) · 数量(股) · 金额(元) · 方向(B/S/N) · 成交编号

上图把“来源—清洗—标准化”这条链路画清楚了:三类来源在字段口径上并不完全一致,必须先经过统一的体检与清洗,才能汇入同一张明细表。注意图中清洗环节特意标出了“方向取值校验”和“涨跌停区间检查”,这两项正是逐笔成交数据最容易出问题的地方。

一个可动手的小例子

假设我们拿到某只股票连续三笔成交记录(示例数据,仅用于说明结构):

时间,代码,价格,数量,方向,成交编号
09:31:07.320,600519,1685.00,300,B,1023871
09:31:07.560,600519,1684.80,200,S,1023872
09:31:08.010,600519,1685.20,500,B,1023873

按方向汇总,主买量 = 300 + 500 = 800 股,主卖量 = 200 股,净主动买入 = 800 − 200 = 600 股。若把时间窗口切到秒级,09:31:07 这一秒内主买 300、主卖 200,净流入 100 股;09:31:08 这一秒主买 500。可以看到,仅仅三笔记录就已经能支撑“方向净额”“秒级成交强度”这类基础特征。这正是逐笔成交数据的价值所在——它把市场行为拆到了最小可观测单元,让后续的特征提取有据可依。

不要把“买卖方向”与“价格涨跌”混为一谈。主动买不一定推动价格上涨(可能被大卖单压住),主动卖也不一定导致下跌。方向字段反映的是成交发起方,价格变化是撮合结果,二者需要分别建模。