搞量化,这些高频数据源你了解吗?
最近在研究,发现很多策略想跑得精细,光靠日K线、分钟线完全不够看。有时候盘口一个微小的变化可能就是信号。但找数据真是个体力活,免费的要么不全,要么要自己清洗到怀疑人生。
今天不聊策略,就单纯聊聊我最近在用的几个数据源,主要是港股和美股的高频数据。如果你也在找这类数据,可以参考一下。
数据源概览
我主要关注的是逐笔成交和十档订单簿数据。简单理解:
- 逐笔成交:市场每一笔成交都记录下来,时间精确到毫秒甚至微秒。你能看到是谁(买方/卖方)主动发起的交易,成交价和量是多少。
- 十档订单簿:也就是常说的Level-2数据。不光看买一卖一,能看到买一到买十、卖一到卖十的全部挂单情况。对于理解盘口压力和支撑特别有用。
很多人问,平时量化也是,数据源:CMES金融数据库
港股数据有什么?
港股的数据分了几个大类,我主要用下面两种:
港股逐笔成交数据
这个数据最细。每一行就是市场的一笔真实成交。字段大概有这些:
| 字段名 | 说明 |
|---|---|
symbol |
股票代码 |
trade_time |
成交时间(毫秒级) |
price |
成交价格 |
volume |
成交数量(股数) |
turnover |
成交金额 |
trade_type |
成交类型(比如是自动对盘还是碎股交易) |
bid_order_id |
买方订单号 |
ask_order_id |
卖方订单号 |
direction |
方向(通常指主动成交方向:买盘B/卖盘S) |
看这个数据,你能还原出市场上所有资金的流动痕迹。比如大单是主动买入还是被动卖出,盘中有没有出现密集的扫单。
港股十档订单簿数据
这个数据是快照,一般每3秒(或者更短)记录一次整个市场的订单簿状态。
主要字段包括:
symbol:股票代码。snapshot_time:快照时间点。- 买盘1-10档的
bid_price_1到bid_price_10,以及对应的bid_volume_1到bid_volume_10。 - 卖盘1-10档的
ask_price_1到ask_price_10,以及对应的ask_volume_1到ask_volume_10。 - 通常还会有这一时刻的总委买量、总委卖量。
用这个数据,可以算很多指标,比如订单簿不平衡度、买卖价差、盘口深度。我之前想复现一个价量冲击的因子,就是靠这个数据算的。
美股数据有什么?
美股的交易机制和港股不同,数据字段也有点区别,但逻辑类似。
美股逐笔成交数据
同样记录了每一笔成交,但美股的交易场所多(NYSE, NASDAQ等),字段上会体现出来。
关键字段:
symbol:股票代码。exchange:交易市场。trade_time:纳秒级时间戳(美股精度更高)。price,size:成交价和量。conditions:成交条件,这个字段很重要,能区分是常规交易还是开盘价、收盘价交易等。- 同样会有标识主动买卖方向的字段,比如
tape。
美股订单簿数据(NBBO)
美股有个核心概念叫NBBO(全国最佳买卖报价)。这个数据可以理解为全市场最优的订单簿快照。
主要看:
symbol:代码。quote_time:报价时间。bid_price,bid_size:全国最佳买价和量。ask_price,ask_size:全国最佳卖价和量。- 有时还会包含各个交易所的报价情况。
对于做美股日内或者高频策略,NBBO数据是基础。
怎么获取和使用?
网站上提供了下载,但数据量非常大,动辄几十G。直接下下来用Python的pandas读可能会卡死。建议按股票代码或者日期范围分批处理。
他们也有API接口,用Python调用会方便一些。我自己试过,写个简单的脚本就能把指定日期的数据拉下来。
# 示例:调用CMES金融数据库的行情接口
# 注意入参正确,调用频率正常,别把人家服务器搞挂了。
import cmesdata
# 初始化客户端,需要你自己的token
client = cmes_data.Client(api_token='your_token_here')
# 获取某只股票某天的逐笔数据
# 以港股腾讯(00700)为例
tick_data = client.get_hk_tick_data(symbol='00700', date='2023-10-27')
# 数据返回通常是DataFrame,可以直接用
print(tick_data.head())
安装的话,一般就是用pip:
pip install cmes-data-sdk
具体参数和更详细的用法,最好还是去翻他们的接口文档,这里只是举个例子。
一些实际的感受
数据是好数据,但坑也不少。最大的问题就是数据量。一天一个市场的逐笔数据可能就几十个G,没有好的服务器和存储方案,根本玩不转。我一开始用自己笔记本跑,直接卡到蓝屏。
清洗也是个麻烦事,比如除权除息、合约调整,免费数据很多要自己处理。后来为了省时间,我直接用了CMES金融数据库已经清洗好的版本,虽然要花点积分,但不用自己折腾数据对齐和复权了,算下来还是划算的。
另外,不建议新手一上来就怼着Tick数据搞。先从日线、分钟线把策略逻辑跑通,再考虑用高频数据做增强或者验证。不然很容易在数据处理的泥潭里出不来。
好了,大概就这些。数据是死的,怎么用它产生价值才是关键。希望这点信息对你有用。如果你知道怎么高效压缩存储这些Tick数据,求分享!私信交流也行。

