Strasmore Research
Learn · Matt ConnorBy Matt Connor · · Updated 2026-07-23

低波动率异常现象解析

风险并不总能带来高回报。本文通过对比大型股的实现波动率与回报率,揭示金融理论与实证研究之间的显著差异。

金融理论认为,承担更多风险的投资者应获得更高的回报。低波动率异常(low-volatility anomaly)是一个长期观察到的现象,即这一理论经常失效。在许多市场历史阶段,波动较小的股票表现与波动剧烈的股票持平甚至更优,同时投资者的回撤也小得多。本文对比了过去约两年内 25 只知名大型股的实现波动率与总回报率,结果显示两者关系松散且杂乱,并非教科书所描绘的整齐上升曲线。

什么是低波动率异常

这里的波动率指年化波动率:即股票每日回报率的标准差,并换算为年度数值。对于股票而言,接近 16% 的数值属于低波动,而超过 50% 则意味着该股票每日波动通常达到几个百分点。资本资产定价模型(CAPM)是金融课程的基础框架,它预测回报与波动率呈直线上升关系,即高波动率对应高预期回报。

数十年的学术研究发现了相反的趋势。从历史来看,低波动率投资组合在风险仅为高波动率组合一小部分的情况下,提供了与之相当甚至更高的回报。这种理论与实证之间的差距即为“异常”。这是市场中最被研究的模式之一,也是目前市场上销售的“最小波动”(min-vol)和“低波动”(low-vol)基金的理论基础。

波动率与回报的个股对比

下表选取了 25 只常见的蓝筹股,计算了它们在同一时间窗口内的年化波动率和总回报率,并按波动率从低到高排序。如果符合教科书理论,回报率柱状图应随波动率柱状图从左至右同步上升。

查询年化波动率 vs 总回报,25 只大盘股,从最平稳到最剧烈(约 2 年)
每个数字背后的完整 SQL
WITH d AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY','KO','JNJ','PG','PEP','WMT','MCD','MO','VZ','XOM','JPM','HD','COST','UNH','MRK','LLY','HON','LMT','CAT','TXN','ORCL','NVDA','TSLA','AMD','NFLX')
      AND window_start >= now() - INTERVAL 800 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
r AS (
    SELECT ticker, dt, c,
           c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
    FROM d
)
SELECT ticker,
       round(stddevSamp(ret) * sqrt(252) * 100, 1) AS annual_vol_pct,
       round((exp(sum(log(1 + ret))) - 1) * 100, 1) AS total_return_pct
FROM r
WHERE ret IS NOT NULL AND ret > -0.5 AND ret < 0.5
GROUP BY ticker
ORDER BY annual_vol_pct

事实并非如此。在这组样本中,最稳健的标的是 S&P 500 指数(代码:SPY),其年化波动率为 16%,总回报率为 42.8%。横向观察可见,部分低波动个股实现了强劲增长,而部分高波动个股的表现接近持平甚至出现亏损。回报率分布散乱,并未与波动率呈现线性关系。这直观地展示了该异常现象:右侧额外的波动率并未换取可靠的回报提升。

额外波动率带来的实际结果

将这 25 只股票按波动率分为三组可以更清晰地说明问题。每组给出中位数回报率以及从表现最差到最好的回报区间,从而使结果的离散程度与平均水平并列呈现。

查询波动率三分位:中位数回报,以及每组中最差与最好的个股范围
每个数字背后的完整 SQL
WITH d AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY','KO','JNJ','PG','PEP','WMT','MCD','MO','VZ','XOM','JPM','HD','COST','UNH','MRK','LLY','HON','LMT','CAT','TXN','ORCL','NVDA','TSLA','AMD','NFLX')
      AND window_start >= now() - INTERVAL 800 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
r AS (
    SELECT ticker, dt,
           c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
    FROM d
),
pername AS (
    SELECT ticker,
           stddevSamp(ret) * sqrt(252) * 100 AS vol,
           (exp(sum(log(1 + ret))) - 1) * 100 AS tr
    FROM r
    WHERE ret IS NOT NULL AND ret > -0.5 AND ret < 0.5
    GROUP BY ticker
),
ranked AS (
    SELECT ticker, vol, tr, ntile(3) OVER (ORDER BY vol) AS bucket FROM pername
)
SELECT multiIf(bucket = 1, '1. Calmest third', bucket = 2, '2. Middle third', '3. Wildest third') AS vol_group,
       round(median(vol), 1) AS median_vol_pct,
       round(median(tr), 1) AS median_return_pct,
       round(min(tr), 1) AS worst_return_pct,
       round(max(tr), 1) AS best_return_pct,
       round(max(tr) - min(tr), 0) AS range_pct
