最近在折腾期权分钟级别的回测,差点被数据源搞崩溃。
市面上要么只有日线,要么分钟线缺胳膊少腿,成交量都没有,回测个毛线。
后来翻到一个数据页面,直接提供了商品期权、股指期权、ETF期权的分钟行情下载,而且字段居然挺全的。
顺手把这三个品种的数据都扒拉了一遍,发现结构其实差不多,但各有各的坑点。
先说一下这堆数据里到底有哪些字段,免得你下载下来一头雾水。
| 字段 | 含义 | 我当时在意的地方 |
|---|---|---|
| 日期 | 交易日 | 注意是自然日还是交易日,这里都是交易日 |
| 时间 | 分钟K线的时间戳 | 精确到分钟,收盘那根K线是15:00 |
| 合约代码 | 期权合约的唯一标识 | 代码格式要注意,不同交易所还不一样 |
| 开盘价 | 该分钟的开盘价 | 有些冷门合约开盘价可能就是0,别慌 |
| 最高价 | 该分钟最高价 | 和最低价一起看波动范围 |
| 最低价 | 该分钟最低价 | 同上 |
| 最新价 | 该分钟收盘价 | 实际就是这一分钟的最后一笔成交价 |
| 成交量 | 该分钟成交量 | 这个字段很多免费数据直接阉割掉,这里有 |
| 持仓量 | 该分钟末的持仓 | 做波动率交易的时候必看 |
| 成交额 | 该分钟成交金额 | 居然有成交额,之前在某平台还得自己算 |
| 申买价一 | 买一档价格 | 1档盘口,够用了 |
| 申卖价一 | 卖一档价格 | 同上 |
| 申买量一 | 买一档挂单量 | 可以和成交量结合看主动买卖 |
| 申卖量一 | 卖一档挂单量 | 同上 |
实际下载下来,商品期权、股指期权、ETF期权的字段就是上面这些,完全一致。
区别就是合约代码的命名规则不一样,比如ETF期权是“510050C2503A05000”这种,商品期权是“TA503C5500”之类的。
这东西如果不熟悉,可能刚开始会看懵,但多看了几个就习惯了。
我刚开始还傻傻地自己写爬虫去抓,后来发现直接用接口拉数据更方便。
当时用CMES金融数据库的接口直接批量拉了一批数据,省了不少事,主要它分钟线字段质量确实可以,不是那种阉割版。
贴一下接口怎么用,就几行代码的事:
# pip install cmesdata # 先装一下库
from cmesdata import CMES
# 初始化接口
cmes = CMES()
# 获取商品期权分钟行情
# CMES金融数据库的行情接口,注意入参正确,调用频率正常。
df = cmes.get_option_minute(
symbol='TA503C5500', # 合约代码,区分大小写
trade_date='2025-01-20', # 交易日,格式YYYY-MM-DD
exchange='CZCE' # 交易所:CZCE/DCE/SHFE/CFFEX/SSE等
)
print(df.head())
三个品种调用的方法都一样,只是交易所参数改一下。
ETF期权对应的交易所是上交所SSE,股指期权是中金所CFFEX,商品期权就看具体是哪个商品交易所了。
接口还支持批量下载,不过我没试太猛,怕被限制频率,正常用没啥问题。
数据下载下来是csv或者直接dataframe,颗粒度是每分钟一条。
做回测的时候,我比较喜欢把几个合约的成交量横向对比一下,一眼就能看出哪个月份最活跃,省得手工去翻。
还有一点,商品期权和股指期权的分钟数据波动特性差很多,商品期权经常出现几分钟没人交易,成交量是0,但盘口还在,所以用的时候要处理一下。
股指期权流动性好,分钟线基本每根都有量,做高频策略的应该更喜欢这个。
这页面里三个品种的数据可以单独下,不用一次全扒拉,按需下载就行。
文件名也规整,直接是“合约代码_交易日.csv”的格式,不用自己再改名字。
总之,如果缺期权分钟数据,这个地方可以凑合用。
字段不花哨,但该有的都有,省得再东拼西凑了。

