高频数据基础:tick数据、订单簿快照、逐笔成交、盘口深度等数据格式与常见数据源

高频交易策略的研发与回测,其根基在于对市场微观结构数据的精确理解与高效处理。与传统的日线或分钟线数据不同,高频数据记录了市场在极短时间内(毫秒甚至微秒级)的完整状态变化。本章将系统梳理高频数据的核心形态——tick数据、订单簿快照、逐笔成交与盘口深度,解析其标准格式、字段含义、数据源特性,并探讨在回测与模拟撮合场景中的关键应用与常见陷阱。

高频数据层级与回测应用链路 数据源层 交易所原始行情 券商/第三方供应商 历史数据库/数据仓库 核心数据格式 Tick 数据 逐笔成交+最优价 订单簿快照 全档位挂单状态 逐笔成交 每笔交易明细 盘口深度 买卖压力分布 回测与模拟撮合 数据清洗/对齐 事件驱动回测 撮合引擎验证 延迟/滑点模型 关键字段与特征 • Tick: timestamp, price, volume, side, trade_id • 订单簿快照: bid[10], ask[10], bid_vol[10], ask_vol[10], seq • 逐笔成交: 成交价/量/方向/主动方/成交编号 • 盘口深度: 买卖10档价格与数量、加权压力 数据源对比 • 交易所直连: 低延迟、高成本、需合规 • 第三方(如Refinitiv/东财): 便捷、覆盖广、延迟略高 • 开源/学术(如LOBSTER): 免费、适合研究、字段受限

核心原理:高频数据的四层结构

高频数据并非单一类型,而是由不同粒度、不同用途的数据流共同构成。理解其层级关系是正确使用的前提。从信息生成顺序看,交易所撮合引擎首先维护一个动态的订单簿(Order Book),记录所有未成交的限价挂单;当新订单到达并满足成交条件时,产生逐笔成交(Trade);同时,交易所会周期性或事件性发布订单簿快照(Snapshot),反映某一时刻的挂单状态;而tick数据通常指代最细粒度的行情事件流,可能包含成交和最优报价变动。盘口深度则是订单簿快照中买卖各档位挂单量的具体体现。

数据层级核心字段时间粒度回测用途
逐笔成交成交时间、价格、数量、主动买卖方向、成交编号事件驱动(微秒级)精确模拟成交、判断主动买卖压力
订单簿快照快照时间、买1-10档价格/量、卖1-10档价格/量、序号通常10-100ms或事件触发重建市场深度、模拟限价单排队
盘口深度由快照计算:买卖价差、加权深度、委比与快照同步评估流动性、设计冰山单策略
Tick数据流时间戳、最新价、累计成交量、买卖最优价每笔变动触发简化回测、信号触发基准

判断方法与操作流程:从原始数据到回测可用格式

原始高频数据往往存在噪声、乱序、缺失等问题,直接用于回测会产生严重偏差。标准处理流程包括:时间戳对齐(统一为交易所时间或本地接收时间)、去重与排序(按交易序号或时间排序)、异常值过滤(剔除价格/数量为负或明显错误的数据)、快照重建(若只有逐笔委托,需通过撮合逻辑重建订单簿)。

# 典型tick数据CSV格式示例
timestamp, trade_price, trade_volume, side, trade_id
09:30:00.123456, 100.25, 200, B, 100001
09:30:00.124001, 100.26, 150, S, 100002

# 订单簿快照JSON格式示例
{"ts": 1630000000.123, "seq": 88231, "bids": [[100.25, 500], [100.24, 800]], "asks": [[100.26, 300], [100.27, 600]]}

在回测系统中,推荐采用事件驱动架构:将逐笔成交和快照视为事件流,按时间顺序逐条注入模拟撮合引擎。对于限价单策略,必须使用订单簿快照数据来模拟排队位置和成交概率;对于市价单策略,则主要依赖逐笔成交数据中的主动成交价。

案例拆解:基于订单簿快照的流动性冲击回测

背景与目标:某中频策略团队需要评估在沪深300成分股上,单笔大额市价单(如100万元)对市场价格的冲击成本。他们仅有分钟级K线数据,但发现回测结果过于乐观,实际交易滑点远高于预期。

关键输入与现象:团队获取了某日的tick数据与订单簿快照(10档)。初始分析发现,分钟K线显示平均买卖价差为0.01元,但快照数据显示,在10:30-10:45时段,买1档挂单量仅500股,而策略模拟的市价单需要买入约5000股,这意味着需要吃掉买1至买5档的全部挂单,导致实际成交均价显著偏离最优价。

分析过程:通过回放订单簿快照,团队计算了不同时间点的市场深度曲线。他们发现,当买1档挂单量小于订单规模的20%时,冲击成本呈指数上升。进一步分析逐笔成交数据,确认了在快照间隙,有大量小额成交消耗了挂单,但快照未能及时反映。

操作步骤与结果:团队修改了回测引擎,将市价单拆分为多个子单,并依据快照中的各档挂单量模拟逐档成交。同时,引入保守滑点模型:若订单量超过买1档量,则按买2档价格成交剩余部分,以此类推。回测结果显示,实际冲击成本比原模型高出约0.15%,更接近实盘水平。随后,策略增加了对盘口深度的实时监控,当深度不足时自动降低下单量。

风险与复盘:此案例揭示了仅依赖tick价格数据的局限性。快照数据虽然能反映深度,但存在时间延迟,且无法捕捉快照之间的瞬时变化。团队最终采用“快照+逐笔成交”混合模式,并利用逐笔成交数据中的主动买卖方向来修正快照的滞后性。

常见误区与总结复盘

风险提示:高频数据回测中最常见的三大误区:
  • 前视偏差(Look-ahead Bias):使用了未来数据(如当日全部成交数据)来生成信号,导致回测结果虚高。必须严格按时间戳顺序处理,确保信号生成时只能使用当前时刻及之前的数据。
  • 忽略订单簿动态:仅用tick价格模拟限价单成交,未考虑排队位置和撤单概率,导致成交率被高估。
  • 数据源时间戳不一致:不同数据源(如交易所时间与本地接收时间)混用,造成事件顺序错乱,尤其在毫秒级策略中影响巨大。
经验建议:在构建高频回测环境时,建议先对数据进行“清洗-对齐-校验”三步预处理。清洗指剔除异常值;对齐指统一时间基准(推荐使用交易所撮合时间);校验指通过抽样对比逐笔成交与快照的一致性(如累计成交量是否吻合)。此外,务必保留原始数据的完整字段,不要为了节省空间而丢弃看似无用的序号或标志位。

总结:高频数据是量化策略精细化研究的基石。tick数据提供了最原始的市场脉搏,订单簿快照揭示了流动性的结构,逐笔成交则记录了每一笔交易的博弈结果。在实际回测中,应根据策略类型(做市、套利、趋势)选择合适的数据层级,并建立严格的数据质量校验机制。只有深入理解数据格式背后的市场微观结构,才能构建出贴近实盘、可信度高的回测系统。