计算隐含波动率
calculateImpliedVolatility() 计算的是隐含波动率,不是历史波动率。
隐含波动率是根据期权价格和标的价格反推出来的模型波动率;历史波动率通常需要用历史 K 线或收益率序列自己计算。两者名字相近,但含义不同。
app.calculateImpliedVolatility( reqId, contract, optionPrice, underPrice, implVolOptions,)| 参数 | 示例 | 中文说明 |
|---|---|---|
reqId | 97604 | 请求编号,用来匹配回调。 |
contract | AAPL 看涨期权合约 | 必须是具体期权合约。 |
optionPrice | 10.0 | 输入期权价格。 |
underPrice | 300.0 | 输入标的价格。 |
implVolOptions | [] | 通常留空。 |
Python 示例
Section titled “Python 示例”# 给定期权价格 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)和历史波动率的区别
Section titled “和历史波动率的区别”| 项目 | 隐含波动率 | 历史波动率 |
|---|---|---|
| 来源 | 期权价格反推 | 历史价格序列计算 |
| 本页接口 | calculateImpliedVolatility() | 不由该接口直接提供 |
| 主要用途 | 观察市场对未来波动的定价 | 观察过去价格实际波动 |
| 常见输入 | 期权价格、标的价格、期权合约 | 历史 K 线、收益率、窗口长度 |
如果你要计算历史波动率,应先用历史行情接口获取 K 线,再在自己的程序里计算收益率标准差。不要把 calculateImpliedVolatility() 的结果当成历史波动率。
使用可识别的 AAPL 期权合约,calculateImpliedVolatility() 可以返回隐含波动率:
SELECTED_OPTION=symbol=AAPL;expiry=20260615;strike=300.0;right=C;exchange=SMART;tradingClass=AAPLGREEKS=reqId=97604;tickType=53;iv=1.308927;delta=None;gamma=None;vega=None;theta=None;optPrice=10.0;undPrice=300.0这里的重点是:合约有效后,模型计算请求可以返回;如果仍然收到 200,下一步应先确认具体期权合约,而不是调整 optionPrice 或 underPrice。
隐含波动率对期权交易很重要,但它只是模型输入或模型输出之一。实际系统中应同时记录期权合约、期权价格、标的价格、计算时间、回调来源和错误码,避免把不同期权或不同时间点的结果混在一起。