波动率基础:交易世界的脉搏
大家好,欢迎来到我们的波动率课程。我是你们的老朋友,一个在量化交易里摸爬滚打多年的工程师。
今天咱们聊点最基础,但也最核心的东西——波动率。你想想看,做交易这么多年,我们到底在交易什么?价格?趋势?其实说白了,我们交易的是不确定性。而波动率,就是衡量这种不确定性的尺子。
我个人习惯把波动率看作是市场的「心跳」。心跳太快,市场恐慌;心跳太慢,市场死寂。理解了这个,你才算真正摸到了量化交易的门槛。
1. 波动率的定义:它到底是什么?
波动率,英文叫 Volatility,通常用 σ 表示。它衡量的是资产价格在一段时间内的变动幅度。注意,是「幅度」,不是「方向」。涨了50%和跌了50%,在波动率眼里是一样的,都是剧烈波动。
数学上,我们通常用收益率的标准差来定义它。假设我们有 n 天的收盘价,先算出每天的收益率 r_i,然后计算这些收益率的标准差:
import numpy as np
# 假设 prices 是收盘价序列
prices = [100, 102, 101, 105, 107]
returns = np.diff(np.log(prices)) # 对数收益率
volatility = np.std(returns) # 日波动率
print(f"日波动率: {volatility:.4f}")
# 年化波动率(假设252个交易日)
annual_vol = volatility * np.sqrt(252)
print(f"年化波动率: {annual_vol:.4f}")
嗯,这里要注意:我们通常用对数收益率,而不是简单收益率。为什么?因为对数收益率在时间上可加,而且更符合正态分布的假设。我在项目中遇到过有人直接用价格差算波动率,结果回测时发现策略表现忽好忽坏——其实就是这个细节没处理好。
2. 历史波动率 vs 隐含波动率
这两个概念,是波动率世界的「阴阳两面」。一个看过去,一个看未来。
2.1 历史波动率(HV)
历史波动率,就是根据过去的数据算出来的波动率。比如上面那段代码算出来的,就是历史波动率。它告诉我们「过去市场有多动荡」。
计算历史波动率时,有几个参数需要你拍脑袋决定:
- 窗口长度: 用过去20天?还是60天?我个人习惯用20天(约一个月),因为能较快反映市场变化。
- 数据频率: 日数据?还是分钟数据?高频策略用分钟数据,中低频用日数据就够了。
- 年化因子: 美股用252,A股用242,加密货币用365。别搞混了。
我曾经犯过一个低级错误:用252天年化因子去算比特币的波动率。结果算出来的年化波动率高达200%多,吓了我一跳。后来才意识到,加密货币全年无休,应该用365。
2.2 隐含波动率(IV)
隐含波动率,是从期权价格里反推出来的。它反映的是「市场预期未来会怎么波动」。
怎么反推?用期权定价模型,比如 Black-Scholes 模型。给定期权价格、行权价、到期时间、无风险利率,反解出波动率 σ:
from scipy.optimize import brentq
import numpy as np
from scipy.stats import norm
def bs_call_price(S, K, T, r, sigma):
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):
# 用二分法反解隐含波动率
f = lambda sigma: bs_call_price(S, K, T, r, sigma) - market_price
return brentq(f, 0.01, 5.0) # 波动率范围 1% 到 500%
# 示例:假设当前股价100,行权价105,到期30天,期权价格2.5
S, K, T, r = 100, 105, 30/365, 0.03
market_price = 2.5
iv = implied_volatility(market_price, S, K, T, r)
print(f"隐含波动率: {iv*100:.2f}%")
3. 波动率微笑与偏斜
如果你把不同行权价的隐含波动率画出来,会发现它不是一个常数,而是一条曲线。这就是波动率微笑(Volatility Smile)。
为什么会有微笑?因为市场并不完全符合 Black-Scholes 模型的假设。真实世界里,极端行情发生的概率比模型预测的要高。所以,深度虚值和深度实值的期权,隐含波动率往往更高。
而偏斜(Skew)则是微笑的不对称版本。在股票市场里,通常看跌期权的隐含波动率高于看涨期权——因为市场更害怕暴跌。这就是所谓的「波动率偏斜」。
我画了一张图,帮你直观理解:
你看,蓝色虚线是微笑,红色实线是偏斜。在真实市场里,偏斜更常见。尤其是美股,每次财报季前,看跌期权的IV会明显高于看涨期权。
4. 波动率在交易中的作用
说了这么多理论,波动率到底能帮我们做什么?我总结了几点:
- 风险管理: 波动率直接决定了你的仓位大小。波动率越高,仓位应该越小。我习惯用「波动率调整仓位」——比如,当VIX低于15时,我可以满仓;当VIX高于30时,我只敢半仓。
- 期权定价: 没有波动率,期权就没法定价。你看到的每一个期权价格,背后都隐含了一个波动率假设。
- 择时信号: 当历史波动率远低于隐含波动率时,说明市场可能低估了未来的波动——这时候做多波动率(买跨式期权)可能是个好主意。
- 策略构建: 很多量化策略的核心就是预测波动率。比如波动率均值回归策略、波动率趋势策略等。
我记得有一次,我在做跨式期权策略时,发现历史波动率只有12%,但隐含波动率已经飙到25%。我当时判断市场过度恐慌,于是卖出了跨式期权。结果一周后,波动率果然回落,我稳稳赚了一笔。这就是波动率在交易中的实战应用。
好了,今天的基础内容就到这里。波动率的世界很深,但只要你掌握了这些核心概念,后面的路就好走了。记住,做量化交易,别跟市场较劲,要跟波动率做朋友。