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

qmt 期权高阶:利用 get_option_iv 捕捉波动率偏斜与均值回归

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

问题描述

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

Title: qmt 期权高阶:利用 get_option_iv 捕捉波动率偏斜与均值回归

Question: qmt 如何获取实时期权隐含波动率进行波动率套利?

解决方案

qmt 期权高阶:利用 get_option_iv 捕捉波动率偏斜与均值回归

在期权交易中,隐含波动率(Implied Volatility, IV)是评估期权价格贵贱的核心指标。利用 QMT(迅投量化终端)提供的 get_option_iv 接口,投资者可以实时获取期权合约的隐含波动率,进而寻找波动率偏斜(Volatility Skew)与均值回归的套利机会。


1. QMT 获取期权隐含波动率核心 API

QMT 提供了便捷的期权 IV 获取及 BSM 模型计算函数:

1.1 获取实实时隐含波动率:ContextInfo.get_option_iv()

  • 用法ContextInfo.get_option_iv(optioncode)
  • 参数optioncode - 期权代码,如 '10003280.SHO'
  • 返回float(对应期权的实时隐含波动率)

1.2 BSM 期权理论定价与 IV 反推

  • 计算理论价格ContextInfo.bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)
  • 计算隐含波动率ContextInfo.bsm_iv(optionType, objectPrices, strikePrice, optionPrice, riskFree, days, dividend)

2. 波动率套利策略思路

  1. 获取标的及期权链:通过 get_option_list 获取同一到期日不同行权价的认购/认沽期权。
  2. 计算/读取实时 IV:遍历期权链,调用 get_option_iv 获取各合约的实时 IV。
  3. 寻找偏斜与均值偏离:计算 IV 的均值或拟合 IV 曲线。当某合约 IV 显著高于均值(偏离过大)时做空该期权,当 IV 显著低于均值时做多该期权,构建 Delta 中性组合构建均值回归套利。

3. QMT Python 策略源码示例

#coding:gbk
import numpy as np

def init(ContextInfo):
    # 设定交易账号
    ContextInfo.accid = '600000001'
    ContextInfo.set_account(ContextInfo.accid)
    
    # 设置标的股票及期权标的代码
    ContextInfo.target_code = '510300.SH'
    ContextInfo.set_universe([ContextInfo.target_code])
    
    # 设置定时器,每 5 秒计算一次波动率偏斜
    ContextInfo.run_time("check_iv_skew", "5nSecond", "2023-01-01 09:30:00", "SH")

def check_iv_skew(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
        
    # 1. 获取当月可交易的认购期权列表
    option_list = ContextInfo.get_option_list(ContextInfo.target_code, '202312', "CALL", True)
    if not option_list:
        return
        
    # 2. 遍历获取各期权的 IV
    iv_dict = {}
    for opt in option_list:
        iv = ContextInfo.get_option_iv(opt)
        if iv > 0:
            iv_dict[opt] = iv
            
    if len(iv_dict) < 3:
        return
        
    # 3. 计算波动率均值与标准差
    iv_values = list(iv_dict.values())
    mean_iv = np.mean(iv_values)
    std_iv = np.std(iv_values)
    
    print(f"当前期权链平均 IV: {mean_iv:.4f}, 标准差: {std_iv:.4f}")
    
    # 4. 寻找 IV 异常偏离的合约(以 z-score > 2 为例)
    for opt, iv in iv_dict.items():
        z_score = (iv - mean_iv) / std_iv if std_iv > 0 else 0
        if z_score > 2.0:
            print(f"[卖出信号] 期权 {opt} IV ({iv:.4f}) 过高,Z-Score: {z_score:.2f},存在均值回归卖空机会")
            # passorder(52, 1101, ContextInfo.accid, opt, 5, -1, 1, ContextInfo) # 卖出开仓
        elif z_score < -2.0:
            print(f"[买入信号] 期权 {opt} IV ({iv:.4f}) 过低,Z-Score: {z_score:.2f},存在低估买入机会")
            # passorder(50, 1101, ContextInfo.accid, opt, 5, -1, 1, ContextInfo) # 买入开仓

def handlebar(ContextInfo):
    pass

4. 注意事项

  1. 行情数据订阅:进行期权实时交易时,确保在实盘模式下订阅了 Level-2 或实时行情以获取精准盘口报价。
  2. Delta 风险对冲:波动率套利通常需要对冲现货 Delta 风险,确保组合保持 Delta 中性。
  3. 流动性考量:深度虚值或深度实值期权交易量较小,可能会产生较大的买卖价差(Bid-Ask Spread),回测与实盘中应设置合理的滑点。