一、高频数据概述
1.1 什么是高频行情数据
高频行情数据,说白了就是市场在极短时间内产生的交易数据。我经常跟团队新人说,你打开股票软件看到的那个跳动价格,背后就是高频数据在流动。
具体来说,高频行情数据包括:
- 逐笔成交数据——每一笔真实的买卖记录
- 逐笔委托数据——挂在订单簿上的买单卖单
- 快照数据——每隔几毫秒拍一张市场状态照片
- Level 2 数据——比普通行情更深的十档盘口
举个例子,A股市场的逐笔成交数据,每秒能产生几千甚至上万条记录。每条记录包含价格、数量、方向、时间戳,精确到微秒级别。
核心定义:高频行情数据是指频率在毫秒级甚至微秒级,包含完整市场微观结构的交易数据集合。
1.2 高频数据的特点
我做了这么多年高频数据处理,总结下来就三个关键词:高频率、大容量、低延迟。咱们一个一个说。
高频率
普通行情可能每秒更新一次,高频行情呢?每秒更新上千次。你想想看,光是沪深两市一天的逐笔数据,就能达到几亿条。
我记得2015年那会儿,市场波动大的时候,我们系统的数据吞吐量直接飙到每秒50万笔。嗯,那会儿真是考验架构的时候。
大容量
高频数据有多占空间?我算过一笔账:
| 数据类型 | 单日数据量 | 月度数据量 |
|---|---|---|
| 逐笔成交 | 约 50-80 GB | 约 1.5-2.4 TB |
| Level 2 快照 | 约 20-30 GB | 约 600-900 GB |
| 逐笔委托 | 约 30-50 GB | 约 900-1500 GB |
这只是原始数据。加上索引、备份、中间处理结果,存储成本相当可观。
低延迟
高频交易对延迟极其敏感。我曾经参与过一个项目,客户要求从行情到达系统到策略发出信号,延迟不能超过10微秒。
10微秒是什么概念?光在光纤里走1公里就要3.3微秒。所以机房位置、网络拓扑、硬件选型,每一个细节都至关重要。
避坑提醒:我曾经因为忽略了操作系统时钟精度,导致时间戳误差达到毫秒级,回测结果完全失真。后来改用DPDK和硬件时间戳才解决。
1.3 高频数据在量化交易中的应用
高频数据到底能用来干什么?我总结了几类典型场景:
订单簿重建
通过逐笔委托数据,我们可以精确重建任意时刻的订单簿状态。这比快照数据更准确,因为快照之间有间隔,中间可能发生了很多变化。
# 伪代码:订单簿重建逻辑
class OrderBook:
def __init__(self):
self.bids = {} # 买单
self.asks = {} # 卖单
def apply_tick(self, tick):
if tick.type == 'add':
# 新增订单
self.orders[tick.price] = tick.quantity
elif tick.type == 'cancel':
# 撤销订单
del self.orders[tick.price]
微观结构分析
高频数据能揭示市场的微观行为。比如:
- 买卖价差分析——衡量市场流动性
- 订单流不平衡——预测短期价格方向
- 大单拆单识别——发现机构交易痕迹
我个人习惯用逐笔数据计算订单流毒性(Order Flow Toxicity),这个指标在震荡行情中特别有效。
策略回测与执行优化
用高频数据做回测,能更真实地模拟交易环境。普通日线回测会忽略滑点和市场冲击,高频回测则能精确到每一笔成交。
经验之谈:我建议做高频策略回测时,一定要考虑数据质量。脏数据会导致回测结果虚高,我曾经吃过这个亏,后来花了两周时间清洗数据。
1.4 知识体系总览
下面这张图是我梳理的高频行情数据知识体系,涵盖了从数据采集到策略应用的完整链路:
从这张图可以看出,高频行情数据的处理是一个完整的链路。每个环节都有坑,也都有优化空间。后面的章节我会逐一深入讲解。
本章小结:高频行情数据是量化交易的基石。理解它的特点——高频率、大容量、低延迟,是做好后续所有工作的前提。我建议初学者先从逐笔成交数据入手,逐步扩展到订单簿和快照数据。
公众号:蓝海数据掘金营,微信deep3321