🚀 AI 一键生成 qmt 策略代码
立即体验

qmt 平台如何获取个股期权的实时隐含波动率(IV)?(附 Python 源码)

qmt | 发布时间: 2026/8/10
以下内容由 EasyQuant 生成。

问题描述

qmt 期权波动率量化:利用 get_option_iv 实时获取期权隐含波动率
qmt 怎么获取个股期权的实时隐含波动率(IV)?

解决方案

qmt 平台如何获取个股期权的实时隐含波动率(IV)?

在期权量化交易中,**隐含波动率(Implied Volatility, 简称 IV)**是评估期权价格是否高估或低估的核心指标。QMT(Quantitative Trader)平台提供了专门的 API 接口,允许开发者实时获取期权的隐含波动率,从而进行波动率套利、定价偏差分析或风险对冲。


1. 核心接口介绍: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%)。

2. 完整 Python 策略源码示例

以下是一个完整的 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}")

3. 进阶:基于 BSM 模型自主计算隐含波动率

如果需要对历史数据进行回测,或者需要自定义无风险利率和分红率,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}")

4. 注意事项

  1. 数据下载:在使用期权相关接口前,请确保已通过 QMT 客户端的【数据管理】功能补充了**期权市场(如 SHO、SZO)**的历史行情数据与过期合约列表。
  2. 实盘与回测get_option_iv 接口主要用于实盘/模拟盘实时行情驱动。若在历史 K 线上进行回测,建议使用 bsm_iv 结合历史行情数据进行反推计算。