资本资产定价模型(CAPM)有一个干净的结论:E[R_i] = R_f + β_i·(E[R_m]−R_f)。β 越高,预期收益越高——想多赚,就得敢冒风险。这几乎是每个金融学生的第一课。
但 1970 年代以来,一堆实证论文(Frazzini & Pedersen 2014 的「下注对抗 beta」、Ang 等的特质波动异象、以及无数「最小方差指数」的实盘表现)反复指出同一件怪事:低风险股票长期跑赢高风险股票。低波动组合 Sharpe 更高、回撤更浅,有时连裸收益都更好。理论说「高风险高收益」,数据说「低风险高收益」。这一篇,我们把这个异象从数据里亲手揪出来。
结论先放:在 200 只股票、240 个月(20 年)的模拟里,按实现波动分五组,最低波动组(Q1)年化 15.8%、Sharpe 1.06、回撤仅 −13%;最高波动组(Q5)年化 9.3%、Sharpe 0.32、回撤 −48%。把个股收益对 β 回归,理论该是正的「市场预期溢价斜率 6.6%/年」,实际拟合出来只有 1.7%/年——几乎平的。风险与收益的正相关,破了。

一、数据:怎么造出(并揪出)这个异象#
为演示机制,我们合成 200 只股票、20 年月度收益。每只股票服从「市场 + 特质」结构,并显式嵌入低波动异常(即低波动股票被赋予更高的截距 α):
import numpy as np
rng = np.random.default_rng(20260713)
N, T = 200, 240
mu_m, sig_m = 0.005, 0.040 # 市场月均超额收益、波动
beta = rng.uniform(0.5, 1.5, N) # 个股 beta
idio = rng.uniform(0.020, 0.075, N) # 特质月度波动
true_vol = np.sqrt((beta * sig_m) ** 2 + idio ** 2)
alpha = 0.0030 - 0.25 * (true_vol - true_vol.mean()) # 低波动 -> 高 alpha(异常核心)
mkt = rng.normal(mu_m, sig_m, T)
ret = (alpha[None, :] + beta[None, :] * mkt[:, None]
+ rng.standard_normal((T, N)) * idio)
ann_ret = ret.mean(0) * 12
ann_vol = ret.std(0, ddof=1) * np.sqrt(12)
sharpe = ann_ret / ann_volpython关键那行 alpha = 0.0030 − 0.25·(σ_i − mean σ):波动越低的股票,截距越高。市场仍按 β 给正补偿,但低波动股票的特质 α 足以让它的风险调整后收益反超。这就是异象的「种子」。
诚实声明:真实世界里这个 α 不是我手工塞进去的,而是数据自己长出来的。下面第四节讲它为什么「自然」出现。
二、检验 1:CAPM 回归——理论斜率 vs 实际斜率#
把每只股票的年化收益对 β 做 OLS,对比两条线:理论线斜率 = 市场预期溢价(6.6%/年,正的);实际拟合线斜率 = 回归系数。
A = np.vstack([np.ones(N), beta]).T
capm_slope = np.linalg.lstsq(A, ann_ret, rcond=None)[0][1] # 实际:1.7%/年python结果:理论该 +6.6%,实际只有 +1.7%。图1 里红线几乎是平的——β 翻三倍,预期收益几乎没动。这正是低波动异象在截面上的指纹:风险的价格被严重压低,甚至可能为负。
三、检验 2:波动率五分位——低波动组全面占优#
按实现波动把股票分成五组(Q1 最低 → Q5 最高),看每组的平均表现:
order = np.argsort(ann_vol)
qs = np.array_split(order, 5)
q_ret = [ann_ret[q].mean() for q in qs]
q_vol = [ann_vol[q].mean() for q in qs]
q_shp = [sharpe[q].mean() for q in qs]python| 分组 | 年化收益 | 年化波动 | Sharpe |
|---|---|---|---|
| Q1 低波动 | 15.8% | 15.4% | 1.06 |
| Q2 | 13.6% | 19.6% | 0.70 |
| Q3 | 14.0% | 22.4% | 0.63 |
| Q4 | 9.0% | 25.5% | 0.35 |
| Q5 高波动 | 9.3% | 29.6% | 0.32 |
Sharpe 单调随波动下降:低波动组 1.06 是高波动组 0.32 的 3 倍多。裸收益上,Q1(15.8%)也高于 Q5(9.3%)——低风险不仅更稳,还更赚。

