1. Tick数据概述
大家好,我是老张。做量化这些年,我接触最多的就是Tick数据。今天咱们就来聊聊,到底什么是Tick数据,它跟咱们平时用的分钟数据有啥区别,以及它到底能用在哪些地方。
1.1 什么是Tick数据
说白了,Tick数据就是市场最原始的交易记录。每一笔成交,都会生成一条Tick数据。你想想看,当你在交易软件上点下买入按钮,交易所撮合成功的那一刻,一条Tick数据就诞生了。
我习惯把Tick数据比作市场的「心电图」。它记录的是每一次心跳——每一次买卖成交的瞬间。举个例子:
# 一条典型的Tick数据长这样
timestamp: 2024-01-15 09:30:00.123
price: 15.68
volume: 200
side: 'B' # B表示买方主动成交,S表示卖方主动成交
嗯,这里要注意,不同交易所的Tick数据格式略有不同。我在项目中遇到过,上交所和深交所的Tick数据字段就不太一样。上交所会多一个「成交序号」字段,深交所则没有。
核心要点:Tick数据是逐笔成交记录,不是快照数据。它记录的是「已经发生」的交易,而不是「当前挂单」的状态。
1.2 Tick数据与分钟数据的区别
很多新手会问:我直接用分钟数据做分析不行吗?为什么要折腾Tick数据?
我打个比方你就明白了。分钟数据就像是一张照片,每隔一分钟拍一张。而Tick数据呢,它是一段视频,每一帧都不落下。
| 对比维度 | Tick数据 | 分钟数据 |
|---|---|---|
| 时间粒度 | 毫秒级,每笔成交 | 固定1分钟间隔 |
| 数据量 | 一天约10-50万条 | 一天约240条 |
| 信息含量 | 包含买卖方向、逐笔细节 | 只有OHLCV四价一量 |
| 噪声水平 | 高,包含大量市场微观结构噪声 | 低,经过聚合平滑 |
| 存储成本 | 高,一只股票一天约50MB | 低,一只股票一年才几MB |
你看这个表格就清楚了。分钟数据虽然省事,但它丢失了大量信息。我记得有一次做高频因子回测,用分钟数据跑出来的结果很漂亮,换成Tick数据一测,直接亏成狗。为什么?因为分钟数据把很多关键的微观结构信息给抹平了。
我的建议:如果你做的是日内高频策略,别偷懒,老老实实用Tick数据。如果是做中长线,分钟数据就够用了。
1.3 Tick数据的应用场景
Tick数据到底能干啥?我总结了几个最常用的场景:
1.3.1 高频因子计算
很多经典的高频因子,比如VPIN(成交量加权指令不平衡)、买卖压力比、订单流不平衡等,都必须用Tick数据才能算出来。用分钟数据算这些因子,说白了就是「用菜刀切西瓜」——工具不对。
# 计算买卖压力比的Tick级实现
def calc_tick_pressure(tick_data):
buy_volume = tick_data[tick_data['side'] == 'B']['volume'].sum()
sell_volume = tick_data[tick_data['side'] == 'S']['volume'].sum()
pressure = (buy_volume - sell_volume) / (buy_volume + sell_volume)
return pressure
1.3.2 市场微观结构分析
你想研究市场的流动性、买卖价差、订单簿动态?这些都得靠Tick数据。我曾经帮一家私募做过一个项目,分析某只股票的「冰山订单」行为。用分钟数据根本看不出来,换成Tick数据后,那些大单拆成小单的痕迹一目了然。
1.3.3 回测精度提升
做回测的时候,用分钟数据会有一个问题:你不知道这一分钟内的价格是怎么走的。是开盘就冲到最高价,还是收盘前才拉上去?Tick数据能让你精确到每一笔成交,回测结果更接近真实交易。
避坑指南:我曾经吃过一次亏——直接用Tick数据做回测,没做数据清洗。结果回测曲线漂亮得不像话,实盘直接崩了。后来发现是Tick数据里有大量「错误成交」,比如价格超出涨跌停板、成交量异常大等。所以,用Tick数据前,清洗是必须的。
1.3.4 实时风控
做程序化交易的朋友应该深有体会,Tick数据是实时风控的基础。比如监控大单异动、检测闪崩、计算实时波动率,这些都得靠Tick数据才能及时响应。
1.4 Tick数据的知识体系
为了让你更直观地理解Tick数据的全貌,我画了一张图:
这张图把Tick数据的核心内容串起来了。左边是它的定义和特征,中间是跟分钟数据的对比,右边是实际应用场景。你仔细看看,会发现每个分支之间其实是有联系的——比如高频因子计算就依赖于Tick数据的逐笔特征。
好了,这一章的内容就到这里。Tick数据是量化交易的基础,理解它、用好它,后面的路会顺很多。下一章咱们聊聊Tick数据的获取和存储,那又是另一番天地了。