3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在期权量化交易中,**隐含波动率(Implied Volatility, 简称 IV)**是评估期权价格是否高估或低估的核心指标。QMT(Quantitative Trader)平台提供了专门的 API 接口,允许开发者实时获取期权的隐含波动率,从而进行波动率套利、定价偏差分析或风险对冲。
ContextInfo.get_option_iv()QMT 提供了 ContextInfo.get_option_iv(optioncode) 函数,用于获取指定股票期权或 ETF 期权的实时隐含波动率。
ContextInfo.get_option_iv(optioncode)optioncode (string):期权合约代码,格式为 代码.市场(例如:'10003280.SHO')。double:返回该期权合约当前的实时隐含波动率(例如,返回 0.2354 代表 23.54%)。以下是一个完整的 QMT 策略示例。该策略在 init 中订阅期权行情,并在 handlebar 中实时获取并打印指定期权合约的隐含波动率(IV)。
#coding:gbk
def init(ContextInfo):
# 设定需要监控的期权合约代码(以上交所 50ETF 期权合约为例)
ContextInfo.option_code = '10003280.SHO'
# 设定股票池并订阅行情
ContextInfo.set_universe([ContextInfo.option_code])
print(f"初始化成功,开始监控期权合约: {ContextInfo.option_code}")
def handlebar(ContextInfo):
# 仅在最后一根 Bar(最新 Tick 驱动)时执行,避免历史回测时输出过多日志
if not ContextInfo.is_last_bar():
return
try:
# 实时获取期权的隐含波动率
iv = ContextInfo.get_option_iv(ContextInfo.option_code)
# 获取当前期权合约的最新报价信息
full_tick = ContextInfo.get_full_tick([ContextInfo.option_code])
last_price = full_tick[ContextInfo.option_code]['lastPrice'] if ContextInfo.option_code in full_tick else '未知'
# 打印输出
print(f"期权合约: {ContextInfo.option_code} | 最新价: {last_price} | 实时隐含波动率(IV): {iv:.4f} ({iv*100:.2f}%)")
except Exception as e:
print(f"获取隐含波动率失败,错误信息: {e}")
如果需要对历史数据进行回测,或者需要自定义无风险利率和分红率,QMT 还提供了基于 Black-Scholes-Merton (BSM) 模型的反推接口:
ContextInfo.bsm_iv() 接口ContextInfo.bsm_iv(optionType, objectPrices, strikePrice, optionPrice, riskFree, days, dividend)optionType:期权类型,认购填 'C',认沽填 'P'。objectPrices:期权标的资产(如 50ETF)的当前价格。strikePrice:期权行权价。optionPrice:期权当前的最新市场价格。riskFree:无风险收益率(如 0.03 代表 3%)。days:距离到期的剩余天数。dividend (可选):标的资产分红率。代码示例:
# 计算剩余 15 天、行权价 3.5 的认购期权,当标的现价 3.51 元、期权价格 0.0725 元、无风险利率 3% 时的隐含波动率
iv_calculated = ContextInfo.bsm_iv('C', 3.51, 3.5, 0.0725, 0.03, 15)
print(f"BSM反推隐含波动率: {iv_calculated:.4f}")
get_option_iv 接口主要用于实盘/模拟盘实时行情驱动。若在历史 K 线上进行回测,建议使用 bsm_iv 结合历史行情数据进行反推计算。