波动率因子:从已实现波动率到日内模式挖掘

波动率因子,说白了就是衡量资产价格「上蹿下跳」的程度。很多做高频的朋友一上来就盯着价格看,其实波动率里藏着不少alpha。我个人习惯把波动率因子分成四类来拆解:已实现波动率、已实现极差、跳跃波动率、日内波动率模式。咱们一个一个来过。

1. 已实现波动率(Realized Volatility)

这是最基础的波动率指标。传统方法用日间收益率算标准差,但日内数据能给我们更精细的刻画。我常用的方法是5分钟高频采样,然后计算日内收益率的平方和。

公式其实很简单:

RV_t = Σ(r_{t,i})²

其中 r_{t,i} 是第 t 天第 i 个5分钟区间的对数收益率。

核心要点:采样频率不能太高也不能太低。我试过1秒采样,噪声太大;30分钟采样,又丢失太多信息。5分钟是个不错的平衡点。

代码实现也不复杂:

import numpy as np
import pandas as pd

def realized_volatility(price_series, freq='5min'):
    # 计算对数收益率
    log_ret = np.log(price_series / price_series.shift(1))
    # 按频率重采样
    resampled = log_ret.resample(freq).sum()
    # 计算已实现波动率
    rv = np.sqrt(np.sum(resampled ** 2))
    return rv

我的经验:实际项目中,我会把已实现波动率做差分处理。因为波动率本身有很强的自相关性,差分后得到的「波动率变化」因子,预测能力反而更强。

2. 已实现极差(Realized Range)

这个因子我特别喜欢。它不只看收盘价,而是把日内最高价和最低价的差距也考虑进来。你想想看,一天内价格从低到高走了多远,这本身就是波动率的直观体现。

计算方式:

RR_t = ln(High_t / Low_t)

但更精细的做法是,把每个5分钟区间的极差累加起来:

RR_sum = Σ ln(High_{t,i} / Low_{t,i})
方法 优点 缺点
单日极差 计算简单,直观 受极端值影响大
累加极差 信息更丰富,稳健 需要高频数据

避坑指南:我曾经在期货数据上直接用单日极差,结果遇到一次闪崩,极差瞬间放大10倍,整个因子都变形了。后来我改用累加极差,并且做了MAD(中位数绝对偏差)去极值处理,效果好了很多。

3. 跳跃波动率(Jump Volatility)

价格不是一直平滑运动的。有时候会出现突然的「跳跃」——比如财报发布瞬间、重大消息出来那几秒。这些跳跃里往往有信息含量,但也夹杂着噪声。

怎么识别跳跃?我常用的方法是比较已实现波动率和双幂次变差(Bipower Variation):

BV_t = (π/2) * Σ |r_{t,i}| * |r_{t,i-1}|

Jump_t = max(RV_t - BV_t, 0)

逻辑是这样的:如果价格是连续扩散过程,那么 RV 和 BV 应该差不多。但如果存在跳跃,RV 会显著大于 BV。差值就是跳跃波动率。

实战技巧:跳跃波动率因子在事件驱动策略里特别好用。我做过一个回测,在跳跃发生后的30分钟内做均值回归,夏普比率能到1.8以上。但要注意,跳跃的方向也很重要——正向跳跃和负向跳跃的后续走势完全不同。

4. 日内波动率模式(Intraday Volatility Pattern)

这一点很多人会忽略。波动率在一天之内不是均匀分布的。A股市场有个典型的「U型」模式:开盘和收盘时波动大,中午休息前后波动小。

我习惯把一天分成48个30分钟区间,然后计算每个区间的平均波动率:

# 计算日内波动率模式
def intraday_pattern(df, interval='30min'):
    df['time_bucket'] = df.index.floor(interval).time
    pattern = df.groupby('time_bucket')['volatility'].mean()
    # 做归一化
    pattern = pattern / pattern.mean()
    return pattern

为什么要关注这个模式?因为你可以用它来做「异常检测」。如果某个时间段的波动率显著偏离历史模式,往往意味着有事情发生。

我的发现:不同股票的日内模式其实不一样。大盘股开盘波动大,小盘股尾盘波动大。我建议你针对每只股票单独计算模式,不要用统一的模板。我曾经吃过这个亏,用沪深300的模式去套中证500,结果因子失效了整整一个月。

知识体系总览

下面这张图把四个波动率因子的关系梳理清楚了:

波动率因子体系 已实现波动率 已实现极差 跳跃波动率 日内波动率模式 5分钟高频采样 收益率平方和 日内高低价差 累加极差去极值 RV vs BV比较 事件驱动策略 U型模式识别 异常检测应用 四个因子互补,共同刻画市场微观结构

这四个因子不是孤立的。我通常把它们组合成一个综合波动率得分,然后做多低波动股票、做空高波动股票。嗯,这里要注意:波动率因子在牛市中表现一般,但在震荡市和熊市中特别有效。

最后说一句:波动率因子不是万能的。我见过有人把波动率因子当成万能钥匙,结果在趋势行情里亏得很惨。因子要组合使用,要结合市场环境。这才是量化研究的正确打开方式。


公众号:蓝海资料掘金营,微信deep3321