miniQMT获取期权数据
miniqmt
阅读:600
2025-01-07 14:05:52
评论:0
miniQMT获取期权数据
获取指定期权标的对应的期权品种列表
调用方法
from xtquant import xtdata
xtdata.get_option_undl_data(undl_code_ref)
参数
字段 | 类型 | 说明 |
---|---|---|
undl_code_ref | string | 期权标的代码,如’510300.SH’,传空字符串时获取全部标的数据 |
返回
- 指定期权标的返回的是 列表类型
- 期权标的为空字符串返回的是 字典类型
示例
from xtquant import xtdata
print(xtdata.get_option_undl_data("510300.SH"))
获取历史期权列表
调用方法
from xtquant import xtdata
xtdata.get_option_list(undl_code, dedate, opttype, isavailable)
参数
字段 | 类型 | 说明 |
---|---|---|
undl_code | str | 期权标的代码 |
dedate | str | 期权到期月或当前交易日期,”YYYYMM”格式为期权到期月,”YYYYMMDD”格式为获取当前日期交易的期权 |
opttype | str | 期权类型,默认值为空,”CALL”,”PUT”,为空时认购认沽都取 |
isavailable | bool | 是否可交易,当dedate的格式为”YYYYMMDD”格式为获取当前日期交易的期权时,isavailable为True时返回当前可用,为False时返回当前和历史可用 |
返回
- 期权合约列表 list
示例
from xtquant import xtdata
# 获取到期月份为202101的上交所510300ETF认购合约
data = xtdata.get_option_list('510300.SH', '202101', "CALL")
# 获取20210104当天上交所510300ETF可交易的认购合约
# data = xtdata.get_option_list('510300.SH', '20210104', "CALL", True)
# 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市)
# data = xtdata.get_option_list('510300.SH', '20210104', "CALL", False)
print(data)
获取指定期权品种的详细信息
调用方法
from xtquant import xtdata
xtdata.get_option_detail_data(optioncode)
参数
字段 | 类型 | 说明 |
---|---|---|
optioncode | str | 期权代码 |
返回
- 字典类型
字段 | 类型 | 说明 |
---|---|---|
ExchangeID | str | 期权市场代码 |
InstrumentID | str | 期权代码 |
ProductID | str | 期权标的的产品ID |
OpenDate | - | 发行日期 |
ExpireDate | - | 到期日 |
PreClose | float | 前收价格 |
SettlementPrice | float | 前结算价格 |
UpStopPrice | float | 当日涨停价 |
DownStopPrice | float | 当日跌停价 |
LongMarginRatio | float | 多头保证金率 |
ShortMarginRatio | float | 空头保证金率 |
PriceTick | float | 最小变价单位 |
VolumeMultiple | int | 合约乘数 |
MaxMarketOrderVolume | int | 涨跌停价最大下单量 |
MinMarketOrderVolume | int | 涨跌停价最小下单量 |
MaxLimitOrderVolume | int | 限价单最大下单量 |
MinLimitOrderVolume | int | 限价单最小下单量 |
OptUnit | int | 期权合约单位 |
MarginUnit | float | 期权单位保证金 |
OptUndlCode | str | 期权标的证券代码 |
OptUndlMarket | str | 期权标的证券市场 |
OptExercisePrice | float | 期权行权价 |
NeeqExeType | str | 全国股转转让类型 |
OptUndlRiskFreeRate | float | 期权标的无风险利率 |
OptUndlHistoryRate | float | 期权标的历史波动率 |
EndDelivDate | - | 期权行权终止日 |
optType | str | 期权类型 |
示例
from xtquant import xtdata
print(xtdata.get_option_detail_data('10002235.SHO'))
获取期权行情数据
调用方法
from xtquant import xtdata
# 下载指定合约历史行情
xtdata.download_history_data(stock_code, period, start_time='', end_time='')
# 订阅指定合约行情
xtdata.subscribe_quote(stock_code, period='', start_time='', end_time='', count=0, callback=None)
# 获取指定合约行情
xtdata.get_market_data_ex(field_list=[], stock_list=[], period='', start_time='', end_time='', count=-1, dividend_type='none', fill_data=True)
参数
xtdata.subscribe_quote
字段 | 类型 | 说明 |
---|---|---|
stock_code | str | 股票代码 |
start_time | str | 开始时间格式YYYYMMDD/YYYYMMDDhhmmss |
end_time | str | 结束时间 |
count | int | 数量 -1全部/n: 从结束时间向前数n个 |
period | str | 周期 分笔”tick” 分钟线”1m”/“5m” 日线”1d” |
xtdata.get_market_data_ex
参数名称 | 类型 | 描述 |
---|---|---|
field_list | list | 表示所有字段。不同的数据周期,取值范围有所不同。 |
stock_list | list | 合约代码列表 |
period | str | 数据周期,默认是当前主图周期。可选值如下: ‘tick’ (分笔线), ‘1d’ (日线), ‘1m’ (1分钟线), ‘5m’ (5分钟线), ‘15m’ (15分钟线), ‘l2quote’ (Level2行情快照), ‘l2quoteaux’ (Level2行情快照补充), ‘l2order’ (Level2逐笔委托), ‘l2transaction’ (Level2逐笔成交),’l2transactioncount’ (Level2大单统计), ‘l2orderqueue’ (Level2委买委卖队列) |
start_time | str | 开始时间。为空时默认为最早时间。时间格式为’20201231’或’20201231093000’ |
end_time | str | 结束时间。为空时默认为最新时间。时间格式为’20201231’或’20201231235959’ |
count | int | 数据最大个数。-1表示不做个数限制 |
dividend_type | str | 复权方式,默认是当前主图复权方式。可选值包括: ‘none’ (不复权), ‘front’(前复权), ‘back’ (后复权), ‘front_ratio’ (等比前复权), ‘back_ratio’ (等比后复权) |
fill_data | bool | 停牌填充方式 |
返回值
- period为1m 5m 1dK线周期时
- 返回dict { field1 : value1, field2 : value2, … }
- value1, value2, … :pd.DataFrame 数据集,index为stock_list,columns为time_list
- period为tick分笔周期时
- 返回dict { stock1 : value1, stock2 : value2, … }
- stock1, stock2, … :合约代码
- value1, value2, … :np.ndarray 数据集,按数据时间戳time增序排列
示例
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote('10005329.SHO', period='1d', start_time='', end_time='20231026150000', count=1, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data('10005329.SHO', period="1d") # ETF期权
xtdata.download_history_data('a2407-C-5200.DF', period="1d") # 商品期货期权
xtdata.download_history_data('IO2312-C-3550.IF', period="1d") # 股指期货期权
# 获取指定合约历史行情
day_data = xtdata.get_market_data_ex([], ['10005329.SHO'], period='1d', start_time='20230101', end_time='20231026', count=-1, dividend_type='front', fill_data=True)
print(day_data)
获取过期期权合约代码
调用方法
from xtquant import xtdata
xtdata.get_stock_list_in_sector(sector_name)
参数
字段 | 类型 | 说明 |
---|---|---|
sector_name | string | 板块名称 |
返回值
- list:内含成份股代码,代码形式为 ‘stockcode.market’,如 ‘000002.SZ’
示例
from xtquant import xtdata
import re
def get_option_code(market, data_type=0):
_history_sector_dict = {
"IF": "过期中金所",
"SF": "过期上期所",
"DF": "过期大商所",
"ZF": "过期郑商所",
"INE": "过期能源中心",
"SHO": "过期上证期权",
"SZO": "过期深证期权",
}
_sector = _history_sector_dict.get(market)
if _sector is None:
raise KeyError(f"不存在该市场:{market}")
_now_sector = _sector[2:]
if market == "SHO" or market == "SZO":
if data_type == 0:
_list = xtdata.get_stock_list_in_sector(_now_sector)
elif data_type == 1:
_list = xtdata.get_stock_list_in_sector(_sector)
elif data_type == 2:
_list = xtdata.get_stock_list_in_sector(_sector) + xtdata.get_stock_list_in_sector(_now_sector)
else:
raise KeyError(f"data_type参数错误:{data_type}")
return _list
if data_type == 0:
all_list = xtdata.get_stock_list_in_sector(_now_sector)
elif data_type == 1:
all_list = xtdata.get_stock_list_in_sector(_sector)
elif data_type == 2:
all_list = xtdata.get_stock_list_in_sector(_sector) + xtdata.get_stock_list_in_sector(_now_sector)
else:
raise KeyError(f"data_type参数错误:{data_type}")
_list = []
pattern1 = r'^[A-Z]{2}\d{4}-[A-Z]-\d{4}\.[A-Z]+$'
pattern2 = r'^[a-zA-Z]+\d+[a-zA-Z]\d+\.[A-Z]+$'
pattern3 = r'^[a-zA-Z]+\d+-[a-zA-Z]-\d+\.[A-Z]+$'
for i in all_list:
if re.match(pattern1, i):
_list.append(i)
elif re.match(pattern2, i):
_list.append(i)
elif re.match(pattern3, i):
_list.append(i)
return _list
if __name__ == "__main__":
xtdata.download_history_contracts() # 下载历史合约信息
option_code_list1 = get_option_code("IF", data_type=0) # 获取中金所当前可交易期权合约
option_code_list2 = get_option_code("SHO", data_type=1) # 获取上交所已退市可交易期权合约
option_code_list3 = get_option_code("IF", data_type=2) # 获取中金所所有期权(包含历史)合约
print(option_code_list1[:5])
print("=" * 20)
print(option_code_list2[:5])
print("=" * 20)
print(option_code_list3[:5])
# 可通过xtdata.get_option_detail_data()查看合约具体信息
获取期权全推数据
调用方法
from xtquant import xtdata
xtdata.get_full_tick(code_list)
参数
字段 | 类型 | 说明 |
---|---|---|
code_list | list | 合约列表,例如 [‘10005331.SHO’, ‘10005332.SHO’] |
返回值
- dict 数据集 { stock1 : tick1, stock2 : tick2, … }, tick字段如下:
字段 | 类型 | 说明 |
---|---|---|
timetag | str | 时间 |
lastPrice | float | 最新价 |
open | float | 开盘价 |
low | float | 最低价 |
amount | float | 成交额 |
volume | int | 成交总量 |
pvolume | int | 原始成交总量 |
openInt | int | 持仓量 |
stockStatus | str | 证券状态 |
lastClose | float | 前收盘价 |
lastSettlementPrice | float | 前结算价 |
settlementPrice | float | 今结算价 |
askPrice | list | 多档委卖价 |
bidPrice | list | 多档委买价 |
askVol | list | 多档委卖量 |
bidVol | list | 多档委买量 |
示例
from xtquant import xtdata
ret_full_tick = xtdata.get_full_tick(['10005331.SHO'])
print(ret_full_tick)
期权VIX指数
VIX指数编制规则
σ:VIX/100即VIX=σ*100
T:到期时间
F:指数期权价格对应的远期指数水平
K0:低于F的第一个行权价
Ki:第i个虚值期权的行权价格;如果Ki > K0为看涨期权;如果Ki < K0为看跌期权;如果Ki=K0都选
∆Ki:行权价价格————Ki附近行权价差的一半
R:至到期日的无风险利率
Q(Ki):行权价为Ki的每个期权的bid-ask价差的中点
VIX指数合约代码规则
名称 | VIX指数合约代码 |
---|---|
深圳100ETFVIX | 159901VIX.SZO.VIX |
创业板ETFVIX | 159915VIX.SZO.VIX |
沪深300ETFVIX | 159919VIX.SZO.VIX |
中证500ETFVIX | 159922VIX.SZO.VIX |
50ETFVIX | 510050VIX.SHO.VIX |
300ETFVIX | 510300VIX.SHO.VIX |
500ETFVIX | 510500VIX.SHO.VIX |
科创50VIX | 588000VIX.SHO.VIX |
科创板50VIX | 588080VIX.SHO.VIX |
获取VIX指数行情
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=16
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源; 2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任; 3.作者投稿可能会经我们编辑修改或补充。