期权数据
# 获取期权数据
# 获取指定期权标的对应的期权品种列表(仅支持内部python)
ContextInfo.get_option_undl_data
用法: ContextInfo.get_option_undl_data(undl_code_ref)
释义: 获取指定期权标的对应的期权品种列表
参数:
- undl_code_ref:期权标的代码,如'510300.SH',传空字符串时获取全部标的数据
返回:
指定期权标的代码时返回对应该标的的期权合约列表list
期权标的代码为空字符串时返回全部标的对应的品种列表的字典dict
示例:
data=ContextInfo.get_option_undl_data('510300.SH')
# 获取历史期权列表 (仅支持内部python)
ContextInfo.get_option_list
用法: ContextInfo.get_option_list(undl_code,dedate,opttype,isavailable)
释义: 获取指定期权列表。如获取历史期权,需先下载过期合约列表
参数:
- undl_code:期权标的代码,如'510300.SH'
- dedate:期权到期月或当前交易日期,"YYYYMM"格式为期权到期月,"YYYYMMDD"格式为获取当前日期交易的期权
- opttype:期权类型,默认值为空,"CALL","PUT",为空时认购认沽都取
- isavailable:是否可交易,当dedate的格式为"YYYYMMDD"格式为获取当前日期交易的期权时,isavailable为True时返回当前可用,为False时返回当前和历史可用
返回: 期权合约列表list
示例:
# 获取到期月份为202101的上交所510300ETF认购合约
data=ContextInfo.get_option_list('510300.SH','202101',"CALL")
# 获取20210104当天上交所510300ETF可交易的认购合约
data=ContextInfo.get_option_list('510300.SH','20210104',"CALL",True)
# 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市)
data=ContextInfo.get_option_list('510300.SH','20210104',"CALL",False)
2
3
4
5
6
7
8
# 获取指定期权品种的详细信息(仅支持内部python)
ContextInfo.get_option_detail_data(optioncode)
用法: ContextInfo.get_option_detail_data(optioncode)
释义: 获取指定期权品种的详细信息
参数:
- optioncode:期权代码,如'10001506.SHO',当填写空字符串时候默认为当前主图的期权品种
返回:
dict
字段
ExchangeID:期权市场代码
InstrumentID:期权代码
ProductID:期权标的的产品ID
OpenDate:发行日期
ExpireDate:到期日
PreClose:前收价格
SettlementPrice:前结算价格
UpStopPrice:当日涨停价
DownStopPrice:当日跌停价
LongMarginRatio:多头保证金率
ShortMarginRatio:空头保证金率
PriceTick:最小变价单位
VolumeMultiple:合约乘数
MaxMarketOrderVolume:涨跌停价最大下单量
MinMarketOrderVolume:涨跌停价最小下单量
MaxLimitOrderVolume:限价单最大下单量
MinLimitOrderVolume:限价单最小下单量
OptUnit:期权合约单位
MarginUnit:期权单位保证金
OptUndlCode:期权标的证券代码
OptUndlMarket:期权标的证券市场
OptExercisePrice:期权行权价
NeeqExeType:全国股转转让类型
OptUndlRiskFreeRate:期权标的无风险利率
OptUndlHistoryRate:期权标的历史波动率
EndDelivDate:期权行权终止日
示例:
def handlebar(ContextInfo):
print ContextInfo.get_option_detail_data('10001506.SHO')
2
# 获取股票期权的实时隐含波动率 (仅支持内部python)
ContextInfo.get_option_iv
用法: ContextInfo.get_option_iv(optioncode)
释义: 获取股票期权的实时隐含波动率
参数:
- optioncode:期权代码,如'10003280.SHO'
返回: double
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_option_iv('10003280.SHO'))
2
# 基于BS模型计算欧式期权理论价格(仅支持内部python)
ContextInfo.bsm_price
用法: ContextInfo.bsm_price(optionType,objectPrices,strikePrice,riskFree,sigma,days,dividend)
释义: 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、无风险利率、期权标的年化波动率、剩余天数、标的分红率、计算期权的理论价格
参数:
- optionType:期权类型,认购:'C',认沽:'P'
- objectPrices:期权标的价格,可以是价格列表或者单个价格
- strikePrice:期权行权价
- riskFree:无风险收益率
- sigma:标的波动率
- days:剩余天数
- dividend:分红率
返回:
objectPrices为float时,返回float
objectPrices为list时,返回list
计算结果最小值0.0001,结果保留4位小数,输入非法参数返回nan
示例:
import numpy as np
object_prices=list(np.arange(3,4,0.01));
#计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格从3元到4元变动过程中期权理论价格序列
prices=ContextInfo.bsm_price('C',object_prices,3.5,0.03,0.23,15,0)
print(prices);
#计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格为3.51元的平值期权的理论价格
price=ContextInfo.bsm_price('C',3.51,3.5,0.03,0.23,15,0)
print(price);
2
3
4
5
6
7
8
# 基于BS模型计算欧式期权隐含波动率 (仅支持内部python)
ContextInfo.bsm_iv
用法: ContextInfo.bsm_iv(optionType,objectPrices,strikePrice,optionPrice,riskFree,days,dividend)
释义: 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利率、剩余天数、标的分红率,计算期权的隐含波动率
参数:
- optionType:期权类型,认购:'C',认沽:'P'
- objectPrice:期权标的价格
- strikePrice:期权行权价
- optionPrice:期权现价
- riskFree:无风险收益率
- days:剩余天数
- dividend:分红率
返回: double
示例:
iv=ContextInfo.bsm_iv('C',3.51,3.5,0.0725,0.03,15);
#计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0时,标的现价3.51元,期权价格0.0725元时的隐含波动率
2
# 行情数据
行情数据的获取方式与股票相同, 接口说明 http://docs.thinktrader.net/vip/pages/cc95b6/#_1-qmt行情数据基础概念 (opens new window)
# 获取行情数据
get_market_data(field_list=[], stock_list=[], period='1d', start_time='', end_time='', count=-1, dividend_type='none', fill_data=True)
释义
- 从缓存获取行情数据,是主动获取行情的主要接口
- 获取实时行情需要先调用单股订阅接口subscribe_quote订阅实时行情
- 当已经提前用download_history_data下载数据或subscribe_quote订阅历史数据时,该接口可以获取到历史行情
参数
- field_list - list 数据字段列表,传空则为全部字段
周期为1m、5m、1d 时,字段可选 含义说明
field 含义 time时间open开盘价high最高价low最低价close收盘价volume成交量amount成交额settle今结算openInterest持仓量preClose前收盘价suspendFlag停牌1停牌,0 不停牌周期为tick 时,字段可选 含义说明
field 含义 time时间lastPrice最新价lastClose前日收盘价open开盘价high最高价low最低价close收盘价volume成交量amount成交额settle今结算pvolume成交总量openInterest持仓量stockStatus证券状态openInt持仓量lastSettlementPrice前结算askPrice卖一价~卖五价bidPrice买一价~买五价askVol卖一量~卖五量bidVol买一量~买五量- stock_list - list 合约代码列表
- period - string 周期 1m、5m、1d、tick
- start_time - string 起始时间 %Y%m%d或%Y%m%d%H%M%S
- end_time - string 结束时间 %Y%m%d或%Y%m%d%H%M%S
- count - int 数据个数
- dividend_type - string 除权方式
- fill_data - bool 是否向后填充空缺数据
- field_list - list 数据字段列表,传空则为全部字段
返回
- period为
1m5m1dK线周期时- 返回dict { field1 : value1, field2 : value2, ... }
- field1, field2, ... :数据字段
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时- 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
- period为
备注
- 仅用于获取level1数据
# 获取全推数据
get_full_tick(code_list)
- 释义
- 获取全推数据
- 参数
- code_list - 代码列表,支持传入市场代码或合约代码两种方式
- 传入市场代码代表订阅全市场,示例:['SH', 'SZ']
- 传入合约代码代表订阅指定的合约,示例:['600000.SH', '000001.SZ']
- code_list - 代码列表,支持传入市场代码或合约代码两种方式
- 返回
- dict 数据集 { stock1 : tick1, stock2 : tick2, ... }
- tick字段说明
- 备注
- 无