FROM ranked
GROUP BY bucket
ORDER BY bucket

在这一特定窗口期内,波动最大的那一组确实实现了最高的 median 回报率,为 87.1%,而最稳健的一组为 20.6%。这符合事实且具有参考意义。两年时间窗口较短,过去两年主要奖励了少数大型、高波动性的科技股和动量股。波动最大的一组同时也带来了巨大的离散度:其回报率区间从 -15.8% 到 +223.3%,极差为 239 个百分点。而最稳健的一组回报区间仅为 92 个百分点。高波动率极大地扩大了结果的范围,但并未显著提升回报的中位数。投资于高波动组的投资者,既有可能获得表中最高的回报,也可能面临最差的结果。

路径与终点同样重要

单一的总回报数字掩盖了过程。追踪在窗口期开始时投入的 100 美元在每周的走势,可以感受持有过程中的波动感。

查询$100 增长情况:平稳个股 (KO)、市场指数 (SPY)、剧烈个股 (NVDA),周线
每个数字背后的完整 SQL
WITH d AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('KO','SPY','NVDA')
      AND window_start >= now() - INTERVAL 800 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
r AS (
    SELECT ticker, dt,
           c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
    FROM d
),
f AS (
    SELECT ticker, dt, ret FROM r WHERE ret IS NOT NULL AND ret > -0.5 AND ret < 0.5
),
cum AS (
    SELECT ticker, dt,
           100 * exp(sum(log(1 + ret)) OVER (PARTITION BY ticker ORDER BY dt)) AS idx
    FROM f
),
wk AS (
    SELECT ticker, toMonday(dt) AS week, argMax(idx, dt) AS wv
    FROM cum GROUP BY ticker, week
)
SELECT week,
       round(maxIf(wv, ticker = 'KO'), 1) AS ko_calm,
       round(maxIf(wv, ticker = 'SPY'), 1) AS spy_market,
       round(maxIf(wv, ticker = 'NVDA'), 1) AS nvda_wild
FROM wk
GROUP BY week
ORDER BY week

此处的稳健股票是可口可乐 (KO),波动剧烈的是英伟达 (NVDA),中间线是市场基准。到最后一周,投入 KO 的 100 美元增长至 129.9,S&P 500 增长至 142.8,而 NVDA 增长至 226.8。NVDA 在该窗口期内胜出,但其路径剧烈震荡,期间多次出现两位数的跌幅。KO 的表现落后于另外两条线,但几乎没有波动。两种结果都不符合教科书。这一次,稳健型股票并未跑赢市场;而波动型股票之所以获利,并非因为符合异常规律,而是碰巧避开了异常规律。这就是短期窗口的特征。异常现象是基于数十年数据得出的趋势,而非对任何两年周期的承诺。

为什么异常现象是真实的而非定律

低波动率研究最强有力的结论是:在长期维度下,购买更稳健的股票并不会损失回报,反而大幅降低了风险。这是一个基于数千只股票和多年数据的平均值陈述,而非适用于 25 只股票在 24 个月内的规律。像本案例中波动较大的动量股表现强劲的窗口期,正是该模式被称为“异常”而非“定律”的原因。若要全面了解哪些蓝筹股表现最稳健,请参阅 最稳健的蓝筹股。反之,持有少数高波动赢家会带来 集中度风险,而异常现象所奖励的特性,与 在他人恐惧时买入 的逻辑非常接近。

常见问题解答

什么是低波动率异常?

这是一种长期观察到的模式:在长期维度下,低波动率股票以更低的风险,获得了与高波动率股票相当甚至更高的回报。这与“风险越高,回报越高”的教科书预测相悖。

低波动率股票真的能跑赢高波动率股票吗?

在数十年的样本中,研究发现它们在风险调整后的表现大致相当或更优。但在任何短期窗口内,结果都可能反转。在本文测算的两年窗口内,波动最大的那一组拥有最高的 median 回报率,但其结果的离散区间也远大于其他组。

低波动率投资是一种好的策略吗?

从历史来看,低波动率投资在不牺牲太多回报的情况下降低了风险,这也是“最小波动”基金存在的原因。它不能保证在任何给定年份都能跑赢,且在投机股领涨时可能会显著落后。

如何衡量股票波动率?

常用的衡量标准是年化波动率:即每日百分比回报率的标准差,乘以 252(一年中的交易天数)的平方根。数值越高,意味着股票每日向任一方向波动的幅度越大。


以上每个图表均为可查询的存储查询。您可以打开任何图表下的 SQL 语句来核对计算过程,或在 Strasmore 终端上对您自己的股票组合运行相同的波动率与回报率测试。