波动率基础:交易世界的脉搏

大家好,欢迎来到我们的波动率课程。我是你们的老朋友,一个在量化交易里摸爬滚打多年的工程师。

今天咱们聊点最基础,但也最核心的东西——波动率。你想想看,做交易这么多年,我们到底在交易什么?价格?趋势?其实说白了,我们交易的是不确定性。而波动率,就是衡量这种不确定性的尺子。

我个人习惯把波动率看作是市场的「心跳」。心跳太快,市场恐慌;心跳太慢,市场死寂。理解了这个,你才算真正摸到了量化交易的门槛。

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}")

嗯,这里要注意:我们通常用对数收益率,而不是简单收益率。为什么?因为对数收益率在时间上可加,而且更符合正态分布的假设。我在项目中遇到过有人直接用价格差算波动率,结果回测时发现策略表现忽好忽坏——其实就是这个细节没处理好。

核心要点: 波动率是收益率的标准差,不是价格的标准差。年化时记得乘以 sqrt(252)。

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}%")
避坑指南: 隐含波动率不是「真实波动率」,它是市场情绪的投影。当市场恐慌时,IV会飙升;当市场平静时,IV会回落。我曾经在2020年3月看到标普500的VIX指数冲到80以上,那真是活久见。

3. 波动率微笑与偏斜

如果你把不同行权价的隐含波动率画出来,会发现它不是一个常数,而是一条曲线。这就是波动率微笑(Volatility Smile)。

为什么会有微笑?因为市场并不完全符合 Black-Scholes 模型的假设。真实世界里,极端行情发生的概率比模型预测的要高。所以,深度虚值和深度实值的期权,隐含波动率往往更高。

而偏斜(Skew)则是微笑的不对称版本。在股票市场里,通常看跌期权的隐含波动率高于看涨期权——因为市场更害怕暴跌。这就是所谓的「波动率偏斜」。

我画了一张图,帮你直观理解:

波动率微笑与偏斜示意图 行权价 (K) 隐含波动率 (IV) 微笑(对称) 偏斜(左高右低) BS模型假设(常数) 微笑 偏斜 BS常数

你看,蓝色虚线是微笑,红色实线是偏斜。在真实市场里,偏斜更常见。尤其是美股,每次财报季前,看跌期权的IV会明显高于看涨期权。

注意: 波动率微笑不是一成不变的。在极端行情下,微笑会变成「皱眉」甚至「尖叫」。2021年GameStop事件时,我亲眼看到某些期权的隐含波动率飙到500%以上,那已经不是微笑了,是狂笑。

4. 波动率在交易中的作用

说了这么多理论,波动率到底能帮我们做什么?我总结了几点:

  1. 风险管理: 波动率直接决定了你的仓位大小。波动率越高,仓位应该越小。我习惯用「波动率调整仓位」——比如,当VIX低于15时,我可以满仓;当VIX高于30时,我只敢半仓。
  2. 期权定价: 没有波动率,期权就没法定价。你看到的每一个期权价格,背后都隐含了一个波动率假设。
  3. 择时信号: 当历史波动率远低于隐含波动率时,说明市场可能低估了未来的波动——这时候做多波动率(买跨式期权)可能是个好主意。
  4. 策略构建: 很多量化策略的核心就是预测波动率。比如波动率均值回归策略、波动率趋势策略等。

我记得有一次,我在做跨式期权策略时,发现历史波动率只有12%,但隐含波动率已经飙到25%。我当时判断市场过度恐慌,于是卖出了跨式期权。结果一周后,波动率果然回落,我稳稳赚了一笔。这就是波动率在交易中的实战应用。

一句话总结: 波动率不是用来预测涨跌的,它是用来衡量「涨跌的可能性有多大」的。理解了这一点,你的交易水平会上一个台阶。

好了,今天的基础内容就到这里。波动率的世界很深,但只要你掌握了这些核心概念,后面的路就好走了。记住,做量化交易,别跟市场较劲,要跟波动率做朋友。


专注资料整理