第 4 部分 · 波动率目录
历史波动率
「这只股票波动很大」到底有多大?把感觉变成一个可以比较、可以计算的数字。
- 理解波动率衡量的是收益率的离散程度,与涨跌方向无关
- 能用对数收益率一步步算出日波动率并年化
- 理解平方根时间法则:方差随时间线性增长,波动率随 √T 增长
- 会用「年化波动率 ÷ 16」快速估算日内典型波动
- 知道收盘价波动率的局限,以及短窗口与长窗口的取舍
两只「平均收益」一样的股票
假设过去一个月里,股票 A 和股票 B 都上涨了 2%。从起点到终点看,它们一模一样。
但走势完全不同:A 每天的涨跌幅都在 ±0.5% 以内,一路缓慢爬升;B 却像过山车,今天涨 4%、明天跌 3.5%,最后碰巧也停在了 +2%。
如果你持有的是股票,二者到月底的结果相同。但如果你持有的是期权,差别就大了:在 B 这样的过山车上,股价有更大的机会冲到行权价之上(或跌到行权价之下),期权的「可能性」更值钱。这就是为什么期权交易者最关心的不是平均收益,而是波动率(Volatility)——价格变化的剧烈程度。
本课要做的,是把「波动得很厉害」这种感觉,变成一个可以计算、可以比较的数字:历史波动率(Historical Volatility, HV),也常被称为已实现波动率(Realized Volatility)。
第一步:用对数收益率描述每天的变化
计算波动率之前,先要把价格序列变成收益率序列。最直观的是简单收益率:今天比昨天涨了百分之几。但在波动率计算中,我们通常使用对数收益率(Log Return):
其中 是第 天的收盘价。当每日变化不大时,对数收益率与简单收益率非常接近(例如从 $100 涨到 $102,简单收益率是 2.00%,对数收益率是 1.98%)。
为什么偏爱对数收益率?主要有两个原因:
- 可以相加。 连续多天的对数收益率之和,正好等于整段时间的对数收益率:。简单收益率则需要连乘。可加性让「把日波动率换算成年化波动率」变得非常自然。
- 与定价模型一致。 Black-Scholes 模型假设股价服从几何布朗运动,即对数收益率服从正态分布。用对数收益率估计出的波动率,就是模型里的那个 。
第二步:算出日波动率
有了收益率序列,就可以用统计学里的样本标准差来度量它的离散程度:
其中 是收益率的个数, 是收益率的平均值。分母用 而不是 ,是统计学中常用的无偏修正(样本越多,两者差别越小)。
下面用 7 个收盘价(得到 6 个日收益率)完整算一遍。
| 交易日 | 收盘价 | 对数收益率 | 减去均值后 | 偏差的平方(%²) |
|---|---|---|---|---|
| 第 0 天 | $100.00 | — | — | — |
| 第 1 天 | $102.00 | +1.9803% | +1.6502% | 2.7232 |
| 第 2 天 | $99.00 | −2.9853% | −3.3153% | 10.9915 |
| 第 3 天 | $101.00 | +2.0001% | +1.6700% | 2.7890 |
| 第 4 天 | $100.50 | −0.4963% | −0.8263% | 0.6828 |
| 第 5 天 | $103.00 | +2.4571% | +2.1271% | 4.5245 |
| 第 6 天 | $102.00 | −0.9756% | −1.3057% | 1.7048 |
- 6 个对数收益率的平均值:。
- 把每个收益率减去平均值,再平方,合计约为 23.4157(单位:%²)。
- 除以 ,得到样本方差约 4.6831(%²)。
- 开平方,得到日波动率 2.164%。
也就是说,这只股票在这几天里,日收益率的「典型」偏离幅度大约是 2.16%。
第三步:年化——为什么乘以 √252
日波动率 2.16% 很难和别的数字比较:期权报价、波动率指数、研究报告用的都是年化波动率。换算公式是:
代入上面的结果: 34.35%。
这里的 252 是美股一年大约的交易日数。周末和节假日没有交易,价格基本不变化,所以年化时按交易日而不是 365 个日历日来计算。
关键问题是:为什么乘以 √252,而不是 252?
这意味着波动并不会随时间「平均掉」,但也不会成比例地放大。用年化 30% 的波动率举例:
| 时间跨度 | 计算 | 1 个标准差的波动幅度 |
|---|---|---|
| 1 天 | 30% × √(1/252) | 约 1.89% |
| 1 周(5 个交易日) | 30% × √(5/252) | 约 4.23% |
| 1 个月(21 个交易日) | 30% × √(21/252) | 约 8.66% |
| 1 年 | 30% × √(252/252) | 30% |
一个月的时间是一天的 21 倍,但典型波动幅度只是一天的 √21 ≈ 4.6 倍。
需要注意的是,「1 个标准差」并不是上限。如果收益率服从正态分布,大约 68% 的交易日涨跌幅会落在 ±1 个标准差以内,约 95% 落在 ±2 个标准差以内;剩下约 5% 的日子会出现更大的波动。而真实市场的大幅波动出现得比正态分布预测的更频繁——这就是我们会在模型的边界中讨论的「肥尾」。
动手算一算
下面的组件会按设定的「真实」年化波动率随机生成一段价格序列,然后按本课的方法一步步计算历史波动率。试着多生成几次:
你会发现两件有意思的事:
- 估计值总在真实值附近摆动。 即使「真实」波动率固定为 30%,用 60 天数据算出的历史波动率也可能是 26% 或 34%。历史波动率只是对真实波动率的一个估计,样本越短,误差越大。
- 同样的波动率,走势可以很不一样。 有时序列整体上涨,有时整体下跌,但波动率并不关心方向。
计算窗口:20 天还是 60 天?
历史波动率总要指定一个回看窗口,常见的有 10 日、20 日(约一个月)、30 日、60 日(约一个季度)、90 日、252 日(约一年)。窗口的选择是一个经典的取舍:
| 短窗口(如 10~20 日) | 长窗口(如 60~252 日) | |
|---|---|---|
| 对近期变化的反应 | 快 | 慢、滞后 |
| 估计误差(噪声) | 大,一两天的大波动就能显著改变结果 | 小,曲线平滑 |
| 适合的用途 | 判断当前的波动状态、与短期期权的隐含波动率比较 | 判断长期的「正常」水平、与长期期权比较 |
一个常见的做法是让窗口长度与你关心的期权期限相匹配:分析 30 天到期的期权时,看 20~30 日历史波动率;分析一年期期权时,看更长的窗口。
收盘价算法的局限
本课介绍的方法叫作收盘价到收盘价(Close-to-Close)波动率,它简单、透明、应用最广,但也有明显的局限:
- 看不到盘中波动。 一只股票盘中涨 5% 又跌回原位,收盘价不变,对数收益率为 0,在这种算法里「什么都没发生」。
- 对跳空和事件敏感。 窗口中如果包含一次财报跳空(比如单日 −15%),它会主导整个估计值;而当这一天滑出窗口时,历史波动率又会突然大幅下降——这种「断崖」并不代表风险真的变了。
- 数据利用率低。 每天只用一个价格。
为此,研究者提出了利用开盘价、最高价、最低价信息的估计方法,例如 Parkinson(基于最高价和最低价)、Garman-Klass、Yang-Zhang 等。它们在相同样本长度下通常更有效率,但也各有假设。对入门者来说,理解收盘价方法就足够了,关键是知道它只是一个估计。
历史波动率在期权交易中的用途
- 判断期权贵不贵的参照物。 把期权的隐含波动率与标的的历史波动率比较:如果隐含波动率 45%,而过去几个月实际波动一直在 25% 左右,期权可能偏贵(但也可能是市场预期有事件发生)。
- 估计合理的价格区间。 用年化波动率换算出日、周、月的典型波动幅度,设定止损、行权价或观察区间。
- 风险管理。 同样金额的头寸,波动率越高的标的风险越大。许多仓位管理方法会按波动率调整头寸规模。
- 事后检验。 卖出期权的收益,很大程度上取决于「卖出时的隐含波动率」与「之后实际实现的波动率」之差(我们会在Delta 对冲和波动率风险溢价中深入讨论)。
小结
- 波动率是收益率的标准差,衡量价格变化的剧烈程度,与方向无关。
- 计算历史波动率的步骤:收盘价 → 对数收益率 → 样本标准差(日波动率)→ 乘以 √252 年化。
- 平方根时间法则:在收益率独立同分布的假设下,方差随时间线性增长,波动率随 增长。
- 心算法:年化波动率 ÷ 16 ≈ 日波动率。
- 窗口越短越灵敏、越嘈杂;窗口越长越平滑、越滞后。收盘价方法看不到盘中波动,对跳空事件敏感。
- 历史波动率描述的是过去;期权价格反映的是对未来的预期。
下一课,我们换一个方向:不是从历史价格算波动率,而是从期权价格反推出市场正在「报价」的波动率——隐含波动率。