2. Tick数据基础

高频行情标签校准的第一步,是彻底理解原始Tick数据的结构、来源与存储方式。Tick数据是逐笔成交与逐笔报价的微观记录,其质量直接决定后续标签校准的成败。本章从三个核心维度展开:数据结构、数据源、存储格式。

2.1 Tick数据结构

一条标准的Tick记录至少包含四个核心字段:时间戳、成交价格、成交量、买卖盘口快照。下表列出国内股票市场Level-2 Tick的典型字段定义:

字段类型说明示例
Timestampint64 / datetime交易所撮合时间,精度通常为毫秒或微秒2025-03-21 09:30:00.123
Pricefloat64最新成交价,单位元15.68
Volumeint64该笔成交量,单位股(A股)1000
BidPrice1float64买一价15.67
BidVolume1int64买一量5000
AskPrice1float64卖一价15.69
AskVolume1int64卖一量3000
TradeFlagchar成交方向:B(主动买)、S(主动卖)、N(未知)B
校准要点:时间戳精度是标签校准的基石。若原始Tick时间戳仅到秒级,则无法准确还原订单簿事件顺序,必须通过盘口变化反推或使用更高精度数据源。

买卖盘口通常包含10档(Level-2)或5档(Level-1)。在标签校准中,最常用的是前3档价量数据,用于计算订单簿斜率、价差、深度等微观结构特征。

2.2 Tick数据源

Tick数据源分为交易所直连、第三方数据商、开源数据集三类。下表对比其核心差异:

数据源类型延迟字段完整性成本典型代表
交易所直连微秒级全字段(含逐笔委托)极高上交所L1/L2、深交所L2
第三方数据商毫秒级核心字段(缺逐笔委托)中等Wind、聚宽、Tushare
开源数据集秒级或离线有限字段(通常仅成交)免费Kaggle、Quandl
避坑提示:第三方数据商常对时间戳做“对齐处理”(如截断到毫秒或整秒),这会破坏Tick的微观时序。校准前必须检查时间戳的单调性与精度,必要时做重采样或丢弃。

选择数据源时,需权衡三个因素:

  • 精度需求:标签校准若涉及订单簿重建,必须使用微秒级时间戳。
  • 字段覆盖:缺少逐笔委托字段将无法还原订单簿事件流。
  • 数据连续性:断点或缺失会导致标签序列出现空洞。

2.3 Tick数据存储格式

高频Tick数据量巨大(单只股票日均约10万条),存储格式需兼顾读写速度与压缩率。业界常用以下三种格式:

格式压缩率读取速度适用场景
Parquet高(列式压缩)快(列裁剪)离线分析、特征工程
HDF5中中科研、小规模回测
CSV低(无压缩)慢(全量解析)调试、小样本交换

推荐使用Parquet格式存储校准后的Tick数据。以下是一个写入示例:

import pandas as pd

# 假设 tick_df 是包含时间戳、价格、成交量、盘口的DataFrame
tick_df = pd.DataFrame({
    'timestamp': pd.to_datetime(['2025-03-21 09:30:00.123',
                                 '2025-03-21 09:30:00.456']),
    'price': [15.68, 15.69],
    'volume': [1000, 500],
    'bid_price1': [15.67, 15.68],
    'bid_vol1': [5000, 4800],
    'ask_price1': [15.69, 15.70],
    'ask_vol1': [3000, 3200]
})

# 写入Parquet,启用snappy压缩
tick_df.to_parquet('tick_20250321.parquet',
                   compression='snappy',
                   index=False)
存储建议:按日期分区存储,文件名包含股票代码与日期,如 600519_20250321.parquet。校准后的标签字段(如异常标记、订单簿特征)应作为独立列追加,避免修改原始数据。

下面用一张SVG图总结Tick数据的完整生命周期:从交易所产生,经数据源分发,到存储为结构化文件,最后用于标签校准。

Tick数据生命周期与存储架构 交易所撮合引擎 上交所 / 深交所 数据源分发 直连 / 第三方 / 开源 存储格式 Parquet / HDF5 / CSV 校准 核心字段结构 时间戳 (Timestamp) → 精度决定时序重建能力 价格 (Price) + 成交量 (Volume) → 成交明细 买卖盘口 (Bid/Ask 1~10档) → 订单簿快照 存储格式选择建议 离线分析 → Parquet (列式压缩,按日期分区) 实时流处理 → 内存队列 + 按分钟落盘Parquet 调试交换 → CSV (仅限小样本,注意时间戳精度)

2.4 数据质量检查清单

在开始标签校准之前,必须对原始Tick数据执行以下检查:

  1. 时间戳单调性:确保无回退或重复时间戳。
  2. 价格合理性:价格在涨跌停范围内,无负值或零值。
  3. 成交量非负:成交量必须大于0,且与盘口变化逻辑一致。
  4. 盘口价差非负:卖一价 ≥ 买一价,否则为异常。
  5. 字段完整性:无大面积缺失值,特别是时间戳和价格。
实操建议:编写一个数据质量报告函数,输出每日Tick的缺失率、异常比例、时间戳间隔分布。将报告作为校准流程的第一步,可节省大量调试时间。