3、市场数据基础:Tick级数据、Level2行情数据、数据频率与精度、数据存储与回放

做微结构套利,说白了就是跟市场抢时间。你比别人快一毫秒,可能就多赚一笔。但这一切的前提是什么?是数据。没有高质量的市场数据,再牛的策略也是空中楼阁。

我刚开始做量化那会儿,以为拿个日线就能搞套利。结果呢?回测曲线漂亮得不行,实盘一跑就亏成狗。后来才明白,微结构套利玩的是「毫秒级」的博弈,日线数据根本看不到这些细节。

今天我们就来聊聊市场数据的基础。嗯,这部分内容比较硬核,但非常重要。你想想看,连数据都搞不明白,怎么去挖掘套利机会?

3.1 Tick级数据:最原始的市场脉搏

Tick级数据,就是交易所每笔成交的原始记录。它记录了每一笔交易的细节,包括成交时间、价格、数量、买卖方向等。

我个人习惯把Tick数据比作「市场的DNA」。它包含了最微观的市场行为信息。比如,你可以从Tick数据中看到大单的拆分、主力的挂单撤单行为、甚至是程序化交易的痕迹。

核心字段:
  • 时间戳:精确到毫秒甚至微秒
  • 成交价格:该笔交易的实际成交价
  • 成交量:该笔交易的股数或手数
  • 成交金额:价格 × 数量
  • 买卖方向:主动买还是主动卖(B/S标识)

举个例子,A股市场的Tick数据大概长这样:

时间戳, 代码, 价格, 数量, 方向, 成交额
2024-01-15 09:30:00.123, 600519, 1685.00, 100, B, 168500
2024-01-15 09:30:00.124, 600519, 1685.01, 200, S, 337002
2024-01-15 09:30:00.125, 600519, 1685.00, 50, B, 84250

你看,一秒钟内就有三笔成交。这就是Tick数据的粒度。我在项目中遇到过,有些策略就是靠分析这种毫秒级的成交序列来捕捉套利机会的。

小技巧: 处理Tick数据时,一定要注意时间戳的精度。不同交易所、不同数据源的时间戳精度可能不同,有的到毫秒,有的到微秒。做跨市场套利时,这个差异可能会让你误判。

3.2 Level2行情数据:比Tick更丰富的信息

Level2行情,也叫深度行情。它比Tick数据多了什么?多了「十档买卖盘口」和「逐笔委托」信息。

说白了,Tick数据告诉你「已经发生了什么」,而Level2行情告诉你「正在发生什么」和「即将发生什么」。这对微结构套利来说,价值巨大。

数据维度 Tick数据 Level2行情
成交记录
十档买卖盘口
逐笔委托
委托队列
大单统计

我记得有一次做ETF套利,光看Tick数据根本看不出问题。后来上了Level2行情,才发现盘口上有大单在「钓鱼」,故意挂单引诱成交。嗯,这就是Level2的价值——让你看到水面下的冰山。

注意: Level2行情虽然信息丰富,但数据量也大得多。一个股票一天的Level2数据可能有几百MB。如果你同时监控几百只股票,数据存储和处理就是个大问题。

3.3 数据频率与精度:选对工具干对活

数据频率,就是你采样的间隔。常见的频率有:

  • Tick级:每笔成交都记录,频率最高
  • 秒级:每秒一个快照
  • 分钟级:每分钟一个K线
  • 日线级:每天一个数据点

做微结构套利,Tick级是标配。但这里有个坑——不是所有策略都需要最高频率的数据。

我曾经犯过一个错误:为了追求极致精度,把所有策略都跑在Tick数据上。结果呢?策略没赚到钱,服务器倒是先烧了。后来我学乖了,先搞清楚策略需要什么粒度的数据。

举个例子:

  • 跨期套利:通常需要秒级或Tick级数据,因为价差变化很快
  • 统计套利:分钟级可能就够了,因为均值回归需要时间
  • 做市策略:必须用Tick级,毫秒级的订单簿变化都要捕捉
我的建议: 先存全量Tick数据,再根据策略需求降采样。这样最灵活。存储成本虽然高一点,但总比数据不够用强。

3.4 数据存储与回放:让历史告诉你答案

数据存下来,不是为了占硬盘,而是为了回测和回放。回放,就是模拟历史行情,让策略在历史数据上跑一遍。

我个人习惯用以下几种存储方案:

  • CSV文件:简单直接,适合小规模数据
  • Parquet格式:列式存储,压缩率高,适合大数据量
  • 时序数据库:如InfluxDB、ClickHouse,查询效率高
  • HDF5:科学计算常用,支持多维数据

这里我画了一张图,帮你理清数据从采集到回放的整个流程:

市场数据流:从采集到回放 交易所行情 Tick / Level2 数据采集 API / 行情网关 数据存储 Parquet / 时序DB 数据回放 回测引擎 策略验证 套利机会挖掘 数据分析 特征工程 / 建模 数据流方向:从左到右,从上到下 关键点 • 数据精度越高,存储成本越大,但策略潜力也越大 • 回放系统必须能模拟真实行情延迟,否则回测结果不可靠

关于回放,我想多说两句。好的回放系统,不只是把数据按时间顺序喂给策略。它还要模拟真实的行情延迟、网络抖动、交易所撮合规则等。否则,回测结果跟实盘差距会很大。

避坑指南: 我曾经用Tick数据做回放,但忽略了行情延迟。结果回测时策略每次都能抢到最优价格,实盘却总是慢半拍。后来我在回放系统中加入了随机延迟,结果才接近实盘。嗯,这个坑我替你们踩过了。

3.5 数据质量:被忽视的关键

数据质量,是另一个容易被忽视的问题。你以为交易所给的数据就是完美的?太天真了。

常见的数据问题:

  • 缺失数据:网络波动导致某些Tick丢失
  • 重复数据:同一个Tick被推送了两次
  • 乱序数据:后发生的成交先到达
  • 异常值:价格或数量明显不合理

我建议在数据入库前做一次清洗。比如:

# 简单的数据清洗示例
def clean_tick_data(df):
    # 去重
    df = df.drop_duplicates(subset=['timestamp', 'price', 'volume'])
    # 排序
    df = df.sort_values('timestamp')
    # 过滤异常价格(比如超过涨跌停板)
    df = df[(df['price'] >= lower_limit) & (df['price'] <= upper_limit)]
    return df

别小看这一步。数据质量差,策略再牛也白搭。我见过有人用脏数据跑回测,跑出年化500%的「神策略」,实盘直接亏光。嗯,数据清洗是基本功,偷懒不得。

总结一下:
  • Tick数据是微结构套利的基石,精度越高越好
  • Level2行情提供了盘口深度信息,能看到更多市场细节
  • 数据频率要匹配策略需求,不是越高越好
  • 存储方案要考虑成本和查询效率的平衡
  • 回放系统要模拟真实行情环境
  • 数据清洗是必须的,别偷懒

好了,市场数据基础就聊到这儿。数据是量化交易的「原材料」,原材料质量决定了最终产品的质量。下一节我们会聊到如何用这些数据构建套利策略的信号。嗯,到时候见。


专注资料整理