问题描述
我现在的认知:level2数据是最小粒度的,都不是隔多长时间截取数据,而且精确到每一笔交易。tick数据是截取最近3秒钟的数据。不知道我的理解是否正确,望指点!
解决方案
您的理解基本是非常准确的!在量化交易和金融数据领域,Level-2数据和Tick数据确实在粒度和数据结构上有着本质的区别。下面为您详细梳理这两者的概念,并结合 JoinQuant (聚宽) 平台的数据特性进行深入解析。
1. Tick 数据(行情快照)
您的认知:“tick数据是截取最近3秒钟的数据” —— 完全正确(针对A股)。
- 本质:Tick数据通常被称为行情快照(Snapshot)。它并不是市场上发生的每一笔交易的记录,而是交易所每隔一段固定的时间,对当前市场的状态(最新价、累计成交量、买卖盘口等)拍下的一张“照片”。
- 频率:
- A股市场:基础的Tick数据(通常指Level-1)是每3秒钟发布一次快照。
- 期货市场:通常是每0.5秒发布一次快照。
- 包含内容:最新成交价、截至该时刻的累计成交量/成交额、买卖五档(或一档)的报价和挂单量。
- JoinQuant中的体现:在聚宽平台中,使用
get_ticks()或get_current_tick()获取的数据就是这种快照数据。文档明确指出:“股票部分提供买五卖五数据,每3秒一次快照;期货部分提供买一卖一数据,每0.5秒一次快照”。
2. Level-2 数据(深度行情)
您的认知:“level2数据是最小粒度的,精确到每一笔交易” —— 非常准确。
- 本质:Level-2 是交易所提供的高级/深度行情数据。它不仅包含了更高频率的盘口快照,更核心的是它包含了逐笔数据。
- 包含内容:
- 逐笔成交(Tick-by-Tick Trades):市场上真实发生的每一笔撮合成交记录,包含成交时间(精确到毫秒)、成交价格、成交数量、买卖方向等。没有任何遗漏。
- 逐笔委托(Orders):投资者下达的每一笔买卖挂单、撤单记录。
- 十档盘口:比普通Tick的五档盘口更深,提供买一到买十、卖一到卖十的报价和挂单量。
- JoinQuant中的体现:聚宽平台在底层回测引擎中使用了 Level-2 数据来进行高精度的订单撮合(文档提及:“回测使用的交易数据基于Level-2行情数据,Level-2级别的完整交易数据需要收盘后才能获得”),以保证回测的准确性。但目前直接开放给用户调用的高频API主要是基于3秒快照的 Tick 数据。
3. 核心区别总结对比
| 特性 | Tick 数据 (Level-1 快照) | Level-2 数据 (深度行情) |
|---|---|---|
| 数据生成方式 | 时间切片/快照 (如每3秒截取一次) | 事件驱动/逐笔记录 (发生一笔记录一笔) |
| 数据粒度 | 较粗 (3秒内的多笔交易会被汇总) | 极细 (精确到每一笔真实的委托和成交) |
| 盘口深度 | 通常为买卖五档 (A股) 或一档 (期货) | 买卖十档,甚至提供完整的委托队列 |
| 数据量大小 | 相对较小 | 极其庞大 (包含海量的逐笔明细) |
| 主要应用场景 | 中低频量化策略、分钟/日线指标计算、普通盘口分析 | 高频交易 (HFT)、微观结构分析、订单簿动力学、主力资金流向监控 |
总结
您的认知非常到位。Tick数据是“定时拍照”,而Level-2数据是“全程录像”。如果您在 JoinQuant 上编写 Tick 级别的策略(如使用 handle_tick),您处理的是每3秒到来的快照数据,这对于绝大多数日内交易和算法交易已经足够;但如果您要进行极高频的微观结构套利,通常就需要采购并处理庞大的 Level-2 逐笔数据了。