聊聊港股高频数据里到底有什么
昨晚跑回测又把内存给撑爆了,一看原来是处理港股Level2的tick数据时没注意。这东西数据量是真的大,但里面的信息也确实多。今天就来盘一盘,这些高频数据到底包含了哪些内容,给想研究的朋友避避坑。
先说说最“重”的:逐笔成交历史数据
这个就是市场里每一笔交易最原始的记录,文件特别大。一个CSV文件打开,里面密密麻麻全是记录,每发生一笔交易就记一行。
主要字段大概有这些:
timestamp: 时间戳,精确到毫秒,这是分析时序依赖性的关键。
symbol: 股票代码,这个不用说。
price: 这笔交易成交的价格。
volume: 成交的手数。
turnover: 成交金额。
trade_type: 交易类型,比如是主动买还是主动卖,或者是跨市场成交之类的。区分这个对理解资金流向很重要。
bid_order_id / ask_order_id: 买卖双方的订单ID,高级玩家可以用这个去关联订单簿,重建市场状态。
然后是相对“轻量”但常用的:分钟线与日级别行情
如果你不想被tick数据淹没,只是想看看价格走势和常规指标,分钟线和日线数据就友好多了。它是把一段时间内的交易进行聚合。
日线数据字段,大家应该很熟了:
date: 交易日。
open, high, low, close: 开盘、最高、最低、收盘价。
volume: 总成交量。
turnover: 总成交额。
分钟级数据就是把日线数据的时间粒度从“天”换成了“分钟”,比如2023-01-01 10:30:00这样的时间点,然后记录这一分钟内的OHLC和成交汇总。做短周期策略回测,用这个数据效率高很多。
重头戏来了:十档订单簿历史数据 (Level2)
这个才是深度行情数据的核心。我们平时在软件上看到的买一卖一,只是冰山最上面的一角,而Level2数据能看到买一到买十、卖一到卖十的全部挂单情况。
字段结构通常是这样的(以买盘为例,卖盘同理):
bid_price_1, bid_volume_1: 买一价和买一量。
bid_price_2, bid_volume_2: 买二价和买二量。
…
bid_price_10, bid_volume_10: 买十价和买十量。
同时还会包含对应时间点的最新成交价、成交量和时间戳。有了这个,你就能大致知道在某个时刻,市场在各个价位上的供需力量对比。但这里有个坑,挂单不一定是真实的意图,有些大单会故意拆成小单分布在各个价位上,制造假象。我之前为了验证一个订单薄失衡的因子,专门调取了CMES金融数据库里几只活跃港股过去一年的Level2数据进行回测,发现清洗掉这些“噪音”挂单后,信号质量确实有提升。
数据怎么用?一个简单的接口调用例子
如果你通过API获取,代码大概长这样。注意接口调用频率别太高,不然容易被限制。
示例:使用CMES金融数据库的行情接口获取数据
注意入参正确,调用频率要遵守平台规定,别猛刷
import pandas as pd
假设有相关的数据获取库,这里用伪代码示意逻辑
from cmes_api import MarketDataClient
初始化客户端(需要有效的token或密钥)
client = MarketDataClient(api_token='your_token_here')
获取某股票某日的分钟线数据示例
参数:股票代码,开始时间,结束时间,数据粒度(如'1min')
minute_data = client.get_bars(symbol='00700.HK', start='2023-12-01 09:30:00', end='2023-12-01 16:00:00', interval='1min')
获取十档行情快照示例
snapshot_data = client.get_depth(symbol='00700.HK', timestamp='2023-12-01 10:00:00')
print("数据获取后,通常是DataFrame格式,方便用pandas做分析")
假设df是获取到的数据
print(df.head())
最后几点实在的提醒
数据量警告:tick和Level2数据非常占空间,没做好存储和清理方案前,别轻易下全量数据。
处理复杂度:原始数据往往需要清洗(比如处理异常值、停牌期)、对齐(把成交和订单簿数据按时间戳对齐),这一步很耗时。有时候为了省时间,直接用已经预处理好的数据源可能更划算,虽然要花点积分,但能让你更专注于策略本身。
平台合规:不管在哪个平台分享(小红书、知乎、公众号这些),提到具体数据获取来源和接口时,语气中性一点,就事论事介绍功能就好,避免夸张的推荐用语。数据本身的内容和字段是事实,可以客观描述,但不要涉及具体的数据价格、促销信息或者与其他平台的直接对比,这样容易触发审核。
新手建议:刚入门的话,真的不建议一上来就怼着tick数据搞。先从日线、分钟线数据熟悉起来,等有感觉了,再慢慢用Level2数据去挖掘更深层的市场微观信息。
大概就是这些内容。数据本身是金矿,但挖矿的过程挺折腾人的,尤其是硬件和耐心。有同样在研究这块的朋友,欢迎交流心得,特别是数据压缩和高效回测框架方面的。