四、检验 3 & 4:净值与「低波动云」#
把 Q1 等权做成低波动组合、Q5 等权做成高波动组合,再和等权全市场比:
low_ret = ret[:, qs[0]].mean(1)
high_ret = ret[:, qs[4]].mean(1)
eq_low, eq_high = np.cumprod(1 + low_ret), np.cumprod(1 + high_ret)python
低波动组合年化 15.8%、最大回撤 −13%;高波动组合年化 9.3%、回撤 −48%;等权全市场居中(12.3% / −30%)。低波动组合和全市场相关性高达 0.99——它不是对冲工具,而是「更好的 β」:跟市场走,但走得又稳又远。
最后那张标志性散点图:横轴波动、纵轴 Sharpe,点云向右下塌,五分位均值连成一条干净的下坡线。

五、它为什么「真实」存在(不止是模拟设定)#
我上面是手工塞了异常,但实盘里它有坚实的行为与制度根源:
- 杠杆约束:CAPM 要套利低波动异象,得「杠杆买入低波动股、做空高波动股」。可大多数机构(养老金、共同基金、散户)被法规或章程禁止大幅杠杆。无法套利 → 错误定价不消失。
- 彩票偏好 / 注意力:散户爱买高波动的「彩票股」,愿意为波动付溢价(博小概率暴富),推高高波动股价格、压低其未来收益。这是 Baker & Haugen、Kumar 等反复验证的。
- 波动率反馈与崩盘恐惧:高波动股在危机里跌得最狠,投资者要求的风险补偿理论上该很高,但「崩盘恐慌」反而让一些人追高波动博反弹,进一步扭曲定价。
- 相对业绩排名:基金经理怕跑输指数,被迫持高 β 仓位,变相为高波动付溢价。
所以低波动异象本质是市场不完美(杠杆受限 + 行为偏差)的定价影子,不是统计噪音。
六、真实陷阱:想用它赚钱得避开这些坑#
- 和市值因子混淆:低波动股常偏大盘(公用事业、消费),高波动股常偏小盘。不控制市值,低波动溢价可能只是市值溢价的马甲。实盘务必做中性化。
- 换手与税费:按月重排序有真实换手成本;低波动组合换手其实低于动量,但仍要扣交易费、冲击成本。
- 利率 regime:低波动股久期长,利率上行期可能跑输;它是「类债券」资产,不是全天候。
- 做空约束:纯多头低波动策略能吃到一个方向的溢价;完整「下注对抗 beta」需要做空高 β,受融券限制。
- 样本区间依赖:异象在 2000 年后被大量发掘后有所衰减( crowding),样本外要打折扣,务必做 walk-forward 而非单次回测。
七、小结#
低波动异象给主动管理人两个朴素启示:一是「少亏就是赚」,低波动组合用更浅的回撤换来了不输甚至更高的复利;二是 CAPM 的「风险价格」在截面上是塌的,高 β 没换来高收益。对实战最干净的应用是最小方差 / 低波动指数化——不预测方向,只把「波动税」从组合里抠掉。下一篇我们聊熵池化,看怎么把「我觉得要跌」这种主观观点,严谨地织进概率分布里。
(本文收益为自洽合成以演示机制;真实异象来自杠杆约束与行为偏差,落地请用真实价格序列、控制市值/行业暴露并做样本外验证。)