一、波动率基础:波动率的定义、历史波动率与隐含波动率、波动率的金融意义
1.1 波动率到底是什么?
说实话,我刚入行那会儿,觉得波动率就是个数字。涨得快就大,跌得狠也大。后来做了几年期权交易,才真正理解——波动率是市场的脉搏。
波动率的定义其实很简单:它衡量资产价格在单位时间内的变动幅度。数学上,我们通常用收益率的标准差来表示。嗯,这里要注意,是收益率的标准差,不是价格本身的标准差。为什么?因为价格序列不平稳,收益率相对稳定。
核心公式:
年化波动率 = 日收益率标准差 × √252
这里的252,是A股一年的实际交易天数。美股用252,港股用252,外汇市场用365。
我个人习惯用对数收益率,而不是简单收益率。原因很简单:对数收益率可加,时间序列分析更方便。你在做回测时,用对数收益率算出来的波动率,更符合正态分布的假设。
1.2 历史波动率:回头看
历史波动率,说白了就是「过去的价格波动有多大」。我们拿过去N天的数据,算一下标准差,再年化一下,就得到了。
这里有个坑,我曾经踩过——窗口长度的选择。用20天还是60天?用1年还是3年?
避坑指南:
我曾经用30天窗口算历史波动率,结果遇到财报季,波动率突然飙升,策略直接爆仓。后来我改用加权移动平均,给近期数据更高权重,效果好了很多。
常见的计算方式有两种:
- 简单移动平均(SMA):所有数据权重相同。计算简单,但对突发事件反应慢。
- 指数加权移动平均(EWMA):近期数据权重更大。反应灵敏,但参数λ需要调优。
来看一段Python代码,我平时就是这么写的:
import numpy as np
import pandas as pd
def historical_volatility(prices, window=20, method='sma'):
"""
计算历史波动率
prices: 价格序列
window: 窗口大小
method: 'sma' 或 'ewma'
"""
log_returns = np.log(prices / prices.shift(1))
if method == 'sma':
vol = log_returns.rolling(window).std() * np.sqrt(252)
elif method == 'ewma':
vol = log_returns.ewm(span=window).std() * np.sqrt(252)
return vol.dropna()
你想想看,历史波动率最大的问题是什么?它假设过去会重复。但市场不会简单重复,只会押韵。所以历史波动率只能作为参考,不能作为交易依据。
1.3 隐含波动率:向前看
隐含波动率就完全不一样了。它不是算出来的,是「反推」出来的。
怎么反推?你把期权市场价格代入Black-Scholes模型,反解出波动率。这个波动率,就是市场对未来波动的一致预期。
个人经验:
我在做波动率套利时,最关注的就是隐含波动率和历史波动率的差值。差值越大,套利空间越大。但要注意,隐含波动率往往比历史波动率高——因为市场总是为不确定性买单。
隐含波动率有几个特点:
- 前瞻性:反映市场对未来30天(或对应期限)的预期
- 情绪指标:恐慌时飙升,平静时回落
- 期限结构:不同到期日的隐含波动率不同,形成曲线
计算隐含波动率,我一般用牛顿迭代法:
from scipy.stats import norm
from scipy.optimize import brentq
def implied_volatility(price, S, K, T, r, option_type='call'):
"""
计算隐含波动率
price: 期权市场价格
S: 标的资产价格
K: 行权价
T: 剩余期限(年)
r: 无风险利率
"""
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':
return S*norm.cdf(d1) - K*np.exp(-r*T)*norm.cdf(d2)
else:
return K*np.exp(-r*T)*norm.cdf(-d2) - S*norm.cdf(-d1)
# 用brentq方法求解
try:
iv = brentq(lambda x: bs_price(x) - price, 0.01, 5.0)
return iv
except:
return np.nan
嗯,这里要注意。牛顿迭代法有时候会不收敛,尤其是深度实值或深度虚值的期权。我建议用brentq方法,更稳定。
1.4 波动率的金融意义
波动率在金融世界里,地位可不一般。它不只是个统计量,更是:
| 角色 | 意义 | 实际应用 |
|---|---|---|
| 风险度量 | 衡量资产的不确定性 | VaR计算、风险预算 |
| 定价核心 | 期权价格的核心变量 | BS模型、波动率曲面 |
| 情绪指标 | 反映市场恐慌/贪婪 | VIX指数、波动率指数 |
| 交易标的 | 波动率本身可以交易 | 波动率期货、期权、ETF |
我举个例子。2020年3月,新冠疫情引发全球恐慌。标普500的VIX指数飙升至82.69,创历史新高。那时候,隐含波动率比历史波动率高出好几倍。如果你做多波动率,那一波能赚翻。
但反过来,2023年市场相对平稳,VIX长期在15以下。做空波动率的策略就表现很好。说白了,波动率交易就是赌市场的「情绪」。
1.5 知识体系总览
下面这张图,是我自己整理的波动率基础框架。你看一眼,就能明白这章讲了什么:
这张图把波动率分成了三条主线。左边是历史波动率,中间是隐含波动率,右边是金融意义。三者相互关联,但又各有侧重。
我个人觉得,理解波动率的关键在于:它既是风险,也是机会。风险来自不确定性,机会来自定价偏差。你想想看,如果市场总是有效的,那波动率交易就没得做了。但市场不总是有效的,这就是我们的机会。
核心要点回顾:
- 波动率 = 收益率的标准差,年化时乘以√252
- 历史波动率看过去,隐含波动率看未来
- 隐含波动率是市场情绪的「温度计」
- 波动率本身可以交易,是独立的资产类别
好了,波动率的基础就讲到这里。记住一句话:波动率不是敌人,而是朋友。理解它,你就能在市场中找到属于自己的优势。