1. Tick数据定义与特征

各位同学,今天我们来聊聊Tick数据。这是整个存储引擎的基石,搞不懂Tick,后面什么都白搭。

什么是Tick数据?

Tick数据,说白了就是交易所发出来的最原始的快照。每一笔成交、每一次报价变动,都会产生一条Tick记录。

我习惯这么定义它:Tick数据是金融市场中最小粒度的交易记录单元。它记录了某个交易品种在某一瞬间发生的所有状态变化。

举个例子,你在股票软件上看到的每一笔成交,背后就是一条Tick。比如:

时间戳:2024-01-15 09:30:00.123456789
品种:600519.SH
成交价:1688.50
成交量:100
成交方向:买盘主动

嗯,这就是一条典型的Tick数据。注意那个时间戳,精确到了纳秒级。为什么这么精确?后面我会讲。

Tick数据与Bar数据的区别

很多新手容易把Tick和Bar搞混。我刚开始做量化的时候也犯过这个错。

简单来说:

  • Tick数据:逐笔记录,每一笔交易都有一条记录
  • Bar数据:聚合统计,把一段时间内的Tick汇总成一个K线

来看个对比表格:

维度 Tick数据 Bar数据
数据粒度 逐笔成交 时间窗口聚合
时间精度 纳秒/微秒级 秒/分钟级
数据量 极大(每天数亿条) 较小(每天数万条)
信息含量 完整市场微观结构 丢失了中间过程
存储成本
回测精度 高(可模拟真实撮合) 低(只能近似)

你想想看,Bar数据就像电影的预告片,只给你看几个关键镜头。Tick数据则是完整版,每一帧都不落下。

核心区别:Bar数据是Tick数据的统计摘要。如果你只做日频交易,Bar数据就够了。但如果你做高频交易、做市商策略,没有Tick数据,你就是在盲人摸象。

Tick数据的核心特征

搞清楚了Tick是什么,我们来看看它有哪些关键特征。这些特征直接决定了存储引擎该怎么设计。

1. 高精度时间戳

这是Tick数据最显著的特征。交易所的时间戳精度越来越高,从毫秒到微秒,现在很多已经是纳秒级了。

为什么需要这么高的精度?

因为在高频交易中,谁先谁后决定了谁能成交。两个订单可能只差1微秒,结果就完全不同。我在项目中遇到过,就因为时间戳精度不够,导致回测结果和实盘差了十万八千里。

存储上要注意:纳秒级时间戳如果用字符串存,那存储开销会很大。我建议用整数存储,比如Unix纳秒时间戳,一个64位整数搞定。

2. 逐笔成交

每一笔成交都是独立的Tick记录。这意味着:

  • 同一秒内可能有成千上万笔成交
  • 每笔成交都有独立的买卖方向、价格、数量
  • 大单拆单后,会变成多条Tick记录

我曾经帮一个客户排查问题,发现他的策略在Bar数据上表现很好,但实盘就亏钱。后来一查,原来是Bar数据把大单拆单的信息给抹平了,导致策略对市场冲击的估计完全错误。

避坑指南:如果你用Tick数据做回测,一定要考虑交易成本。因为Tick数据能真实反映市场冲击,你会发现滑点比你想象的大得多。

3. 买卖盘口

除了成交数据,Tick数据还包含买卖盘口的快照。也就是我们常说的Level 2数据。

盘口数据包括:

  • 买一到买十的价格和数量
  • 卖一到卖十的价格和数量
  • 总买量、总卖量
  • 逐笔委托(有些交易所提供)

这些数据有什么用?

说白了,盘口数据能告诉你市场的真实流动性。比如你想买100万股,但买一只有1万股,那你的大单就会把价格推高。盘口数据能帮你提前判断。

存储上要注意:盘口数据的数据量比成交数据还要大。因为每次盘口变化都要记录,而盘口变化比成交更频繁。

注意:不同交易所的盘口数据格式差异很大。A股的Level 2和港股的Level 2完全不是一回事。设计存储引擎时,一定要考虑多市场兼容性。

知识体系总览

下面这张图是我画的Tick数据知识体系,帮你理清思路:

Tick数据知识体系 Tick数据 高精度时间戳 逐笔成交 买卖盘口 纳秒级精度 · 整数存储 独立记录 · 买卖方向 · 拆单 Level 2 · 流动性 · 多市场 vs Bar数据:粒度更细 · 信息更全 · 存储更大

这张图把Tick数据的三个核心特征串起来了。你记住:时间戳、成交、盘口,这三者缺一不可。

总结一下:Tick数据是金融数据的原子单位。它精度高、信息全、数据量大。理解Tick数据的特征,是设计存储引擎的第一步。后面我们会深入讨论如何高效存储和查询这些数据。


公众号:蓝海资料掘金营,微信deep3321