第二章 低波动因子详解
好,咱们直接进入正题。低波动因子,这个名字听起来挺学术,其实说白了就是——买那些涨得慢、跌得也慢的股票。我刚开始接触这个因子时,也觉得它反直觉:凭什么涨得慢的股票反而能赚钱?但回测数据摆在那里,不服不行。
一、低波动因子的定义
低波动因子,衡量的是股票价格的“稳定程度”。我个人习惯用过去N个月的日收益率标准差来定义它。标准差越小,说明股价波动越平缓,因子值越低。
这里有个关键点:低波动因子不是指“股价不涨”,而是指“价格变动幅度小”。你想想看,一只股票每天涨跌都在1%以内,另一只动不动就涨停跌停,前者就是低波动。
核心定义公式:
低波动因子值 = -σ(rt)
其中 σ(rt) 是过去N个交易日的日收益率标准差。取负号是为了让低波动股票获得更高的因子得分。
我在项目中遇到过一个问题:有些股票长期横盘,波动确实低,但也不涨。这种股票要不要纳入?嗯,这里要注意,低波动因子需要配合其他因子使用,比如动量因子。光看波动率,容易买到“僵尸股”。
二、低波动因子的计算方法
计算方法其实不复杂,但细节决定成败。我给大家拆解一下标准流程:
- 数据准备:获取股票过去N个交易日的收盘价(我一般用252个交易日,也就是一年)
- 计算日收益率:rt = (Pt - Pt-1) / Pt-1
- 计算标准差:σ = sqrt( Σ(rt - μ)² / (N-1) )
- 因子标准化:将原始波动率进行Z-score标准化,或者直接排序分位数
下面是我常用的Python实现代码:
import numpy as np
import pandas as pd
def calc_low_vol_factor(price_df, window=252):
"""
计算低波动因子
price_df: DataFrame, 每列是一只股票的收盘价序列
window: 回看窗口,默认252个交易日
"""
# 计算日收益率
returns = price_df.pct_change().dropna()
# 计算滚动标准差(年化)
vol = returns.rolling(window=window).std() * np.sqrt(252)
# 取负号,低波动得高分
factor = -vol
# 横截面标准化
factor = (factor - factor.mean()) / factor.std()
return factor
这段代码我用了很多年,有个坑想提醒大家:一定要做横截面标准化。不同时间点的波动率水平不一样,牛市和熊市的波动率差异很大。不做标准化,因子值在不同时期不可比。
避坑指南:我曾经在2015年股灾期间直接用原始波动率做选股,结果选出来的全是停牌股。后来我加了两个处理:一是剔除停牌超过5天的股票,二是用中位数去极值。这两个小改动,让因子IC值提升了将近30%。
三、低波动因子的有效性检验
因子有没有用,不能光靠感觉。我一般用三个维度来检验:
1. IC值分析
IC(Information Coefficient)衡量因子值与未来收益的相关性。具体做法是:
- 每个月末计算所有股票的因子值
- 计算下个月股票的收益率
- 计算两者的Spearman秩相关系数
我个人的经验标准:IC均值大于0.03,IC标准差小于0.1,IR(IC均值/IC标准差)大于0.5,这个因子就算合格。
2. 分组回测
把股票按因子值分成10组(Decile),看第1组(最低波动)和第10组(最高波动)的收益差异。我见过最夸张的一次回测:低波动组年化收益18%,高波动组只有3%。
| 分组 | 年化收益 | 最大回撤 | 夏普比率 |
|---|---|---|---|
| 第1组(低波动) | 18.2% | -12.5% | 1.45 |
| 第5组(中等) | 10.8% | -18.3% | 0.89 |
| 第10组(高波动) | 3.1% | -35.7% | 0.21 |
你看这个表格,低波动组不仅收益高,回撤还小。这就是低波动异象——理论上高风险应该对应高收益,但现实中恰恰相反。
3. 稳定性检验
因子在不同市场环境下表现是否一致?我习惯分牛市、熊市、震荡市三个区间分别测试。低波动因子在熊市里表现尤其亮眼,因为大家都想找避风港。但在大牛市中,它可能会跑输——这很正常,没有完美的因子。
重要提醒:低波动因子在A股市场存在明显的“市值暴露”。小盘低波动股票的表现往往优于大盘低波动。所以做多因子模型时,一定要对市值因子做中性化处理,否则你选出来的可能只是小盘股,而不是真正的低波动股。
为什么会这样?我个人的理解是:机构投资者偏好大盘股,而大盘股本身波动就相对较低。但小盘股里的低波动股票,往往是被市场忽略的“隐形冠军”,反而有更大的超额收益空间。
最后说一句,低波动因子不是万能药。它最大的问题是“拥挤交易”——当太多人都知道这个因子有效时,它的超额收益会衰减。我现在的做法是:把低波动因子作为基础配置,再叠加一些另类因子(比如分析师预期调整、供应链数据等),做出差异化。
好了,这一章的内容就到这里。记住:因子研究不是一锤子买卖,需要持续跟踪、动态调整。你拿到的每一个回测结果,都要问自己一句——这个结果在实盘中还能复制吗?
公众号:蓝海资料掘金营,微信deep3321