跳转到内容

计算隐含波动率

calculateImpliedVolatility() 计算的是隐含波动率,不是历史波动率。

隐含波动率是根据期权价格和标的价格反推出来的模型波动率;历史波动率通常需要用历史 K 线或收益率序列自己计算。两者名字相近,但含义不同。

app.calculateImpliedVolatility(
reqId,
contract,
optionPrice,
underPrice,
implVolOptions,
)
参数示例中文说明
reqId97604请求编号,用来匹配回调。
contractAAPL 看涨期权合约必须是具体期权合约。
optionPrice10.0输入期权价格。
underPrice300.0输入标的价格。
implVolOptions[]通常留空。
# 给定期权价格 10.0 和标的价格 300.0,反推隐含波动率。
app.calculateImpliedVolatility(
97604,
build_option_contract(),
10.0,
300.0,
[],
)

接收结果:

def tickOptionComputation(self, reqId, tickType, tickAttrib, impliedVol, delta, optPrice, pvDividend, gamma, vega, theta, undPrice):
if reqId == 97604:
print("隐含波动率", impliedVol)
print("模型期权价格", optPrice)
print("模型标的价格", undPrice)
项目隐含波动率历史波动率
来源期权价格反推历史价格序列计算
本页接口calculateImpliedVolatility()不由该接口直接提供
主要用途观察市场对未来波动的定价观察过去价格实际波动
常见输入期权价格、标的价格、期权合约历史 K 线、收益率、窗口长度

如果你要计算历史波动率,应先用历史行情接口获取 K 线,再在自己的程序里计算收益率标准差。不要把 calculateImpliedVolatility() 的结果当成历史波动率。

使用可识别的 AAPL 期权合约,calculateImpliedVolatility() 可以返回隐含波动率:

SELECTED_OPTION=symbol=AAPL;expiry=20260615;strike=300.0;right=C;exchange=SMART;tradingClass=AAPL
GREEKS=reqId=97604;tickType=53;iv=1.308927;delta=None;gamma=None;vega=None;theta=None;optPrice=10.0;undPrice=300.0

这里的重点是:合约有效后,模型计算请求可以返回;如果仍然收到 200,下一步应先确认具体期权合约,而不是调整 optionPriceunderPrice

隐含波动率对期权交易很重要,但它只是模型输入或模型输出之一。实际系统中应同时记录期权合约、期权价格、标的价格、计算时间、回调来源和错误码,避免把不同期权或不同时间点的结果混在一起。