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数据是金融数据的原子单位。它精度高、信息全、数据量大。理解Tick数据的特征,是设计存储引擎的第一步。后面我们会深入讨论如何高效存储和查询这些数据。
公众号:蓝海资料掘金营,微信deep3321