1. 波动率基础:什么是波动率?历史波动率与隐含波动率的区别
做量化交易这些年,我越来越觉得波动率是个有意思的东西。它不像价格那么直观,但恰恰是很多策略赚钱的核心。今天咱们就把它聊透。
1.1 波动率到底是什么?
说白了,波动率衡量的是资产价格的不确定性。你想想看,一只股票今天涨5%,明天跌3%,后天又涨2%——这种上蹿下跳的程度,就是波动率。
数学上,波动率通常用收益率的标准差来表示。但别被公式吓到,核心就一句话:波动率越大,价格越不老实。
核心定义:波动率是资产收益率在单位时间内的标准差,反映价格变动的剧烈程度。
我个人习惯把波动率分成两类:一类是已经发生的,叫历史波动率;另一类是市场预期的,叫隐含波动率。这两者差别很大,咱们一个一个说。
1.2 历史波动率(HV)—— 后视镜里的世界
历史波动率,就是拿过去的价格数据算出来的波动率。它告诉你:过去这段时间,价格到底有多能折腾。
计算方式其实不复杂:
import numpy as np
import pandas as pd
def historical_volatility(prices, window=20, trading_days=252):
# 计算对数收益率
log_returns = np.log(prices / prices.shift(1))
# 滚动标准差
rolling_std = log_returns.rolling(window=window).std()
# 年化
hv = rolling_std * np.sqrt(trading_days)
return hv
# 举个实际例子
prices = pd.Series([100, 102, 99, 103, 101, 105, 98, 106])
hv = historical_volatility(prices, window=5)
print(f"历史波动率: {hv.iloc[-1]:.2%}")
嗯,这里要注意几个坑:
- 窗口期怎么选? 20天是行业惯例,但做事件驱动策略时我常用5天
- 年化因子用252还是365? 美股用252,A股用242,加密货币我建议用365
- 对数收益率 vs 简单收益率? 对数收益率更符合正态分布假设,我一般用对数
我的经验:历史波动率有个天然缺陷——它只看过去。2019年我做过一个回测,用HV做信号效果很好,结果2020年3月市场暴跌,HV完全没预警。为什么?因为历史不会简单重复。
1.3 隐含波动率(IV)—— 市场的预期投票
隐含波动率就不一样了。它不是算出来的,而是从期权价格里反推出来的。
你想想看,期权价格里已经包含了市场对未来波动率的预期。我们用Black-Scholes模型,把期权价格、行权价、到期时间、无风险利率这些已知量代入,反解出来的那个波动率,就是IV。
from scipy.stats import norm
from scipy.optimize import brentq
def implied_volatility(option_price, S, K, T, r, option_type='call'):
"""从期权价格反推隐含波动率"""
def bs_price(sigma):
d1 = (np.log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
d2 = d1 - sigma*np.sqrt(T)
if option_type == 'call':
price = S*norm.cdf(d1) - K*np.exp(-r*T)*norm.cdf(d2)
else:
price = K*np.exp(-r*T)*norm.cdf(-d2) - S*norm.cdf(-d1)
return price - option_price
# 用二分法求解
try:
iv = brentq(bs_price, 0.01, 5.0)
except:
iv = np.nan
return iv
# 实际使用
iv = implied_volatility(option_price=5.2, S=100, K=100, T=30/365, r=0.03)
print(f"隐含波动率: {iv:.2%}")
我曾经踩过的坑:用BS模型反推IV时,如果期权是深度实值或深度虚值,结果会非常不稳定。有一次我推出来IV是200%,吓一跳,后来发现是流动性太差导致的定价偏差。所以我现在都会加个过滤:只交易平值附近的期权。
1.4 HV vs IV —— 核心区别在哪?
这两者的关系,我打个比方你就明白了:
- 历史波动率 = 后视镜,告诉你路况怎么样
- 隐含波动率 = 天气预报,告诉你接下来可能下雨
它们之间的差值,就是交易机会所在。
| 维度 | 历史波动率 (HV) | 隐含波动率 (IV) |
|---|---|---|
| 数据来源 | 历史价格 | 期权市场价格 |
| 计算方式 | 收益率标准差 | 从BS模型反推 |
| 代表含义 | 过去实际波动 | 未来预期波动 |
| 交易应用 | 均值回归、趋势跟踪 | 波动率套利、事件交易 |
| 常见偏差 | 滞后性 | 情绪溢价 |
1.5 波动率曲面 —— 别只看一个数
很多新手只看一个IV值,这是个大问题。实际上,不同行权价、不同到期日的期权,IV是不一样的。把这些IV画出来,就形成了波动率曲面。
关键认知:波动率曲面不是平的。虚值看跌期权的IV通常更高(因为市场怕暴跌),近月合约的IV波动更大(因为时间敏感)。
我一般会关注三个特征:
- 偏斜(Skew):不同行权价的IV差异,反映市场对尾部风险的定价
- 期限结构(Term Structure):不同到期日的IV差异,反映事件预期
- 微笑(Smile):平值附近IV最低,两边高,这是经典形态
1.6 知识体系总览
下面这张图,把波动率的整个知识框架串起来了:
1.7 实战中怎么用?
讲完理论,说点实际的。我常用的几个场景:
- IV > HV 且差值较大:市场可能过度恐慌,考虑卖出期权收波动率溢价
- IV < HV 且差值较大:市场可能过于乐观,考虑买入期权赌波动率回升
- IV 曲面异常:比如某一行权价IV明显偏高,可能存在套利机会
一个小技巧:别只看绝对值,要看百分位。我习惯把当前IV放在过去1年的分布里看,如果处于90%分位以上,那大概率是情绪高点。
好了,波动率的基础就聊到这儿。记住一句话:波动率不是风险本身,而是风险的定价。理解了这一点,后面的策略构建才有根基。