2. 隐含波动率与历史波动率:IV与HV的定义、计算方式、两者关系及背离信号
波动率交易里,有两个最基础也最绕不开的概念——隐含波动率(IV)和历史波动率(HV)。很多人刚接触时容易搞混,觉得都是波动率,有什么区别?
我刚开始做期权交易那会儿,也犯过这个错。有一次我盯着一个期权价格,觉得它太贵了,就做空波动率。结果市场一波动,IV直接飙上天,我亏得那叫一个惨。后来我才明白:IV是市场情绪,HV是历史事实。两者根本不是一回事。
今天我们就来彻底讲清楚这两个概念。你想想看,搞懂了它们,你就能看懂市场在「赌」什么,也能找到交易机会。
2.1 历史波动率(HV)—— 过去的真实波动
历史波动率,说白了就是过去一段时间里,资产价格实际波动的剧烈程度。它反映的是「已经发生的事」。
计算方式其实不复杂。我习惯用对数收益率的标准差来算,然后年化一下。具体步骤是这样的:
- 取过去N天的收盘价,计算每日对数收益率:
ln(P_t / P_{t-1}) - 计算这些收益率的标准差
- 乘以年化因子(比如日数据就乘以√252)
嗯,这里要注意:N的选择很关键。我个人习惯用20天(约一个月)和60天(一个季度)两个窗口。20天HV对短期波动敏感,60天HV更平滑,能看出趋势。
给你看个代码示例,这是我常用的计算方式:
import numpy as np
import pandas as pd
def calc_hv(price_series, window=20, annual_factor=252):
"""
计算历史波动率
price_series: 收盘价序列
window: 滚动窗口天数
"""
log_returns = np.log(price_series / price_series.shift(1))
hv = log_returns.rolling(window=window).std() * np.sqrt(annual_factor)
return hv
# 使用示例
prices = pd.Series([100, 102, 101, 105, 103, ...]) # 你的价格数据
hv_20 = calc_hv(prices, window=20)
hv_60 = calc_hv(prices, window=60)
2.2 隐含波动率(IV)—— 市场在赌什么
隐含波动率就完全不一样了。它不是算出来的,而是从期权价格里反推出来的。
怎么理解?你把期权价格想象成一个黑箱。你知道标的资产价格、行权价、剩余时间、无风险利率,这些都能从市场上拿到。唯一不知道的就是波动率。那好,我们把期权价格代入Black-Scholes模型,反解出那个让模型价格等于市场价格的波动率——这就是IV。
说白了,IV是市场对未来波动的一致预期。它反映了市场情绪:恐慌时IV飙升,平静时IV回落。
计算IV没有解析解,得用数值方法。我常用牛顿迭代法:
from scipy.stats import norm
from scipy.optimize import brentq
def bs_call_price(S, K, T, r, sigma):
"""Black-Scholes 看涨期权定价"""
d1 = (np.log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
d2 = d1 - sigma*np.sqrt(T)
return S*norm.cdf(d1) - K*np.exp(-r*T)*norm.cdf(d2)
def implied_volatility(market_price, S, K, T, r):
"""用二分法反推隐含波动率"""
def f(sigma):
return bs_call_price(S, K, T, r, sigma) - market_price
try:
return brentq(f, 0.01, 5.0) # 在0.01到5.0之间找根
except:
return np.nan
2.3 IV与HV的关系 —— 预期 vs 现实
搞清楚了定义,我们来看看两者的关系。其实就一句话:IV是市场对未来的赌注,HV是已经发生的现实。
正常情况下,IV会略高于HV。为什么?因为市场总是为不确定性支付溢价。就像买保险一样,你付的保费总是略高于预期损失。
但两者之间有个重要的关系:均值回归。当IV远高于HV时,说明市场过度恐慌,IV大概率会回落。反过来,当IV远低于HV时,说明市场过于乐观,IV大概率会上升。
我画了一张图,帮你直观理解这个关系:
2.4 背离信号 —— 交易机会在哪里
好了,重点来了。IV和HV的背离,就是我们的交易信号。
什么叫背离?就是IV和HV的走势出现明显分化。比如HV在下降(实际波动在减小),但IV在上升(市场预期波动在增大)。或者反过来。
我总结了几种常见的背离模式:
| 背离类型 | HV走势 | IV走势 | 市场含义 | 交易策略 |
|---|---|---|---|---|
| 恐慌背离 | 下降或平稳 | 快速上升 | 市场过度恐慌,预期波动远大于实际 | 做空波动率(卖出期权) |
| 乐观背离 | 上升或平稳 | 快速下降 | 市场过于乐观,低估了实际波动 | 做多波动率(买入期权) |
| 趋势背离 | 持续上升 | 持续下降 | 趋势可能反转,市场预期错误 | 谨慎观望或反向操作 |
核心逻辑:IV最终会向HV回归。当两者背离时,就是交易波动率回归的机会。但要注意——背离可能持续很长时间,不要急着入场。
我记得有一次做原油期权交易,HV已经降到20%了,但IV还在35%以上。我当时觉得背离太明显了,就做空了波动率。结果呢?中东局势突然紧张,IV直接飙到50%。我差点爆仓。
所以我的经验是:背离信号要结合基本面来看。如果市场恐慌是有原因的(比如地缘政治、财报季),那IV可能还会继续涨。这时候做空波动率就是接飞刀。
2.5 实战中的量化指标
光看图形还不够,我们需要量化指标来辅助判断。我常用两个指标:
1. IV-HV 差值
直接计算IV减去HV。差值越大,说明市场越恐慌。我一般设两个阈值:
- 差值 > 10%:严重背离,考虑做空波动率
- 差值 < -5%:反向背离,考虑做多波动率
2. IV/HV 比率
用IV除以HV。这个比率更稳定,不受绝对数值影响。我习惯用1.2和0.8作为阈值:
- 比率 > 1.2:市场过度恐慌
- 比率 < 0.8:市场过度乐观
def calc_divergence_signal(iv_series, hv_series, threshold_ratio=1.2):
"""
计算背离信号
返回: 1=做空波动率, -1=做多波动率, 0=无信号
"""
ratio = iv_series / hv_series
if ratio > threshold_ratio:
return 1 # IV过高,做空波动率
elif ratio < 1/threshold_ratio:
return -1 # IV过低,做多波动率
else:
return 0 # 无信号
好了,关于IV和HV的核心内容就这些。记住一句话:IV是市场的心,HV是市场的脚。心跑得太快,脚迟早会跟上。反过来,脚跑得太快,心也会追上来。找到两者背离的时刻,就是找到交易机会的时刻。
嗯,最后提醒一句:背离信号不是万能的。它只是一个概率优势,不是确定性。我见过太多人因为背离信号而重仓,结果被市场打脸。所以,仓位管理永远比信号本身更重要。