波动率的度量与计算:历史波动率、隐含波动率、波动率锥、波动率期限结构
各位同学,咱们今天聊点实在的。波动率这东西,说白了就是市场的「心跳」。做商品期货交易,不懂波动率,就像开船不看天气预报——迟早要翻。
我个人习惯把波动率分成两类:已经发生的和市场预期的。前者叫历史波动率,后者叫隐含波动率。嗯,咱们一个一个来拆解。
一、历史波动率:过去的价格波动有多大?
历史波动率(Historical Volatility, HV)就是看过去一段时间,价格上蹿下跳的幅度。计算方式其实不复杂,我当年刚入行时手算过,后来全交给代码了。
标准计算步骤:
- 取每日收盘价,计算对数收益率:
r_i = ln(P_i / P_{i-1}) - 计算这些收益率的标准差
- 乘以年化因子(√252,因为一年约252个交易日)
核心公式:
年化历史波动率 = 收益率标准差 × √252
这里有个坑,我踩过。用简单收益率还是对数收益率?一定要用对数收益率。为什么?因为对数收益率在时间上可加,而且更符合正态分布假设。你想想看,价格跌到0以下是不可能的,对数收益率天然解决了这个问题。
# Python代码:计算20日历史波动率
import numpy as np
import pandas as pd
def calc_hv(prices, window=20):
log_returns = np.log(prices / prices.shift(1))
hv = log_returns.rolling(window).std() * np.sqrt(252)
return hv
# 使用示例
df['HV_20'] = calc_hv(df['close'], 20)
我的经验:窗口期选多少?短线交易用10-20日,中线用30-60日。我曾经用5日窗口做螺纹钢,结果被假突破坑惨了——太敏感了,全是噪音。
二、隐含波动率:市场在赌什么?
隐含波动率(Implied Volatility, IV)是期权价格里「反推」出来的波动率。说白了,就是市场参与者对未来波动的一致预期。
计算隐含波动率没有解析解,只能用数值方法。最常用的是牛顿-拉夫森法。我刚开始写这个算法时,迭代总不收敛,后来发现是初始值设得太离谱。
# 牛顿法求隐含波动率(简化版)
from scipy.stats import norm
import math
def implied_vol(S, K, T, r, market_price, is_call=True):
# 初始猜测
sigma = 0.3
for i in range(100):
d1 = (math.log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*math.sqrt(T))
d2 = d1 - sigma*math.sqrt(T)
if is_call:
price = S*norm.cdf(d1) - K*math.exp(-r*T)*norm.cdf(d2)
vega = S*norm.pdf(d1)*math.sqrt(T)
else:
price = K*math.exp(-r*T)*norm.cdf(-d2) - S*norm.cdf(-d1)
vega = S*norm.pdf(d1)*math.sqrt(T)
diff = price - market_price
if abs(diff) < 1e-6:
return sigma
sigma = sigma - diff / vega
return sigma
避坑指南:我曾经在计算豆粕期权IV时,发现结果异常大。排查了半天,原来是忘记把期权剩余天数转成年化——T的单位必须是年!
三、波动率锥:把波动率「立起来」看
波动率锥(Volatility Cone)是我个人非常喜欢的一个工具。它把不同期限的历史波动率和隐含波动率放在一起比较,像一座锥形的山。
为什么要做这个?因为你可以一眼看出当前隐含波动率是贵了还是便宜了。
构建方法:
- 计算不同持有期(5日、10日、20日、60日等)的历史波动率
- 对每个期限,计算历史波动率的分位数(25%、50%、75%)
- 把当前隐含波动率画上去,对比位置
实战判断:
- 隐含波动率在75%分位数以上 → 期权偏贵,考虑卖出
- 隐含波动率在25%分位数以下 → 期权偏便宜,考虑买入
你看这张图,当前隐含波动率(橙色点)在20日这个期限上,明显高于75%分位数。这意味着什么?市场对短期波动预期过高,这时候卖出期权收权利金,胜算很大。
四、波动率期限结构:不同月份的波动率不一样
波动率期限结构(Volatility Term Structure),就是看不同到期月份的隐含波动率变化趋势。说白了,远月合约和近月合约的波动率通常不一样。
常见的形态:
| 形态 | 特征 | 含义 |
|---|---|---|
| 正向市场(Contango) | 远月波动率 > 近月波动率 | 市场预期未来不确定性增加 |
| 反向市场(Backwardation) | 远月波动率 < 近月波动率 | 短期风险事件驱动,长期回归平稳 |
| 平坦(Flat) | 各期限波动率接近 | 市场预期稳定,无明显方向 |
我的实战经验:2022年原油期货,近月波动率飙到60%以上,远月只有30%。典型的反向市场。我当时判断短期恐慌过度,选择卖出近月期权,赚了一波波动率回归的钱。
为什么会形成期限结构?说白了,就是市场对「黑天鹅」的定价。近月合约受短期事件影响大,远月合约更多反映长期基本面。
五、四个指标怎么配合使用?
嗯,到这里你可能有点晕——这四个东西到底怎么用?我总结一个实战框架:
- 先用历史波动率判断当前市场处于「高波动」还是「低波动」环境
- 再用波动率锥看隐含波动率在历史分位中的位置
- 结合期限结构判断市场情绪是短期恐慌还是长期担忧
- 最后用隐含波动率做具体期权的定价和交易决策
一句话总结:历史波动率告诉你「过去发生了什么」,隐含波动率告诉你「市场在赌什么」,波动率锥告诉你「现在贵不贵」,期限结构告诉你「市场怕什么」。
这四个工具组合起来,基本能覆盖波动率交易的大部分场景。我这些年做商品期货波动率策略,核心就是围绕这四样东西转。
好了,这一章的内容就到这。记住,波动率不是数字游戏,它是市场情绪的量化表达。下次你看到一根大阳线或大阴线,别急着追,先算算波动率——说不定机会就在里面。
公众号:蓝海资料掘金营,微信deep3321