它是怎么来的
期权定价模型(比如 Black-Scholes)的输入有股价、行权价、剩余时间、利率和波动率,前四个都是已知的。把市场上实际的期权价格代进去,反推出来的那个波动率,就是隐含波动率。
所以 IV 不是谁预测出来的,而是期权价格本身隐含的信息:期权越贵,IV 越高。
数值怎么读
API 返回的 implied_volatility 是小数形式的年化波动率,0.373 就是 37.3%。粗略的理解:市场预期这只股票一年内价格波动的标准差约为 37.3%。
换算到更短的时间,用 √(天数/365) 缩放。例如 IV 为 37.3% 时,一天的预期波动约为 37.3% × √(1/365) ≈ 2.0%。
同一到期日,IV 为什么不一样
理论上同一只股票、同一到期日的期权,IV 应该相同,实际上并不相同。下面是 2026 年 10 月 19 日 AAPL(股价约 343 美元)10 月 21 日到期的看跌期权:
| 行权价 | 320 | 330 | 340 | 345 |
|---|---|---|---|---|
| 隐含波动率 | 45.5% | 37.8% | 30.3% | 25.8% |
行权价越低(越虚值的看跌期权),IV 越高。这叫波动率偏斜(skew):市场愿意为防范大跌的保护多付钱。把各个行权价的 IV 画成曲线,常见的形状是向下倾斜或两端翘起的"微笑"。
和历史波动率的区别
- 历史波动率:用过去一段时间的股价算出来的,描述已经发生的波动。
- 隐含波动率:从现在的期权价格反推的,反映市场对未来的预期。
IV 明显高于历史波动率,说明期权相对较贵,常见于财报、重大事件之前;事件过后 IV 往往快速回落,叫做"波动率压缩"(IV crush)。
怎么用 API 获取隐含波动率
期权链快照接口 /v3/snapshot/options/{标的} 的每个合约都带 implied_volatility 字段,可以按到期日、行权价、看涨看跌筛选:
import requests
r = requests.get(
"https://marilux.dev/v3/snapshot/options/AAPL",
headers={"Authorization": "Bearer mh_live_your_key"},
params={"expiration_date": "2026-10-21", "contract_type": "put", "limit": 250},
)
for c in r.json()["results"]:
iv = c.get("implied_volatility") # 部分合约没有 IV
print(c["details"]["strike_price"], f"{iv:.1%}" if iv is not None else "-")
深度实值或长时间没有成交的合约算不出可靠的 IV,接口不返回这个字段,读取时要判断是否存在。完整示例见 用 Python 获取美股期权链和希腊值,Vega(IV 变化对价格的影响)见 期权希腊值。