Appearance
期权行情数据说明
可获取国内期权合约的日行情、分钟行情、tick 行情数据,具体调用方式请参考 API-get_price。
期权相关数据约定
合约代码规则
合约代码用以唯一标识当前合约,针对商品期权,不同交易所的命名规则有所不同。简便起见,米筐提供的期权数据统一合约规则为【标的合约代码(大写)】+【四位到期年月】+【认购认沽类型(大写)】+【行权价格水平】的方式进行:
交易所 | 原始合约代码 | 米筐合约代码 | 变动规则 |
---|---|---|---|
上期所 | cu1901C46000 | CU1901C46000 | 标的合约代码大写 |
郑商所 | SR901C4400 | SR1901C4400 | 到期月份改为 4 位 |
大商所 | m1901-C-2500 | M1901C2500 | 标的合约代码大写,去掉连字符 |
上证 50ETF 期权标的分红问题
与商品期权不同,上证 50ETF 期权存在行权价以及合约乘数变动的情况(因标的 50ETF 分红而进行的调整,详情请参考上证有关合约条款)故 50ETF 期权全部以数字作为合约代码,例如:合约代码10000615
对应的合约简称为510050C1612M02050
,代表 2016 年 12 月到期的行权价是 2.05 元的认购期权。但由于 50ETF 于当年 11 月 29 日分红,交易所对合约进行了调整 —— 合约行权价由 2.05 变为了 2.006,合约乘数由 10000 变为了 10220,合约简称变为了510050C1612A02050
,但合约代码并没有变。由于存在上述情况,您就需要通过10000615
这一合约代码来获取这一期权合约的历史数据了。并且我们在日线中加入了行权价与合约乘数信息,让您能够追踪它们的变动。
支持的期权品种
国内期权全品种上市以来的日线,分钟线数据,2018 年 10 月以来的 tick 数据;国内期权全品种实时 tick 数据和实时分钟数据。具体如下:
交易所 | 品种 | 行权方式 | 上市日期 | 交易时间 |
---|---|---|---|---|
上交所 | 50ETF 期权 | 欧式 | 2015-02-09 | 09:31 至 11:30, 13:01 至 15:00 |
上交所 | 300ETF 期权 | 欧式 | 2019-12-23 | 09:31 至 11:30, 13:01 至 15:00 |
上交所 | 500ETF 期权 | 欧式 | 2022-09-19 | 09:31 至 11:30, 13:01 至 15:00 |
上交所 | 科创 50 期权 | 欧式 | 2023-06-05 | 09:31 至 11:30, 13:01 至 15:00 |
上交所 | 科创板 50 期权 | 欧式 | 2023-06-05 | 09:31 至 11:30, 13:01 至 15:00 |
上期所 | CU 铜期权 | 欧式 | 2018-09-21 | 21:01 至 01:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | RU 天然橡胶期权 | 美式 | 2019-01-28 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | AU 黄金期权 | 欧式 | 2019-12-20 | 21:01 至 02:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | ZN 锌期权 | 欧式 | 2020-08-10 | 21:01 至 01:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | AL 铝期权 | 欧式 | 2020-08-10 | 21:01 至 01:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | AG 白银期权 | 美式 | 2022-12-26 | 21:01 至 02:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | RB 螺纹钢期权 | 美式 | 2022-12-26 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上期所 | BR 丁二烯橡胶期权 | 美式 | 2023-07-31 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
上海能源 | SC 原油期权 | 美式 | 2021-06-21 | 21:01 至 02:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
中金所 | IO 沪深 300 股指期权 | 欧式 | 2019-12-23 | 09:31 至 11:30, 13:01 至 15:00 |
中金所 | MO 中证 1000 股指期权 | 欧式 | 2022-07-22 | 09:31 至 11:30, 13:01 至 15:00 |
中金所 | HO 上证 50 股指期权 | 欧式 | 2022-12-19 | 09:31 至 11:30, 13:01 至 15:00 |
大商所 | M 豆粕期权 | 美式 | 2017-03-31 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | C 玉米期权 | 美式 | 2019-01-28 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | I 铁矿石期权 | 美式 | 2019-12-09 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | PG 液化石油气期权 | 美式 | 2020-03-31 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | V 聚氯乙烯期权 | 美式 | 2020-07-06 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | L 线型低密度聚乙烯期权 | 美式 | 2020-07-06 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | PP 聚丙烯期权 | 美式 | 2020-07-06 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | P 棕榈油期权 | 美式 | 2021-06-18 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | B 黄大豆期权 | 美式 | 2022-08-08 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | Y 豆油期权 | 美式 | 2022-08-08 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | A 黄大豆期权 | 美式 | 2022-08-08 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | EB 苯乙烯期权 | 美式 | 2023-05-15 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
大商所 | EG 乙二醇期权 | 美式 | 2023-05-15 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
广期所 | SI 工业硅期权 | 美式 | 2022-12-23 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
广期所 | LC 碳酸锂期权 | 美式 | 2023-07-24 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
深交所 | 300ETF 期权 | 欧式 | 2019-12-23 | 09:31 至 11:30, 13:01 至 15:00 |
深交所 | 创业板 ETF 期权 | 欧式 | 2022-09-19 | 09:31 至 11:30, 13:01 至 15:00 |
深交所 | 中证 500ETF 期权 | 欧式 | 2022-09-19 | 09:31 至 11:30, 13:01 至 15:00 |
深交所 | 深证 1000ETF 期权 | 欧式 | 2022-12-12 | 09:31 至 11:30, 13:01 至 15:00 |
郑商所 | SR 白糖期权 | 美式 | 2017-04-19 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | CF 棉花期权 | 美式 | 2019-01-28 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | MA 甲醇期权 | 美式 | 2019-12-16 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | TA 精对苯二甲酸期权 | 美式 | 2019-12-16 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | RM 菜粕期权 | 美式 | 2020-01-16 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | ZC 煤期权 | 美式 | 2020-06-30 | 21:01 至 23:30, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | OI 菜籽油期权 | 美式 | 2022-08-26 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | PK 花生仁期权 | 美式 | 2022-08-26 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | PX 对二甲苯期权 | 美式 | 2023-09-18 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | SH 烧碱期权 | 美式 | 2023-09-18 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | SA 纯碱期权 | 美式 | 2023-10-20 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | PF 短纤期权 | 美式 | 2023-10-20 | 21:01 至 23:00, 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | AP 苹果期权 | 美式 | 2023-10-20 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | SM 锰硅期权 | 美式 | 2023-10-20 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | SF 硅铁期权 | 美式 | 2023-10-20 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
郑商所 | UR 尿素期权 | 美式 | 2023-10-20 | 09:01 至 10:15, 10:31 至 11:30, 13:31 至 15:00 |
options.get_contracts - 筛选期权合约
python
options.get_contracts(underlying, option_type=None, maturity=None, strike=None, trading_date=None)
参数
参数 | 类型 | 说明 |
---|---|---|
underlying | str | 必填参数,期权标的。可以填写 'M' 代表期货品种的字母;也可填写'M1901' 这种具体合约代码。只支持单一品种或合约代码输入 |
option_type | str | 'C' 代表认购期权;'P' 代表认沽期权合约。默认返回全部类型 |
maturity | str OR int | 到期月份。例如 1811 代表期权 18 年 11 月到期(而不是标的期货的到期时间)。默认返回全部到期月份 |
strike | float | 行权价。查询时向左靠档匹配(例如,当前最高行权价是 1000,则输入大于 1000 的行权价都会向左靠档至 1000)。默认返回全部行权价 |
trading_date | str OR int | 查询日期。默认返回全部数据 |
返回
返回符合条件的期权 order_book_id list;如果无符合条件期权则返回[] 空 list
范例
- 查询铜期权 2019 年 2 月到期行权价是 52000 的期权
python
[In] options.get_contracts(underlying='CU', maturity='1902', strike=52000)
[Out]
['CU1903P52000', 'CU1903C52000']
- 查询 50ETF 期权 2016-11-29 这一天行权价是 2.006 的期权合约
python
[In] options.get_contracts(underlying='510050.XSHG', strike=2.006, trading_date='20161129')
[Out]
['10000615', '10000620']
options.get_greeks - 获取期权风险指标
python
options.get_greeks(order_book_ids, start_date, end_date=None,fields=None,model='implied_forward',price_type='close',frequency='1d')
参数
参数 | 类型 | 注释 |
---|---|---|
order_book_ids | str | 必填参数,合约代码 |
start_date | str, datetime.date, datetime.datetime, pandasTimestamp | 必填参数,查询的开始日期 |
end_date | str, datetime.date, datetime.datetime, pandasTimestamp | 查询的结束日期,默认为当天 |
model | str | 计算方法,默认为 'implied_forward'。 针对 BS 模型中的标的物远期利率,提供两种计算方法: last - 以国债同期限收益率作为无风险利率,标的物分红定为 0 计算远期利率; implied_forward - 基于期权的风险平价关系(put-call parity),推算市场数据隐含的标的物远期利率 |
fields | str OR str list | 查询字段,可选字段见下方返回,默认返回所有字段 |
price_type | str | 计算使用价格,默认为'close' 。 close - 使用期权收盘价计算衍生指标。 settlement - 使用期权结算价计算衍生指标 |
frequency | str | 数据的频率。 默认为'1d'。 1m - 分钟级别(仅支持股指期货,且 price_type 需为'close') 1d - 日级别 |
返回
pandas DataFrame
字段 | 类型 | 说明 |
---|---|---|
iv | float | 从场内期权价格反推对应的标的物收益波动率(基于 BS 模型计算) |
Delta | float | 期权价格对于标的物价格变化的一阶敏感度(基于 BS 模型计算) |
Gamma | float | 期权价格对于标的物价格变化的二阶敏感度(基于 BS 模型计算) |
Vega | float | 期权价格对于隐含波动率的一阶敏感度(基于 BS 模型计算) |
Theta | float | 期权价格对于合约待偿期变化的一阶敏感度,为每日历年的 Theta(基于 BS 模型计算) |
Rho | float | 期权价格对于无风险利率变化的一阶敏感度(基于 BS 模型计算) |
计算逻辑说明
米筐希腊字母均为小数形式。例如,期权 vega=12,当波动率增加 1%时,期权价格会相应增加大约 0.01 * 12 = 0.12。
在使用 BS 模型计算隐含波动率和希腊字母时,需要给定 5 个参数:
行权价(K)、标的物价格(S)、待偿期( t)、期权价格( C),这 4 个参数可从场内期权的合约基础信息或行情数据中获得;
无风险利率和标的物预期分红率的差值(r-q),该参数无法从合约基础信息或行情数据获得。上述 r 和 q 的取值决定了隐含波动率和希腊字母的计算结果。
目前米筐提供两种计算方案:
(1)r 取值为同期限国债收益率,q 取值为 0。该方案为业界常见方案,计算结果也和交易所计算结果相近。
(2) r-q 基于风险平价等式和远期价格定义算得。该方案保证参数取值符合期权风险平价等式,具有更好的理论意义和模型稳定性。具体计算如下:
认购-认沽期权平价公式如下:其中 C 和 P 分别为认购期权和认沽期权价格;F 和 K 分别为标的物远期价格和行权价。再考虑远期价格定义:
其中 S 为标的物价格。联立上述两式可得隐含远期利率:
范例
- 查询一个期权的风险指标
In []: options.get_greeks('10001739','20190601','20190605',fields=None,model='implied_forward')
Out[]:
iv delta gamma vega theta rho
order_book_id trading_date
10001739 2019-06-03 0.220510 -0.754164 2.076502 0.216619 -0.387216 -0.138543
2019-06-04 0.231736 -0.778680 1.918539 0.198550 -0.357089 -0.136513
2019-06-05 0.228281 -0.792963 1.920322 0.186324 -0.321590 -0.132373
- 查询一组期权的风险指标
In []: options.get_greeks(['10001961','10001979'],'20191101','20191105',fields=None,model='last')
Out[]:
iv delta gamma vega theta rho
order_book_id trading_date
10001961 2019-11-01 1.910980e-01 0.956014 0.585148 0.074194 -0.100978 0.189683
2019-11-04 3.765004e-08 0.998995 0.000000 0.000000 -0.000415 0.176242
2019-11-05 1.811132e-01 0.985548 0.251959 0.026194 -0.038324 0.166043
10001979 2019-11-01 2.210841e-01 0.962800 0.439580 0.064483 -0.100664 0.187611
2019-11-04 2.321494e-09 0.998995 0.000000 0.000000 0.000466 0.173095
2019-11-05 2.196304e-01 0.983912 0.229277 0.028905 -0.050766 0.162713
- 查询 IO 期权的分钟级别风险指标
In [12]: options.get_greeks('IO2412C2800',20240401,20240506,frequency='1m')
Out[12]:
iv delta gamma vega theta rho
order_book_id datetime
IO2412C2800 2024-04-01 09:31:00 1.304169e-01 0.980268 0.000121 144.678177 58.190402 -2002.412297
2024-04-01 09:32:00 1.248750e-01 0.984059 0.000106 120.727735 65.303168 -2014.764372
2024-04-01 09:33:00 1.206514e-01 0.986700 0.000093 103.369229 70.040171 -2023.243489
2024-04-01 09:34:00 1.197785e-01 0.987217 0.000091 99.896613 70.949117 -2024.893811
2024-04-01 09:35:00 7.200824e-08 1.000000 0.000000 0.000000 79.922641 -2058.613823
... ... ... ... ... ... ...
2024-05-06 14:56:00 2.859633e-08 1.000000 0.000000 0.000000 30.778390 -1761.009874
2024-05-06 14:57:00 1.491064e-08 1.000000 0.000000 0.000000 31.170894 -1761.161984
2024-05-06 14:58:00 6.724471e-08 1.000000 0.000000 0.000000 31.407937 -1761.253841
2024-05-06 14:59:00 6.724471e-08 1.000000 0.000000 0.000000 31.407937 -1761.253841
2024-05-06 15:00:00 2.208110e-08 1.000000 0.000000 0.000000 29.153061 -1760.379859
[5040 rows x 6 columns]
options.get_contract_property - 获取 ETF 期权合约属性(时间序列)
python
options.get_contract_property(order_book_ids, start_date=None, end_date=None, fields=None, market='cn')
获取期权每日合约属性数据,仅支持交易所 ETF 期权。和商品期权不同,ETF 期权执行价、 合约乘数等数据存在因标的分进行调整的情况,详情请参考 ETF 期权合约条款,通过该 API 可以追踪到它们的变动
参数
参数 | 类型 | 说明 |
---|---|---|
order_book_ids | str or str_list | 必填参数,合约代码 |
start_date | str, datetime.date, datetime.datetime, pandasTimestamp | 开始日期 |
end_date | str, datetime.date, datetime.datetime, pandasTimestamp | 结束日期,start_date ,end_date 不传参数时默认返回所有数据 |
fields | str OR str list | 查询字段,可选字段见下方返回,默认返回所有字段 |
market | str | 默认是中国内地市场('cn') 。可选'cn' - 中国内地市场; |
返回
返回 DataFrame
字段 | 说明 | 说明 |
---|---|---|
order_book_id | str | 合约代码 |
trading_date | pandasTimestamp | 交易日 |
product_name | str | 期权字母简称 |
symbol | str | 合约简称 |
contract_multiplier | float | 合约乘数 |
strike_price | float | 期权行权价 |
范例
- 查询 ETF 期权 10002752 20210115 到 20210118 之间的合约属性数据
python
[In] options.get_contract_property(order_book_ids='10002752', start_date='20210115',end_date='20210118')
[Out]
contract_multiplier product_name strike_price symbol
order_book_id trading_date
10002752 2021-01-15 10000.0 510300P2103M04400 4.400 300ETF沽3月4400
2021-01-18 10132.0 510300P2103A04400 4.343 XD300ETF沽3月4343A
- 查询 ETF 期权 90000493 和 10002752 在 20210115 -20210118 之间的执行价格数据
python
[In] options.get_contract_property(order_book_ids=['90000493','10002752'], start_date='20210115',end_date='20210118',fields=['strike_price'])
[Out]
strike_price
order_book_id trading_date
10002752 2021-01-15 4.400
2021-01-18 4.343
90000493 2021-01-15 4.300
2021-01-18 4.300
options.get_dominant_month - 获取期权主力月份
python
options.get_dominant_month(underlying_symbol, start_date=None, end_date=None, rule=0, rank=1)
获取商品期权一段时间的主力月份列表。(目前仅支持商品期权)
当同品种其他月份的持仓量与成交量在收盘后超过当前主力月份时,从第二个交易日开始进行主力月份的切换。日内不会进行主力月份的切换。
参数
参数 | 类型 | 说明 |
---|---|---|
underlying_symbol | str or str_list | 必填参数,期权标的代码,例'CU' |
start_date | str, datetime.date, datetime.datetime, pandasTimestamp | 开始日期 |
end_date | str, datetime.date, datetime.datetime, pandasTimestamp | 结束日期,start_date ,end_date 不传参数时默认返回所有数据 |
rule | int | 默认 rule=0,每个月份只能做一次主力月份,不会重复出现。 当 rule=1 时,主力月份的选取只考虑持仓量与成交量条件。 |
rank | int | 默认 rank=1。 1-主力月份,2-次主力月份 |
返回
返回 Pandas.Series - 主力月份列表
范例
- 查询 CU 期权 2023-07-01 到 2023-07-26 之间的主力月份数据
python
[In] options.get_dominant_month('CU',20230701,20230726)
[Out]
date
20230703 CU2308
20230704 CU2308
20230705 CU2308
20230706 CU2308
20230707 CU2308
20230710 CU2308
20230711 CU2308
20230712 CU2308
20230713 CU2308
20230714 CU2308
20230717 CU2308
20230718 CU2308
20230719 CU2308
20230720 CU2308
20230721 CU2308
20230724 CU2308
20230725 CU2308
20230726 CU2308
Name: dominant, dtype: object
options.get_indicators - 获取期权衍生指标
python
options.get_indicators(underlying_symbol,maturity,start_date=None,end_date=None,fileds=None)
参数
参数 | 类型 | 说明 |
---|---|---|
underlying_symbol | str or str list | 必填参数,期权标的代码,例 'CU' |
maturity | str or int | 必填参数,到期月份,例 2503 代表期权 25 年 3 月到期 |
start_date | str, datetime.date, datetime.datetime, pandasTimestamp | 开始日期 |
end_date | str, datetime.date, datetime.datetime, pandasTimestamp | 结束日期,start_date ,end_date 不传参数时默认返回最近三个月的数据 |
fields | str or str list | 查询字段,可选字段见下方返回,默认返回所有字段 |
返回
Pandas.DataFrame
字段 | 类型 | 说明 |
---|---|---|
underlying_symbol | str | 期权标的代码 |
date | pandasTimestamp | 日期 |
AM_PCR | float | 成交额 PCR |
OI_PCR | float | 持仓量 PCR |
VL_PCR | float | 成交量 PCR |
skew | float | 期权偏度 |
计算逻辑说明
PCR 计算公式
成交额 PCR(AM_PCR) = 每日看跌期权成交额 每日看涨期权成交额
持仓量 PCR(OI_PCR) = 每日看跌期权持仓量 每日看涨期权持仓量
成交量 PCR(VL_PCR) = 每日看跌期权成交量 每日看涨期权成交量期权偏度计算公式
释:(( delta 为 0.25 的认购合约 IV ) - ( delta 为 -0.25 的认沽合约 IV )) / ( delta 为 -0.25 的认沽合约 IV )
此处 IV 的计算可参考 API-get_greeks。
范例
- 查询 2502 到期的 50ETF 期权在 20250101-20250103 之间的衍生指标
python
[In] options.get_indicators('510050.XSHG','2502','20250101', '20250103')
[Out]
AM_PCR OI_PCR VL_PCR skew
underlying_symbol date
510050.XSHG 2025-01-02 1.132778 0.919209 1.036258 0.061745
2025-01-03 1.171061 0.961585 0.920874 0.01549
- 查询 2502 到期的 CU 期权在 20250101-20250103 之间的成交量 PCR 和 skew
python
[In] options.get_indicators('CU','2502','20250101', '20250103',fields=['VL_PCR','skew'])
[Out]
VL_PCR skew
underlying_symbol date
CU 2025-01-02 1.231409 -0.066800
2025-01-03 1.224983 -0.056944