高频 Tick 数据基础:定义、结构与核心字段

高频 Tick 数据是量化风控与市场微观结构分析的最小粒度数据源。每一笔 Tick 记录市场在某一瞬间的快照,其精度可达毫秒甚至微秒级。理解 Tick 数据的定义、数据结构与常见字段,是构建坏账率 PSI 哨兵系统的第一道门槛。

1. Tick 数据定义

Tick 数据(逐笔快照数据)指交易所或做市商在连续竞价过程中,按时间顺序逐笔发布的行情快照。与 K 线(OHLC)不同,Tick 数据不进行聚合,它忠实记录每一笔成交或每一次盘口变动。

  • 逐笔成交 Tick:每发生一笔交易即生成一条记录,包含成交价格、成交量、成交方向。
  • 逐笔盘口 Tick:每当买卖挂单队列发生变动(新增、撤销、成交)时生成,包含当前最优买卖价与量。
  • 快照 Tick:以固定时间间隔(如 100ms、500ms)拍摄的完整盘口深度快照。
风控视角提示: 坏账率 PSI 哨兵依赖 Tick 级数据捕捉流动性突变与价格异动。若使用聚合后的分钟级数据,将丢失盘口崩塌前 200ms 的关键信号。

2. 数据结构与存储模型

高频 Tick 数据通常以“宽表 + 时间分区”的形式存储,每行代表一个时间点的完整快照。以下为典型的数据表结构:

字段名 类型 说明 示例
ts_event Timestamp(ms) 事件发生时间戳(毫秒级) 2025-03-21 09:30:00.123
symbol String 交易品种代码 BTC-USDT
price Float64 最新成交价格 67500.50
volume Float64 该笔成交量(基础货币单位) 0.023
side Char(1) 成交方向:B=主动买,S=主动卖 B
bid_px Float64 当前最优买价 67500.00
bid_sz Float64 当前最优买量 1.500
ask_px Float64 当前最优卖价 67501.00
ask_sz Float64 当前最优卖量 0.800
存储建议: 使用 Parquet 列式存储 + ZSTD 压缩,按 symbol 分区、ts_event 排序。单日 BTC-USDT Tick 数据约 2~5 亿行,压缩后存储量可控制在 8~15 GB。

3. 核心字段详解

以下四个字段是 PSI 哨兵计算的核心输入,必须保证精度与完整性:

3.1 时间戳(Timestamp)

  • 精度要求:毫秒级(ms)是底线,微秒级(μs)更优。
  • 时区处理:统一存储为 UTC 时间,展示时再转换为本地时区。
  • 对齐问题:不同数据源的时间戳可能存在 1~5ms 偏差,需在 ETL 阶段做时钟漂移校正。

3.2 价格(Price)

  • 类型:浮点数,保留交易所最小变动单位(tick size)的精度。
  • 异常值:零价格、负价格、超过前一笔 10% 的跳变需标记为可疑 Tick。
  • 复权处理:若涉及除权除息,需使用向后复权价格保持连续性。

3.3 成交量(Volume)

  • 单位:通常以基础货币(如 BTC、ETH)或合约张数为单位。
  • 聚合风险:部分交易所将多笔小单合并为一条 Tick,需检查 trade_id 连续性。
  • 零量过滤:成交量为 0 的 Tick 通常为盘口刷新事件,应单独标记。

3.4 买卖盘口(Order Book Snapshot)

  • 最优价差(Spread):ask_px - bid_px,衡量市场流动性。
  • 深度失衡(Depth Imbalance):(bid_sz - ask_sz) / (bid_sz + ask_sz),反映短期买卖压力。
  • 盘口斜率:结合第 2~5 档挂单量,计算价格-量能曲线的陡峭程度。
常见陷阱: 部分数据源将盘口字段填充为 0 表示无挂单,而非 NULL。直接使用 0 值计算价差会导致无穷大,必须在预处理阶段将 0 替换为 NaN 或进行插值。

4. Tick 数据流架构

下图展示高频 Tick 数据从交易所到 PSI 哨兵引擎的典型流转路径:

高频 Tick 数据流架构 高频 Tick 数据流架构 交易所 WebSocket / FIX 数据采集层 去重 / 排序 / 缓存 存储层 Parquet / ClickHouse PSI 计算引擎 滑动窗口 / 分桶 哨兵告警 钉钉 / 邮件 / 飞书 配置更新 / 参数调优 延迟要求 端到端 < 500ms

5. 常见字段的 PSI 映射关系

在坏账率 PSI 哨兵中,Tick 字段被映射为三类监控指标:

Tick 字段 PSI 监控指标 计算方式 预警阈值(示例)
price 价格分布 PSI 将价格按 0.1% 分桶,对比参考分布 PSI > 0.25
volume 成交量分布 PSI 按成交量对数分桶(0~10, 10~100, ...) PSI > 0.20
bid_sz / ask_sz 盘口深度失衡 PSI 计算深度失衡比率,按 0.1 步长分桶 PSI > 0.30
spread 价差分布 PSI 按价差绝对值分桶(0~0.01, 0.01~0.05, ...) PSI > 0.35
实战要点: 价格 PSI 对市场微观结构变化最敏感,建议作为哨兵的首层监控。盘口深度 PSI 在流动性枯竭前 1~3 秒即出现显著漂移,是坏账率预警的前置指标。

6. Tick 数据质量校验清单

在将 Tick 数据送入 PSI 计算引擎前,必须通过以下质量门禁:

  1. 时间戳单调性:后一条 Tick 的 ts_event 必须大于前一条,允许最大 1ms 回退(时钟抖动)。
  2. 价格合理性:价格在 [0.01 * 参考价, 10 * 参考价] 区间内,且不为 0。
  3. 盘口一致性:bid_px < ask_px,若违反则标记为盘口交叉异常。
  4. 成交量非负:volume >= 0,零量 Tick 单独标记但不丢弃。
  5. 字段完整性:核心字段(price, volume, bid_px, ask_px)不允许 NULL。
数据工程警告: 部分交易所的 Tick 数据存在“重复推送”现象(同一笔成交推送 2~3 次)。必须在采集层使用 (ts_event, trade_id, price, volume) 四元组做精确去重,否则 PSI 分布会被重复计数扭曲。

掌握 Tick 数据的定义、结构与字段含义后,下一环节将进入 Tick 数据预处理与特征工程,为 PSI 计算准备干净、对齐的输入分布。