1. 波动率基础:什么是波动率?历史波动率与隐含波动率的定义与区别
做量化交易这些年,我见过太多人一上来就盯着价格看。其实真正懂行的人,第一眼看的是波动率。为什么?因为价格是表象,波动率才是灵魂。
说白了,波动率就是资产价格上下跳动的幅度。你想想看,一只股票一天涨跌1%,和一天涨跌5%,背后的交易逻辑完全不同。前者可能是正常波动,后者可能出了大事。
1.1 波动率的数学定义
从数学上讲,波动率是收益率的标准差。嗯,这里要注意,我们用的是对数收益率,不是简单收益率。
import numpy as np
# 假设我们有一串收盘价
prices = [100, 102, 101, 105, 107, 106, 110]
# 计算对数收益率
log_returns = np.diff(np.log(prices))
# 计算波动率(日度)
daily_vol = np.std(log_returns, ddof=1)
# 年化波动率
annual_vol = daily_vol * np.sqrt(252)
print(f"日度波动率: {daily_vol:.4f}")
print(f"年化波动率: {annual_vol:.4f}")
我个人习惯用年化波动率来交流,因为不同时间频率的数据可以统一比较。比如日度数据乘以√252,周度数据乘以√52,月度数据乘以√12。
核心公式:
年化波动率 = 日度波动率 × √252
这里的252是A股一年的交易日数,美股用252,港股用250左右。
1.2 历史波动率:回头看
历史波动率,就是拿过去的数据算出来的波动率。它告诉你「过去发生了什么」。
我在项目中遇到过一个问题:用30天还是60天的窗口算历史波动率?这其实没有标准答案。短窗口反应快但噪音大,长窗口平滑但滞后。
我的经验:
做短线策略用20天窗口,做中线用60天,做长线用120天。没有绝对的对错,关键是要和你的策略周期匹配。
历史波动率的计算步骤很简单:
- 取过去N天的收盘价
- 计算每日对数收益率
- 计算这些收益率的标准差
- 年化处理
但这里有个坑——你用什么频率的数据?日线、小时线、还是分钟线?我曾经用5分钟线算波动率,结果发现噪音太大,反而不如日线好用。
1.3 隐含波动率:向前看
隐含波动率就不一样了。它是从期权价格里反推出来的波动率。说白了,就是市场「认为」未来会波动成什么样。
为什么叫「隐含」?因为它藏在期权价格里,你看不到,得用模型把它挖出来。
from scipy.stats import norm
from scipy.optimize import brentq
def black_scholes_call(S, K, T, r, sigma):
"""BS模型计算看涨期权价格"""
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 black_scholes_call(S, K, T, r, sigma) - market_price
try:
return brentq(f, 0.01, 2.0)
except:
return np.nan
# 示例:假设期权市价为5.2,标的现价100,行权价105,剩余30天,无风险利率3%
S, K, T, r = 100, 105, 30/365, 0.03
market_price = 5.2
iv = implied_volatility(market_price, S, K, T, r)
print(f"隐含波动率: {iv:.2%}")
注意:
隐含波动率不是真实波动率,它是市场情绪的反映。有时候市场恐慌,隐含波动率会飙升,但实际波动可能没那么大。
1.4 两者的核心区别
我把它们的区别整理成了一张表,这样更直观:
| 维度 | 历史波动率 | 隐含波动率 |
|---|---|---|
| 数据来源 | 历史价格数据 | 期权市场价格 |
| 时间方向 | 向后看(过去) | 向前看(未来) |
| 计算方式 | 直接计算标准差 | 通过期权定价模型反推 |
| 反映内容 | 实际发生的波动 | 市场预期的波动 |
| 主要用途 | 风险评估、回测 | 定价、套利、情绪判断 |
你想想看,如果历史波动率是20%,隐含波动率是30%,这意味着什么?市场预期未来会比过去更动荡。这时候做波动率套利就有机会了。
1.5 为什么波动率这么重要?
我记得刚入行时,带我的老交易员说过一句话:「价格会骗人,但波动率不会。」当时不太理解,后来做多了才明白。
举个例子:某只股票从100涨到110,看起来是好事。但如果它的波动率从20%飙到了50%,说明这波上涨很不稳定,随时可能回调。只看价格的人会追高,看波动率的人会谨慎。
波动率套利的本质,就是利用历史波动率和隐含波动率之间的差异。当隐含波动率明显高于历史波动率时,你可以卖出期权赚取溢价;反过来,当隐含波动率被低估时,你可以买入期权。
核心逻辑:
波动率套利 = 发现「预期」与「现实」的偏差
隐含波动率是市场预期,历史波动率是现实参考
两者差距越大,套利空间越大
1.6 知识体系总览
下面这张图是我自己画的,把波动率的核心知识串起来了。你看一遍就能明白整个框架:
这张图把波动率分成了两大块:左边是历史波动率,右边是隐含波动率。它们各自的计算方式、时间方向、应用场景都不同。但最终都指向同一个目标——找到套利机会。
一个小技巧:
刚开始做波动率分析时,别急着上复杂模型。先把历史波动率和隐含波动率画在一张图上,看看它们的差值。差值大的地方,往往就是机会所在。
好了,波动率的基础就讲到这里。记住一句话:波动率不是数字,是市场的呼吸。读懂它,你就能听懂市场在说什么。