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波动更大(因为时间敏感)。

我一般会关注三个特征:

  1. 偏斜(Skew):不同行权价的IV差异,反映市场对尾部风险的定价
  2. 期限结构(Term Structure):不同到期日的IV差异,反映事件预期
  3. 微笑(Smile):平值附近IV最低,两边高,这是经典形态

1.6 知识体系总览

下面这张图,把波动率的整个知识框架串起来了:

波动率知识体系 历史波动率 (HV) 隐含波动率 (IV) vs 收益率标准差 BS模型反推 波动率曲面 滞后性 均值回归特性 偏斜 (Skew) 期限结构 波动率均值回归 波动率套利 事件驱动交易 核心:HV是过去,IV是预期,差值即机会

1.7 实战中怎么用?

讲完理论,说点实际的。我常用的几个场景:

  • IV > HV 且差值较大:市场可能过度恐慌,考虑卖出期权收波动率溢价
  • IV < HV 且差值较大:市场可能过于乐观,考虑买入期权赌波动率回升
  • IV 曲面异常:比如某一行权价IV明显偏高,可能存在套利机会

一个小技巧:别只看绝对值,要看百分位。我习惯把当前IV放在过去1年的分布里看,如果处于90%分位以上,那大概率是情绪高点。

好了,波动率的基础就聊到这儿。记住一句话:波动率不是风险本身,而是风险的定价。理解了这一点,后面的策略构建才有根基。


专注资料整理