1. 逐笔成交数据初识

在行情数据体系中,逐笔成交(Tick-by-Tick Trade,常简称逐笔成交或成交明细)是最细粒度的交易记录之一。它记录的是交易所撮合引擎每完成一笔撮合后产生的成交事件,而不是按固定时间间隔(如3秒)聚合后的快照。理解逐笔成交,是后续解析字段结构、编写高效读取程序的前提。

一、逐笔成交到底记录了什么

一笔逐笔成交记录通常对应撮合引擎的一次成交动作,核心信息包括:成交时间(精确到毫秒甚至微秒)、证券代码、成交价格、成交数量、成交金额、买卖方向标识(主动买/主动卖或买卖盘性质)、成交编号、以及买卖双方的委托编号等。与快照行情相比,逐笔成交不包含十档盘口,但它保留了“每一笔钱以什么价格、什么方向、多大数量成交”的原始事实。

需要特别区分两个容易混淆的概念:逐笔成交与逐笔委托。逐笔委托记录的是订单进入撮合队列的事件(委托价格、数量、方向、订单类型),逐笔成交记录的是订单被撮合匹配的结果。二者通过委托编号、成交编号可以关联,但字段结构和用途不同。本节聚焦逐笔成交,逐笔委托将在后续章节展开。

二、逐笔成交在交易分析中的作用

逐笔成交的价值在于“还原交易过程”。聚合后的K线或快照只告诉你一段时间内的最高价、最低价、成交量和收盘价,而逐笔成交能回答更细的问题:

  • 资金流向判断:通过主动买成交量与主动卖成交量的对比,估算净流入/净流出,识别大单方向。
  • 大单与主力行为识别:按成交金额或成交量阈值筛选大单,统计其出现的时间分布与价格位置。
  • 微观结构研究:分析成交间隔、成交价格相对买卖价的位置、订单簿消耗速度,用于研究流动性与价格发现。
  • 回测与仿真:高频或日内策略回测需要逐笔级成交来模拟真实成交价与滑点,避免用快照价格造成偏差。
  • 异常交易排查:对敲、拉抬、虚假申报等行为的识别,往往依赖逐笔成交与委托的时序关系。

举个教学示例(以下为合理假设的示例数据,非实测):某股票在10:00:00.120有一笔成交,价格10.50元、数量2000股、方向为主动买;10:00:00.350又有一笔10.49元、5000股、主动卖。若统计一分钟内主动买成交量为12万股、主动卖成交量为8万股,则可粗略判断该分钟买方力量占优。这类统计正是逐笔成交最直接的应用。

三、常见数据来源与格式概览

逐笔成交数据的来源主要有三类:交易所官方行情(如上交所、深交所的Level-2逐笔成交,通常通过专线或行情网关分发)、商业数据服务商(如Wind、聚源、Tushare、AkShare等提供的接口或文件)、以及券商柜台/量化平台导出的历史文件。不同来源在字段命名、时间精度、编码方式上存在差异,但核心语义一致。

格式方面,常见的有:

  • CSV/文本文件:按行存储,字段以逗号或制表符分隔,便于用pandas或流式读取,但文件体积大。
  • 二进制格式:如交易所原始二进制行情包、Parquet、Feather等列式存储,读取快、压缩率高,适合大规模历史数据。
  • 数据库表:存入ClickHouse、DolphinDB、MySQL等,支持按代码和时间范围查询。
  • 实时流:通过TCP/组播行情接口推送,需要按协议解析二进制报文。

下面这张图概括了逐笔成交从产生到被使用的典型链路,以及它与逐笔委托、快照行情的关系,帮助建立整体数据观。

逐笔成交数据链路与数据体系关系 交易所撮合引擎 订单匹配 → 产生成交事件 逐笔委托 委托编号 · 价格 · 数量 · 方向 订单类型 · 时间戳 逐笔成交(本节对象) 成交编号 · 价格 · 数量 · 方向 买卖委托编号 · 时间戳 委托编号关联 交易所Level-2 专线 / 行情网关 商业数据服务商 接口 / 历史文件 券商 / 量化平台 柜台导出 / 平台API 实时行情流 TCP / 组播报文 存储与传输格式 CSV / 文本 · Parquet / Feather 列式 · 数据库表(ClickHouse、DolphinDB) · 二进制行情包 应用:资金流向 · 大单识别 · 微观结构研究 · 回测仿真 · 异常交易排查

四、读取逐笔成交前应先建立的三个认识

第一,逐笔成交是“事件流”而非“时间序列”。它没有固定采样间隔,同一毫秒可能有多笔成交,也可能长时间没有成交。因此读取时不能假设等间隔,统计时要按时间窗口聚合,而不是按行号对齐。

第二,字段语义依赖数据源。同样是“方向”字段,有的数据源用“B/S”表示主动买/主动卖,有的用“1/2”编码,有的甚至只给买卖委托编号,需要自行推断主动方。读取程序必须先把字段映射表建立清楚,再进入解析逻辑。

第三,数据量级要提前评估。以A股为例,单只活跃股票一天的逐笔成交可达数万至数十万笔,全市场一天可达数亿笔。用pandas一次性读入全市场CSV很容易内存溢出,因此后续章节会重点讲分块读取、列裁剪、类型压缩和流式处理。

学习建议:先拿一只股票、一个交易日的逐笔成交文件做“小样本解剖”——打印前20行、统计字段缺失率、检查时间戳是否单调、核对成交金额是否等于价格×数量(考虑单位),把数据“摸熟”再写正式读取代码,能避免大量返工。