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

QMT 平台如何通过 get_option_iv 获取期权实时隐含波动率?(附 Python 源码)

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT 期权高阶 API:`get_option_iv` 实时隐含波动率获取与套利

Question: 如何通过 ContextInfo.get_option_iv 获取期权合约的实时隐含波动率?

解决方案

QMT 期权高阶 API:ContextInfo.get_option_iv 实时隐含波动率获取与应用

在期权量化交易中,**隐含波动率(Implied Volatility, IV)**是度量期权价格贵贱的核心指标。QMT 平台提供了原生高效接口 ContextInfo.get_option_iv(),让投资者能够在盘中实时获取指定期权合约的隐含波动率,快速构建波动率曲面及波动率套利策略。


1. 接口语法与参数说明

ContextInfo.get_option_iv()

  • 用法ContextInfo.get_option_iv(optioncode)
  • 释义:获取指定股票期权/ETF期权合约的实时隐含波动率(IV)。
  • 参数
    • optioncode (str):期权合约代码,如 '10003280.SHO'(上交所期权)或包含市场后缀的合约代码。
  • 返回
    • double:实时隐含波动率数值(如 0.23 表示 23% 的年化隐含波动率)。

示例代码:

#encoding:gbk
def init(ContextInfo):
    ContextInfo.option_code = '10003280.SHO'

def handlebar(ContextInfo):
    # 仅在最后一根 K 线/最新 tick 打印
    if ContextInfo.is_last_bar():
        iv = ContextInfo.get_option_iv(ContextInfo.option_code)
        print(f"合约 {ContextInfo.option_code} 最新实时 IV: {iv:.4f}")

2. 结合 BSM 模型扩展分析

除了原生获取实时 IV,QMT 还提供了 Black-Scholes-Merton (BSM) 模型相关 API,方便进行定价与 IV 的逆向校验:

  1. 理论定价ContextInfo.bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)
  2. BSM 逆推 IVContextInfo.bsm_iv(optionType, objectPrices, strikePrice, optionPrice, riskFree, days, dividend)

结合原生 get_option_iv() 与 BSM 模型,可以精准计算期权偏离度(Mispricing)。


3. 实战策略:期权波动率套利示例

以下策略展示了如何在 QMT 中获取 510300ETF 期权的实时 IV,并根据波动率偏离度发出交易信号。

#encoding:gbk
import numpy as np

def init(ContextInfo):
    ContextInfo.set_account('6000000058')
    # 设定标的及关联期权
    ContextInfo.target_option = '10003280.SHO'
    ContextInfo.set_universe([ContextInfo.target_option])

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    
    # 1. 获取实时隐含波动率
    realtime_iv = ContextInfo.get_option_iv(ContextInfo.target_option)
    
    # 2. 获取期权详细信息
    detail = ContextInfo.get_option_detail_data(ContextInfo.target_option)
    if not detail:
        return
        
    strike_price = detail['OptExercisePrice'] # 行权价
    opt_type = 'C' if detail['optType'] == 'CALL' else 'P' # 认购/认沽
    
    # 3. 计算历史波动率做对比(假设为 0.20)
    historical_iv = detail.get('OptUndlHistoryRate', 0.20)
    
    # 4. 波动率套利逻辑:当 IV 显著高于历史波动率时做空波动率(卖出开仓)
    print(f"合约: {ContextInfo.target_option}, 实时IV: {realtime_iv:.4f}, 历史波动率: {historical_iv:.4f}")
    
    if realtime_iv > historical_iv * 1.25:
        print("信号:IV 偏高,执行卖出开仓策略(做空波动率)")
        # 卖出开仓示例 (opType=52, orderType=1101)
        # passorder(52, 1101, ContextInfo.accid, ContextInfo.target_option, 5, -1, 1, ContextInfo)
    elif realtime_iv < historical_iv * 0.75:
        print("信号:IV 偏低,执行买入开仓策略(做多波动率)")
        # 买入开仓示例 (opType=50, orderType=1101)
        # passorder(50, 1101, ContextInfo.accid, ContextInfo.target_option, 5, -1, 1, ContextInfo)

4. 常见问题与注意事项

  1. 数据订阅依赖:盘中获取实时 IV 需要先订阅对应期权合约的行情,可配合 ContextInfo.subscribe_quote() 使用。
  2. 开通 Level-2 增强版:获取高频精细化的期权快照与指标,建议开启 Level-2 行情权限。
  3. 合约到期处理:可通过 ContextInfo.get_option_list() 动态筛选当月或近月交易活跃的期权合约列表。