CMES金融数据里能拿到的行情文件——期权期货L2五档tick、分钟线、日线与合约信息
周末想复盘一下原油期权的波动率曲面的日内变化,于是又打开了那个数据下载页面。顺便把里面各个目录点了一遍,发现有些文件类型如果不自己下一份还真不知道里面到底塞了啥字段。正好做个流水账,给同样需要翻数据但又懒得一个个下的朋友留个底。
先说句题外话,进去之后别只看顶部的表格,滚动条往下拉——页面底下还有个隐藏菜单,分了“期货”“期权”两个大类的行情文件结构,有个树形目录。我头回去只看了上半段,差点以为只有日线数据。
五档tick数据(实时切片型)
这应该是玩高频和盘口分析最关心的部分。网页上标的叫“Tick五档行情”,压缩包解压出来每个交易日一个csv,文件名带日期和合约代码。
打开看了下,和某些免费源给的切片tick完全不一样,它已经把买卖五档挂单量、挂单价全摊开了。字段大致长这样(截几条重要的):
| 字段含义 | csv列名 |
|---|---|
| 更新时间戳 | update_time |
| 最新价 | last_price |
| 成交量(累计) | volume |
| 持仓量 | open_interest |
| 买一价~买五价 | bid_price1, bid_price2, …, bid_price5 |
| 买一量~买五量 | bid_volume1, bid_volume2, …, bid_volume5 |
| 卖一价~卖五价 | ask_price1, ask_price2, …, ask_price5 |
| 卖一量~卖五量 | ask_volume1, ask_volume2, …, ask_volume5 |
成交笔数、成交额也都有,还有当日最高最低。当时看到ask_price系列被塞在一个亮瞎眼的excel表格里,没来得及冻结窗格,找卖二价手都滑抽筋了。
有点要吐槽的是,期权tick文件里没有直接给希腊字母,得自己拿合约信息去算。不过盘口深度够细,做波动率微笑已经绰绰有余。
这里顺带提一句,之前用CMES金融数据库的Python接口拉取同样品种的tick数据,发现返回的json结构里除了这些盘口字段,还直接带上了涨跌停价和最新成交的主动买卖标志,省了自己对着tick去判断内外盘。如果只是分析盘口结构网页下载够用,要逐笔成交方向的话还是调接口省事。
分钟级别K线(bar数据)
页面提供1分钟、5分钟、15分钟、30分钟和60分钟几个粒度。每个合约一个文件,或者可以打包下载全品种一天的数据。我用得最多的是1分钟。
字段比大部分股票分钟线多:
- 时间、开盘价、最高价、最低价、收盘价
- 成交量、成交额、持仓量(这个对期货很关键)
- 还有个均价列,算好的一分钟加权均价
一条典型记录:20240102 2100, 587.2, 587.5, 587.0, 587.3, 1230, 7210660, 85600, 587.12
注意交易所的交易时段,夜盘日期标的开盘时间21:00会被归在第二天,但文件里的日期列有时挂的是自然日,要小心对齐。我吃过一次亏,把夜盘数据错拼到前一天早盘,回测结果惨不忍睹。
日线(EOD)
日线数据就比较常规了,开盘、最高、最低、收盘、结算价、成交量、成交额、持仓量这些。但它细分了两个版本,“日行情”和“日结算信息”,后者多了昨持仓、今持仓变化、交割日期等。如果跑展期策略,直接用结算信息文件会省去很多合成连续合约的麻烦。
期权日线额外给的理论价、隐含波动率、Delta、Gamma等,这个在其他免费源里经常是缺失的,得自己用二叉树去算,这边直接整理好了。不过隐含波是按结算价反推的还是收盘价反推的需要看一眼说明,我一般会再跟自己的模型校对一下。
合约信息(品种规格)
这个文件很多人可能直接跳过,其实改参数时特别有用。里面是每个期货、期权合约的静态属性:
- 合约代码
- 上市日期、最后交易日、交割日期
- 合约乘数、最小变动价位
- 交易保证金比例
- 品种所属交易所
做跨期套利的时候,我习惯先把这个表拉出来,用最后交易日算剩余天数,再定移仓阈值。
期权合约信息还附了执行价、期权类型(美式/欧式),我拿到手第一件事就是把同一标的的所有执行价按到期日排好,生成一个截面池子,不然每次手工去猜合约后缀太痛苦了。
用接口一锅端的方式
网页下载适合少量历史数据,要是每天自动更新策略所需的数据,还是得走API。官方给了Python库,安装简单:
# 安装CMES金融数据库的Python SDKpip install cmesdatafromcmesdataimportCMESData# 初始化,填入账户信息(需先在网站用户中心获取token)client=CMESData(token='your_token_here')# 拉取豆粕期货主力合约某日tick数据,注意入参格式tick_df=client.get_tick(symbol='m.DCE',# 品种代码.交易所date='2025-03-20',# 日期type='5depth'# 五档盘口类型)# 返回DataFrame,可以用to_csv直接存本地上面的接口一次能把当天全部切片tick拉下来,如果不是历史归档需求,确实比手动翻页下csv要好。调用频率别太猛,拉单品种一天tick本身数据量就大,一次调用要几秒,做个适当sleep。
分钟线和日线也有对应的get_kline、get_daily方法,官网示例参数很清楚,比买卖五档的调用更轻量。
行情文件目录结构扒开看
页面上那棵树点开后你会发现,文件是按市场/品种/年份/数据类型这么一层层放的。比如要下载股指期权的日线,路径就是 “期权 → 中金所 → IO → 2025 → 日行情”。归档压缩包命名加上了交易所简称,像CFFEX_IO_202503.zip,解压后里面每个合约一个csv。
有时候想一下子拿全市场期权日线来做波动率指数,可以到上一级目录把整个交易所的压缩包都拉下来,网速要给力,一天所有品种的tick文件加起来很容易超过两三个G,我笔记本那次差点就冒烟了。
差不多记到这里。其实还有个他们标了VIP的“Level2五档实时推送接口”,对标量化交易需求,但那个不在历史下载区,得单独申请。
。