3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在期权交易中,隐含波动率(Implied Volatility, IV)是评估期权价格贵贱的核心指标。利用 QMT(迅投量化终端)提供的 get_option_iv 接口,投资者可以实时获取期权合约的隐含波动率,进而寻找波动率偏斜(Volatility Skew)与均值回归的套利机会。
QMT 提供了便捷的期权 IV 获取及 BSM 模型计算函数:
ContextInfo.get_option_iv()ContextInfo.get_option_iv(optioncode)optioncode - 期权代码,如 '10003280.SHO'float(对应期权的实时隐含波动率)ContextInfo.bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)ContextInfo.bsm_iv(optionType, objectPrices, strikePrice, optionPrice, riskFree, days, dividend)get_option_list 获取同一到期日不同行权价的认购/认沽期权。get_option_iv 获取各合约的实时 IV。#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