3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在期权量化交易中,Black-Scholes (BS) 模型倒推是计算隐含波动率(IV)最经典的方法。然而,BS模型存在一些严格的假设(如波动率恒定、标的资产服从几何布朗运动、仅限欧式期权等),这在实际市场中往往不成立(例如波动率微笑现象)。
如果不使用BS模型倒推,业界和学术界还有以下几种主流的计算或估算期权隐含波动率的方法:
这是目前最著名且应用最广的非BS模型方法,CBOE的VIX指数就是基于此方法计算的。
BS模型主要针对欧式期权,而国内的商品期权大多是美式期权(可以在到期前任意时间行权)。
在 JoinQuant 平台上,你可以获取期权行情数据,并利用 Python 强大的科学计算库(如 scipy, numpy)来实现上述算法。
以计算无模型隐含波动率 (MFIV / VIX算法) 为例的简要思路:
import numpy as np
import pandas as pd
from jqdata import *
def calculate_mfiv(current_date, underlying_symbol, expire_date):
# 1. 获取特定到期日的所有期权合约
# 注意:这里需要根据JoinQuant API获取期权合约列表
# options_list = get_options_by_expire_date(underlying_symbol, expire_date)
# 2. 获取这些期权在 current_date 的收盘价或盘口中间价
# prices = get_price(options_list, end_date=current_date, count=1, fields=['close'])
# 3. 筛选出虚值期权 (OTM)
# 找到平值期权(ATM)的行权价 K0
# 对于 K < K0,使用看跌期权(Put)价格
# 对于 K > K0,使用看涨期权(Call)价格
# 对于 K = K0,使用 Call 和 Put 价格的平均值
# 4. 应用 VIX 积分公式
# Variance = (2 / T) * sum( (delta_K / K^2) * e^(R*T) * Q(K) ) - (1 / T) * (F / K0 - 1)^2
# 其中 Q(K) 是期权价格,T 是年化剩余期限,R 是无风险利率
# 5. IV = sqrt(Variance)
pass
总结:
如果你交易的是欧式期权(如50ETF期权),且不想用BS,可以尝试计算 MFIV 来获取整体波动率曲面的信息。
如果你交易的是美式期权(如大多数商品期权),强烈建议使用 二叉树模型 或 Bjerksund-Stensland模型 配合数值求根法来倒推,这比BS模型准确得多。