量化数据12:国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载

国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载

之前给一个做CTP策略的朋友找铁矿石的历史tick,对方开口就是某德十几万一年——倒也不是说人家贵,是散户真的扛不住。后来乱翻各种数据源,发现有个地方能把全量历史数据直接下到本地,覆盖一档Tick、逐笔成交、五档盘口快照,连分钟线都一块儿给了。其实就是个做低延迟行情分发的团队,把上期所、中金所这些原始数据流存了下来,打包成离线文件,你付个服务器维护费就能拿走。

有哪些能用的数据?

能拿到的东西分这么几类:

  • 一档Tick:就是最基础的每笔行情快照,包含最新价、成交量、持仓量这些。虽说不像L2那样有摆盘深度,但做回测、画图基本够了。关键是它占地方小,一个品种几年的数据也就几个G。
  • 逐笔成交:这才是真正细活儿。期货逐笔数据里能分清“多开”、“空开”、“多平”、“空平”,还能看到每一笔成交的挂单方向。之前我用手头的Python库解析大商所的raw tick,发现它居然能还原出单子是从买一档成交还是卖一档成交,这点对分析主力意图很有用。
  • 五档Tick盘口快照:就是L2行情里常见的五档买卖挂单量,上期所、能源中心、中金所的品种都有。只要你是做高频,肯定绕不开这个。不过要注意郑商所的五档是合并的,精度没另外几家高,这个坑很多人踩过。
  • 分钟线:1分钟、5分钟、15分钟、30分钟、60分钟,日线也顺手给了。虽然是衍生数据,但用起来方便,不用自己再合成。

字段长什么样?

我不爱贴那种官方文档,直接拿我实际下载到的文件说事儿。

逐笔成交每个条目大概是这些字段(按顺序,CSV打开能看到):

字段什么意思我留意到的点
Time精确到毫秒的时间戳有夜盘的时候,日期跨天的逻辑得自己处理
Price成交价和盘口分笔对得上
Volume手数单笔最高见过几百手,吃单很凶
Turnover成交金额这个字段有时候是0,要看交易所
OpenInterest持仓量变化配合方向字段能算出增减仓
Direction开平仓标志0-4分别代表不同方向,真能区分多开空开

五档盘口快照每行的字段更多,我挑重点说:

字段说明个人备注
UpdateTime快照生成时间有时会跳秒,500ms一次的快照也正常
LastPrice最新价
BidPrice1-5买一至买五报价和Volume一一对应
BidVolume1-5挂单量挂单增减很明显能看出托单还是压单
AskPrice1-5卖一至卖五报价
AskVolume1-5挂单量注意郑商所只有买一卖一的两档深度,别被五档字段骗了
TotalVolume总成交量
TotalOpenInterest总持仓可以用这个和Tick一起验证

一档Tick的字段就简单了:时间、最新价、成交量、持仓量、成交额。适合跑一个初筛,不用上来就琢磨L2。

怎么把数据搞到手

他们给了一个Python包,文档在这儿(其实我也就是从这摸过去的) 装起来不复杂,直接pip搞定:

pip install cmesdata

调用的话,比如我要拿RB2001合约2020年某一天的逐笔成交和五档盘口,代码差不多是这感觉:

from cmesdata import Client

# CMES金融数据库的行情接口,入参需要产品代号、合约代码、日期,调用频率注意不要过快,免费账户有次数限制
client = Client(api_key='your_key_here')  # 申请后会邮箱发给你
data = client.get_tick(symbol='rb', contract='2001', date='2020-03-10', level='L2')
# 返回来是个DataFrame,可以直接to_csv存到本地
data.to_csv('rb2001_20200310.csv', index=False)

接口设计得挺直观,想拿分钟线就换个函数,传freq='1min'之类的,其他参数差不多。它支持批量下载,把日期列表一塞就能把整个主力合约周期跑完。我机器上挂了两个晚上,把黑色系几个品种最近三年的L2全拉下来了,70多G,比我想的小。

下载时碰到过的小毛病

第一次用的时候我没仔细看CMES金融数据库文档,直接并行开了几十个线程去拉,结果被ban了IP。问了客服才知道免费账户有调用频率上限,单线程一个个来反而更快。另外上期所的逐笔数据在2019年之前字段和现在略有差异,Direction那时候没区分得那么细,做回测的时候得把那段切片特殊处理。

再有就是合约换月,得自己写轮换逻辑。我一般用持仓量最大的那天作为切换节点,和CTP换月逻辑基本对齐,回测误差能接受。

数据覆盖面

上市以来的全量历史行情几乎都有,上期所、大商所、郑商所、中金所、能源中心的品种,股指期货也有。我找过2016年螺纹钢刚火那会儿的tick,没想到照样能下。不过中金所的五档盘口数据比较晚,大约2019年下半年才开始有,更早的只能拿一档Tick和逐笔。

后面可以玩的东西

有了这些底子数据,其实可以做不少事情。比如我最近在尝试把逐笔成交和盘口快照对齐,还原订单流,然后映射出主动性买卖比例,用这个去过滤虚假突破。不过那就是另外一篇笔记的事了,这篇只想说:想自己做期货tick分析的,不用一上来就花大价钱,不妨先试试离线包。

(数据仅供研究学习,实盘使用请自行评估合规性)

0
0
0
0
评论
未登录
暂无评论