已实现波动率

已实现波动率(realized volatility)是某个品种在选定窗口内历史收益率的标准差,通常年化之后以百分比报出;它衡量价格实际上走了多少,与之相对的是隐含波动率——那是期权价格所表达的市场预期。

Senzoukria · 术语表 · 更新于 2026 年 9 月


计算方法

取收盘价最近 N 个对数收益率,即 ln(close_t / close_{t−1})。算出它们的样本标准差,除数用 N − 1,这是历史波动率的惯例。再乘以年化因子(一年中的 K 线根数)的平方根,结果以百分比表示。在日线上,这个因子是交易日数;在 K 线内部的数据上,还必须把每天的 K 线根数也算进去。

  • Senzoukria 在这里用样本形式(N − 1),而在布林带和 z 分数指标里用总体形式(N)。在长窗口上差别很小,每条公式里都有记载。
  • 窗口内出现零或负的收盘价会让对数没有定义;该数值会作为缺失上报。
  • 在攒够 N 个收益率之前没有估计值,窗格保持空白,而不是显示零。

已实现与隐含

两者之间的差距本身就是信息:期权价格所隐含的波动比近期实际走出来的更大或更小,这描述了市场相对于刚刚过去这段时间,如何给未来的不确定性定价。波动率偏斜指南讲的是隐含这一侧,以及微笑曲线的形状可能意味着什么。

两种波动率,回答的是不同的问题
已实现波动率隐含波动率
数据来源该品种的历史价格当前的期权价格
时间方向向后看向前看,按到期日和行权价分别给出
需要什么只需要价格历史需要期权链和一个定价模型
典型用途仓位大小、止损距离、状态描述偏斜、预期波动幅度、对冲压力

在期货上怎么读

  • 它是一个水平值,不是方向。已实现波动率上升说明波动区间在变宽,而不是说明价格往哪边走。
  • 它依赖窗口。20 根 K 线的数值会对上一个时段作出反应;100 根 K 线的数值则会把它抹平。
  • 一个相关的无量纲读数是 Volatility Regime 指标,即短期 ATR 与长期 ATR 之比,它把当下和自己的常态作比较,不需要年化。
  • 只有年化因子与 K 线周期相匹配,那个年化百分比才有意义。用错因子算出来的数字会差一个常数倍,无法跨周期比较。

在 Senzoukria 里

目录里的指标叫 Realized Vol,属于波动率组,画在自己的窗格里,带有 Period 和 annualization 两个参数。它的默认年化假定 1 分钟 K 线、一年 252 天、每天 24 小时交易;公式注释指出,对于大约 23 小时的 CME 时段来说,这是一个近似值。换到别的周期,这个参数必须手动调整。正因如此,指标目录把它标注为 Realized volatility · manual annualization。隐含波动率是另一个量:在桌面端,它由 GEX 模块读取的期权链按发布值提供,而且只有在配置了期权数据源时才有。

常见错误

  • 在 5 分钟图或日线图上沿用默认年化,然后把算出的百分比当成可以和公开的日波动率数字相比较。
  • 拿已实现波动率去和一个按不同期限算出的隐含波动率作比较。
  • 把它当趋势指标用;它对收益率的正负号是对称的。
  • 以为已实现波动率低就意味着某个仓位规模是安全的。下一个窗口并不受上一个窗口约束。

其他语言版本

常见问题

为什么要把已实现波动率年化?
年化把不同 K 线周期上的数字放到同一把尺子上,这样 1 分钟的估计和日线的估计才能比较,而且它与隐含波动率的报价惯例一致。换算的做法是把每根 K 线的标准差乘以「一年中 K 线根数」的平方根,所以这个因子必须与实际画图的周期相符。
已实现波动率和 ATR 是一回事吗?
不是。ATR 是对每根 K 线真实波幅的平均,单位是价格,它忽略收益率的方向和分布。已实现波动率是收益率的标准差,单位是百分比。两者通常同向变动,但对跳空、以及一串实体很小却影线很长的 K 线,反应并不相同。

继续阅读