1. 高频数据基础:Tick数据与Bar数据的区别、Level2行情介绍、常见商品期货交易所数据格式
做量化交易这些年,我接触过不少新手。大家一上来就问我:“老师,高频数据到底长什么样?”
说实话,这个问题问得特别好。因为如果你连数据长啥样都不清楚,后面的特征工程、策略回测,全都是空中楼阁。
今天我们就来聊聊高频数据的两个核心概念:Tick数据和Bar数据。顺便把Level2行情和交易所数据格式也讲清楚。
1.1 Tick数据:最原始的交易记录
Tick数据,说白了就是交易所每产生一笔交易,就记录一条数据。它是市场最微观的切片。
我刚开始做高频策略时,总觉得Tick数据太“碎”了。后来才发现,很多赚钱的策略,恰恰就藏在这些碎片里。
Tick数据的核心字段:
- 交易时间:精确到毫秒甚至微秒
- 最新成交价:当前这笔交易的成交价格
- 成交量:这笔交易的手数/张数
- 成交额:成交价 × 成交量
- 买卖方向:主动买还是主动卖(重要!)
举个例子,螺纹钢期货在某毫秒内成交了一笔,价格3800元,成交量10手。这就是一条Tick数据。
嗯,这里要注意:不同交易所对Tick数据的定义略有差异。比如上期所会额外记录“申买价一”和“申卖价一”,而大商所可能只记录成交信息。
我的经验:处理Tick数据时,一定要关注时间戳的精度。有些数据源给的是秒级,有些是毫秒级。我曾经因为时间戳精度不够,导致回测结果和实盘差了十万八千里。
1.2 Bar数据:Tick数据的“压缩包”
Bar数据,就是按时间窗口把Tick数据“打包”起来。最常见的是一分钟Bar、五分钟Bar。
你想想看,如果每天几百万条Tick数据全拿来分析,电脑都得崩溃。所以Bar数据就是高频数据的“降维打击”。
一个标准的Bar数据包含五个要素:
- 开盘价(Open):这个时间窗口的第一笔成交价
- 最高价(High):窗口内的最高成交价
- 最低价(Low):窗口内的最低成交价
- 收盘价(Close):窗口内的最后一笔成交价
- 成交量(Volume):窗口内的总成交量
我习惯把Bar数据叫做“OHLCV”,业内都这么叫。做技术分析的人,天天跟这五个字母打交道。
避坑指南:我曾经在回测时直接用交易所的分钟Bar数据,结果发现策略表现特别好。后来一查,原来交易所的Bar数据是“复权”过的,包含了夜盘和日盘的拼接。嗯,从那以后,我都是自己从Tick数据合成Bar,虽然慢一点,但心里踏实。
1.3 Tick vs Bar:到底用哪个?
这个问题我经常被问到。我的回答是:看你的策略类型。
| 维度 | Tick数据 | Bar数据 |
|---|---|---|
| 数据量 | 巨大(每天几百万条) | 较小(每天几千条) |
| 信息粒度 | 每笔交易都记录 | 只保留统计摘要 |
| 适用策略 | 高频做市、订单簿策略 | 趋势跟踪、均值回归 |
| 存储成本 | 高 | 低 |
| 回测速度 | 慢 | 快 |
我个人建议:如果你做的是秒级以内的策略,必须用Tick数据。如果是分钟级以上的策略,用Bar数据就够了。
1.4 Level2行情:比Tick更“深”一层
Level2行情,很多人叫它“深度行情”。它比普通Tick数据多了一个东西——订单簿。
普通Tick只告诉你成交了什么,Level2还告诉你“挂单”的情况。
Level2的核心数据包括:
- 十档行情:买一到买十、卖一到卖十的挂单价格和数量
- 逐笔成交:每笔成交的详细信息(比Tick更细)
- 委托队列:每个价位的挂单明细(有些交易所提供)
我记得第一次拿到Level2数据时,整个人都懵了。数据量比Tick大了好几倍,而且结构复杂。但后来发现,很多高频策略的核心信号,比如“大单吃货”、“托盘撤单”,都是从Level2数据里挖出来的。
Level2行情 vs 普通Tick:
- 普通Tick:只告诉你“发生了什么”
- Level2:还告诉你“正在发生什么”和“可能发生什么”
1.5 常见商品期货交易所数据格式
国内三大商品期货交易所,数据格式各有各的脾气。我一个个说。
1.5.1 上海期货交易所(SHFE)
上期所的数据格式比较“规矩”。Tick数据通常包含:
- 合约代码、时间、最新价、成交量、持仓量
- 申买价一、申卖价一、申买量一、申卖量一
- 结算价、涨跌停板等
我习惯把上期所的数据叫做“五档行情”,因为它默认只提供买卖各五档的挂单信息。
1.5.2 大连商品交易所(DCE)
大商所的数据格式稍微“灵活”一些。它的Tick数据会额外包含:
- 开高低收(有些数据源会直接提供)
- 成交量、持仓量变化
- 买卖方向标识(主动买/主动卖)
嗯,这里有个坑:大商所的Tick数据中,成交量的单位是“手”,但有些数据源会给你“张”。一定要确认清楚。
1.5.3 郑州商品交易所(ZCE)
郑商所的数据格式,我个人觉得是最“复杂”的。它的Tick数据包含:
- 标准字段(时间、价格、成交量)
- 额外的“行情快照”信息
- 部分合约会有“期权行情”字段
我曾经在郑商所的数据上栽过跟头。它的时间戳有时会“跳秒”,导致数据对齐出问题。后来我加了一个校验逻辑,才解决这个问题。
1.6 数据格式对比一览
| 交易所 | Tick字段数 | Level2支持 | 时间精度 | 特殊字段 |
|---|---|---|---|---|
| 上期所 | 约15-20个 | 五档 | 毫秒 | 结算价、涨跌停 |
| 大商所 | 约12-18个 | 五档 | 毫秒 | 买卖方向标识 |
| 郑商所 | 约18-25个 | 十档 | 毫秒 | 期权行情、快照 |
1.7 知识体系结构图
下面这张图,是我梳理的高频数据基础的知识体系。你可以把它当作本章的“地图”。
1.8 实战建议:如何选择数据源?
最后,我给大家几个实战建议:
- 做研究用Bar数据:速度快,内存占用小,适合策略验证
- 做高频策略用Tick数据:信息完整,但要做好数据清洗
- 做订单簿策略用Level2:数据量大,建议用C++或Rust处理
- 注意数据对齐:不同交易所的时间戳格式不同,一定要统一
我的小技巧:刚开始接触高频数据时,先拿一个月的Tick数据练手。不要贪多,把数据清洗、存储、回测的流程跑通,再慢慢扩展。我曾经一口气下载了三年的数据,结果光清洗就花了两周,得不偿失。
好了,高频数据的基础就聊到这里。记住:数据是量化交易的“原材料”,原材料不好,再好的策略也白搭。