1. 低波动策略概述:什么是低波动策略?为什么低波动策略有效?策略的起源与发展。
各位同学,咱们今天聊聊低波动策略。
说实话,这个策略在量化圈里,属于那种“看起来平平无奇,用起来真香”的类型。我刚开始做量化那会儿,总觉得波动越大收益越高,天天追着高波动的股票跑。结果呢?回撤大得让人睡不着觉。后来我才发现,低波动策略才是那个“闷声发大财”的主儿。
1.1 什么是低波动策略?
低波动策略,说白了就是——买那些股价波动比较小的股票,然后长期持有。
你可能会问:“波动小的股票,涨得也慢吧?那收益能高到哪去?”
嗯,这个问题问得好。我当年也是这么想的。但实际数据告诉我,低波动股票不仅回撤小,长期收益反而比高波动股票要好。这就是所谓的“低波动异象”。
核心定义:低波动策略是一种基于因子投资的量化策略,通过选择历史波动率较低的资产构建投资组合,旨在获得风险调整后的超额收益。
具体来说,我们通常用以下几个指标来衡量“波动”:
- 历史波动率:过去N天(比如60天、120天)的日收益率标准差
- 贝塔系数:股票相对于大盘的波动敏感度
- 特异波动率:剔除市场因素后的个股自身波动
我个人习惯用60日历史波动率作为主要筛选指标。为什么?因为60天刚好是一个季度,既能捕捉到近期的波动特征,又不会因为太短而被噪音干扰。
1.2 为什么低波动策略有效?
这个问题,我当年研究了很久。其实背后有几个很硬核的逻辑:
1.2.1 行为金融学解释——彩票效应
你想想看,散户最喜欢买什么样的股票?
对了,就是那些“可能暴涨”的股票。高波动股票就像彩票,虽然中奖概率低,但一旦涨起来就是几倍。散户愿意为这种“彩票”支付溢价,结果把高波动股票的价格推高了,预期收益反而降低了。
反过来,低波动股票没人关注,价格被低估,反而有更高的预期收益。
1.2.2 机构投资者的约束
很多机构投资者(比如养老金、保险资金)有严格的杠杆限制和做空限制。他们不能随便加杠杆,也不能随便做空。
这就导致了一个现象:
- 高波动股票因为风险大,机构不敢重仓
- 低波动股票因为风险小,机构愿意持有
- 但机构为了追求收益,会去借入高波动股票做空,然后用借来的钱买低波动股票
这种“套利行为”进一步推高了低波动股票的收益。
1.2.3 波动率的均值回归
波动率这个东西,它是有周期性的。高波动之后往往跟着低波动,低波动之后往往跟着高波动。
但问题是,高波动股票在经历高波动期后,往往不会立刻回归到低波动状态。而低波动股票却能长期保持低波动状态。这就给了我们一个稳定的套利窗口。
避坑指南:我曾经犯过一个错误——只看短期波动率(比如5天、10天)来选股。结果选出来的股票很多是“假低波动”,比如刚停牌复牌的股票。后来我改成用60天和120天两个时间窗口取交集,效果好了很多。
1.3 策略的起源与发展
低波动策略不是凭空冒出来的。它的发展历程,我简单梳理一下:
| 时间 | 里程碑 | 代表人物/机构 |
|---|---|---|
| 1972年 | Black、Jensen和Scholes发现低贝塔股票有更高的风险调整后收益 | Fischer Black等 |
| 1975年 | Haugen和Heins正式提出“低波动异象” | Robert Haugen |
| 2006年 | Ang等人在《Journal of Finance》发表论文,系统论证低波动策略的有效性 | Andrew Ang等 |
| 2011年 | MSCI推出低波动指数,策略开始产品化 | MSCI |
| 2015年至今 | 低波动ETF规模爆发,成为主流因子策略之一 | 各大资管机构 |
我最早接触低波动策略是在2013年。那时候国内量化刚起步,大家都在研究动量因子、价值因子。我偶然读到一篇论文,讲的是“低波动异象”,当时觉得这个逻辑很反直觉,就试着在A股回测了一下。
结果让我很惊讶——在A股,低波动策略的效果甚至比美股还要好。原因很简单:A股散户占比高,彩票效应更明显,低波动股票被低估的程度更大。
1.4 低波动策略的知识体系
为了让大家更直观地理解低波动策略的全貌,我画了一张图:
这张图展示了低波动策略的三个核心支柱:理论基础、核心指标和实战应用。后面几章,我们会逐一深入讲解。
1.5 一个简单的代码示例
说了这么多,不如直接上代码。下面是一个最简单的低波动策略实现:
import pandas as pd
import numpy as np
# 假设我们有一个股票池的日收益率数据
# df_returns: DataFrame, 行=日期, 列=股票代码
def low_vol_strategy(df_returns, lookback=60, top_pct=0.2):
"""
低波动策略:选择过去lookback天波动率最低的20%股票
"""
# 计算历史波动率(年化)
vol = df_returns.tail(lookback).std() * np.sqrt(252)
# 选择波动率最低的20%股票
n_select = int(len(vol) * top_pct)
selected = vol.nsmallest(n_select).index.tolist()
return selected
# 使用示例
# selected_stocks = low_vol_strategy(df_returns, lookback=60, top_pct=0.2)
# print(f"选中的股票: {selected_stocks}")
注意:这个代码只是演示逻辑,实际使用中还需要考虑交易成本、流动性、行业中性化等问题。我刚开始做回测时,直接用这个代码跑,结果收益曲线很漂亮。但加上千分之一的交易成本后,收益直接腰斩。所以,交易成本是低波动策略的隐形杀手。
1.6 小结
好了,第一章的内容就到这里。我们讲了低波动策略的定义、为什么有效、以及它的发展历程。
记住三个核心点:
- 低波动策略不是“低收益”策略,而是“风险调整后收益高”的策略
- 行为金融学和机构约束是它有效的两大支柱
- 代码实现很简单,但实战中要注意交易成本和流动性
下一章,我们会深入讲解低波动策略的数学原理和因子构造方法。到时候,我会带大家手写一个完整的低波动因子计算函数。