低波动率异象:高风险未必带来高回报
对比约两年间25只大盘股的实际波动率与总回报,看看为何更高风险并未稳定换来更高收益,并发现哪些股票打破教科书规律。
金融理论认为,投资者承担更多风险,就应获得更高回报作为补偿。低波动率异象是市场长期观察到的一种现象:这一点往往并不成立。在市场历史的许多阶段,波动更低的股票在承受远小于高波动股票的价格起伏的同时,回报却能与后者持平甚至胜出。本文将约过去两年间25只规模较大且广为人知的股票的实际波动率与总回报进行对比。结果显示,两者关系松散且噪声较大,并非教科书所描绘的整齐上升线。
低波动率异象是什么
这里的波动率指年化波动率,即股票日回报的标准差换算为年度数值。对于股票而言,接近16%的数值通常意味着波动较平稳;高于50%则表示该股票经常在单日内波动几个百分点。每门金融课程都会讲授的资本资产定价模型认为,两者应呈现一条直线上升关系:波动率越高,预期回报越高。
数十年的学术研究却发现,实际情况往往相反。历史上,低波动率投资组合的回报通常不低于高波动率投资组合,有时还会更高,但承担的风险仅为后者的一小部分。理论与实际记录之间的差距,就是这一异象。它是市场中研究最充分的模式之一,也是如今“min-vol”和“low-vol”基金的理论基础。
逐只比较波动率与回报
下图选取25只家喻户晓的大盘股,计算它们在同一时间窗口内的年化波动率和总回报,并按波动率从低到高排列。如果教科书中的关系成立,从左到右,回报柱状图应与波动率柱状图同步上升。
| ticker | 年化波动率 (%) | 总收益率 (%) |
|---|---|---|
| SPY | 16.1 | 40.8 |
| KO | 17.7 | 37.8 |
| MCD | 18.9 | -0.8 |
| JNJ | 19 | 90 |
| PG | 19.1 | -12.1 |
| COST | 20.8 | 7.7 |
| PEP | 21.1 | -17.1 |
| MO | 22.9 | 51.7 |
| VZ | 23.4 | 22.8 |
| HD | 23.9 | -6.1 |
| XOM | 24.5 | 38.9 |
| WMT | 24.7 | 57.8 |
| JPM | 24.9 | 80.1 |
| HON | 25.4 | -2.1 |
| LMT | 26.8 | 12.7 |
| MRK | 29.2 | 16.3 |
| NFLX | 33.7 | 15.4 |
| CAT | 34.7 | 148.2 |
| LLY | 38.2 | 26.1 |
| TXN | 40.8 | 32.9 |
每个数字背后的完整 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实际并非如此。样本中波动率最低的是标普500指数本身,ticker SPY,其年化波动率为16.1%,总回报为40.8%。从左向右观察,部分波动率最低的个股取得了强劲涨幅,而几只波动率最高的股票却接近持平或出现亏损。回报柱状图分布较为分散,与波动率柱状图并不呈现任何直线关系。这一图表清楚显示了该异象:右侧更高的波动率,并未稳定带来更高的回报。
更高波动率实际带来了什么
按波动率将25只股票分为三组,可以更清楚地说明这一点。每组均列出回报中位数,以及从表现最差到表现最佳的区间,因此投资者可以同时看到平均水平和结果分散程度。
| 波动率组 | 波动率中位数 (%) | 收益率中位数 (%) | 最差收益率 (%) | 最佳收益率 (%) | 区间 (%) |
|---|---|---|---|---|---|
| 1. Calmest third | 19.1 | 22.8 | -17.1 | 90 | 107 |
| 2. Middle third | 25.1 | 15.8 | -6.1 | 80.1 | 86 |
| 3. Wildest third | 44.2 | 55.8 | -18.5 | 198.6 | 217 |
每个数字背后的完整 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在这一特定时间窗口内,波动率最高的三分之一股票确实取得了最高的回报中位数,为55.8%;波动率最低的三分之一为22.8%。这一点应如实说明,也很重要。两年窗口较短,而过去两年中,少数规模较大、波动较高的科技股和动量股表现突出。波动率最高的三分之一股票还带来了更大的结果分散,其回报区间从-18.5%到+198.6%,跨度为217个百分点。波动率最低的三分之一股票的回报区间仅为107个百分点。高波动率大幅扩大了结果分布范围,却并未相应抬高回报中枢。投资高波动组的投资者确实有机会获得表中最高回报,也同样可能遭遇最差回报。
过程与终点同样重要
单一的总回报数字会掩盖持有过程。追踪时间窗口开始时投入的100美元在每周的变化,可以显示波动率在持有期间的实际感受。
| 周 | KO 平稳 | SPY 市场 | NVDA 高波动 |
|---|---|---|---|
| 2024-06-24 | 99.6 | 99.6 | 99.5 |
| 2024-07-01 | 99.7 | 101.5 | 101.5 |
| 2024-07-08 | 99.7 | 102.5 | 104.2 |
| 2024-07-15 | 102.1 | 100.5 | 95.2 |
| 2024-07-22 | 104.9 | 99.6 | 91.2 |
| 2024-07-29 | 108.4 | 97.6 | 86.5 |
| 2024-08-05 | 107.4 | 97.5 | 84.5 |
| 2024-08-12 | 108.2 | 101.4 | 100.5 |
| 2024-08-19 | 109.1 | 102.9 | 104.3 |
| 2024-08-26 | 113.4 | 103.2 | 96.3 |
| 2024-09-02 | 111.3 | 98.9 | 82.9 |
| 2024-09-09 | 111.7 | 102.9 | 96 |
| 2024-09-16 | 112 | 104 | 93.6 |
| 2024-09-23 | 112.3 | 104.6 | 97.9 |
| 2024-09-30 | 109.7 | 104.9 | 100.7 |
| 2024-10-07 | 108.8 | 106.1 | 108.7 |
| 2024-10-14 | 110.2 | 107 | 111.3 |
| 2024-10-21 | 104.7 | 106 | 114.1 |
| 2024-10-28 | 101.7 | 104.5 | 109.2 |
| 2024-11-04 | 100 | 109.5 | 119 |
每个数字背后的完整 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美元增至137.8美元,标普500增至140.8美元,NVDA则增至185.1美元。NVDA在这一时间窗口内表现最佳,但走势明显更为曲折,期间不止一次回撤超过两位数。KO几乎没有明显波动,回报却落后于另外两条曲线。两种结果都不符合教科书的预测。此次波动较低的股票没有跑赢市场,而波动较高的股票虽然取得回报,却是低波动率异象的例外,并非该异象的体现。这正是短期窗口的特点。低波动率异象是持续数十年的统计倾向,并不保证任何两年区间都会如此。
为什么异象真实存在,却不是定律
低波动率现象最有力的表述其实较为克制:从长期看,买入波动率较低的股票并不会让投资者牺牲回报,却能显著降低风险。这是对数千只股票和多年数据平均结果的描述,并不是一条适用于25只股票、24个月窗口的规则。像本次这样由高波动动量股强势领涨的窗口,正是这一模式被称为“异象”而非“定律”的原因。若想进一步了解哪些大盘股实际最为稳定,请参阅波动率最低的大盘股。反过来,集中持有少数几只高波动赢家也会带来集中度风险;而低波动率异象所偏好的投资心态,与他人恐惧时买入背后的理念相近。
常见问题
什么是低波动率异象?
这是一个长期观察到的市场模式:在较长时间跨度内,低波动率股票取得的回报不低于甚至高于高波动率股票,但承担的风险低得多。这与教科书关于风险越高、回报越高的预测相悖。
低波动率股票真的能跑赢高波动率股票吗?
跨数十年的样本研究发现,低波动率股票按风险调整后的表现大致与高波动率股票持平,甚至能够胜出。在任何短期窗口内,结果都可能反转。在本文测算的两年窗口中,波动率最高的三分之一股票取得了最高回报中位数,其结果区间也明显最宽。
低波动率投资是一个好策略吗?
从历史表现看,低波动率投资在没有明显牺牲回报的情况下降低了风险,这正是“min-vol”基金存在的原因。但它不保证在任何特定年份跑赢市场;当投机性股票领涨时,该策略也可能大幅落后。
如何衡量股票波动率?
常用指标是年化波动率,即每日百分比回报的标准差乘以252的平方根。252代表一年中的交易日数量。数值越高,表示股票通常会出现幅度更大的双向日内波动。
上文每个图表面板都对应一个可存储、可检查的查询。打开任一图表下方的SQL即可核对计算过程,也可以在Strasmore终端上对您自己的股票组合运行同样的波动率与回报测试。