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 低波动策略的知识体系

为了让大家更直观地理解低波动策略的全貌,我画了一张图:

低波动策略知识体系 低波动策略 理论基础 行为金融学(彩票效应) 机构投资者约束 波动率均值回归 核心指标 历史波动率(60日/120日) 贝塔系数 特异波动率 实战应用(多空组合/因子择时)

这张图展示了低波动策略的三个核心支柱:理论基础、核心指标和实战应用。后面几章,我们会逐一深入讲解。

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 小结

好了,第一章的内容就到这里。我们讲了低波动策略的定义、为什么有效、以及它的发展历程。

记住三个核心点:

  • 低波动策略不是“低收益”策略,而是“风险调整后收益高”的策略
  • 行为金融学和机构约束是它有效的两大支柱
  • 代码实现很简单,但实战中要注意交易成本和流动性

下一章,我们会深入讲解低波动策略的数学原理和因子构造方法。到时候,我会带大家手写一个完整的低波动因子计算函数。

专注资料整理