【维克】相关性分析:为什么“分散投资“不是简单的多买几只股票?

📅 2026/7/26 15:01:46 👁️ 阅读次数 📝 编程学习
【维克】相关性分析:为什么“分散投资“不是简单的多买几只股票?

WHY:你可能一直在"假分散"
上一篇讲了t分布和对数正态分布——搞懂了金融数据"不正常"的真相,你的建模基础算是打实了。
今天我们聊一个更"实战"的话题:分散投资。
先问一个扎心的问题:你现在的投资组合,是真的分散了吗?
很多人的"分散投资"长这样:
• 买了20只股票,觉得够分散了
• 其中5只是新能源、5只是锂电、5只是光伏、5只是储能
• 本质上全押了同一个方向——"清洁能源赛道"
或者这样:
• 买了A股10只、港股5只、美股5只,觉得全球配置了
• 但A股那10只全是消费股,港股那5只也是消费+互联网,美股还是消费(亚马逊、特斯拉、星巴克……)
• 说到底还是在赌"消费复苏"
这不叫分散投资,这叫"把鸡蛋放在20个看起来不同的篮子里,但那些篮子其实在同一辆卡车上"。
卡车一翻,全完。
2008年金融危机就是最好的教训——很多人以为自己的投资组合足够分散,结果发现房地产、银行、保险、养老金全挂在次贷这一根绳上。所谓的"分散",在最需要它发挥作用的时候,完全失效了。
真正有效的分散投资,核心不在于你买了多少个标的,而在于这些标的之间的"相关性"有多低。
这个"相关性",不是日常口语里"有没有关系"的意思,而是一个精确的数学概念——相关系数,取值范围从-1到+1。
• +1:两个资产完全同涨同跌(比如同一行业的两只股票)
• 0:两个资产涨跌互不相关
• -1:两个资产完全反向运动(一个涨另一个就跌)
你的目标是什么?让你的组合里,资产之间的相关系数尽量低,甚至为负。
为什么?因为马科维茨(Harry Markowitz)在1952年用数学证明了:在预期收益率相同的情况下,低相关性组合的波动率(风险)更低。 这就是现代投资组合理论(Modern Portfolio Theory, MPT)的核心,也是他因此获得1990年诺贝尔经济学奖的原因。
一句话:分散投资的本质不是"多买",而是"买不相关的东西"。 搞不懂相关性,你的分散投资就是在自欺欺人。
这篇我把相关性这个概念从底层逻辑讲透——协方差和相关系数的数学含义、怎么用数据算出来、怎么用它构建真正有效的投资组合。不讲虚的,全是可落地的东西。
HOW:从协方差到投资组合——相关性分析的完整方法论
一、协方差:两个资产"一起动"的度量
1.1 直觉理解
协方差(Covariance)描述的是两个变量"同向变动"的程度:
• 协方差 > 0:A涨的时候B也倾向于涨(同向)
• 协方差 < 0:A涨的时候B倾向于跌(反向)
• 协方差 = 0:A和B之间没有线性关系
1.2 数学定义
Cov(RA,RB)=E[(RA−E[RA])(RB−E[RB])]
翻译成大白话:A的收益率偏离其均值的程度 × B的收益率偏离其均值的程度,然后取平均。
1.3 协方差的致命问题——量纲陷阱
协方差有一个巨大的实操缺陷:它的大小取决于各个资产收益率的波动幅度(标准差)。
举个例子:
• 资产A的日波动率是1%,资产B是2%
• 资产C的日波动率是10%,资产D是20%
即使A和B的关系跟C和D的关系完全一样,C和D的协方差也是A和B的400倍(因为波动率各大了10倍,10×10=100,再乘以协方差本身的缩放……实际是200倍左右)。
这意味着:你不能直接比较"A与B的协方差"和"C与D的协方差"谁更大,因为波动率不同。
这就引出了相关系数——一个被"标准化"过的协方差。
二、相关系数:标准化的协方差,可比性拉满
2.1 皮尔逊相关系数
ρA,B=Cov(RA,RB)σA·σB
核心操作:把协方差除以两个资产各自的标准差之积。
这个除法做了什么事?把"一起动的幅度"标准化为"一起动的比例"。
结果就是:
• 相关系数永远在[-1, +1]之间
• 不受波动率大小影响
• 可以直接跨资产、跨组合比较
2.2 实战中的相关系数解读
相关系数范围 含义 分散化效果 典型例子
0.8 ~ 1.0 高度正相关 几乎没有分散效果 同行业两只龙头股
0.5 ~ 0.8 中高度正相关 有限分散效果 同一板块不同个股
0.2 ~ 0.5 低度正相关 有一定分散效果 不同行业A股
-0.2 ~ 0.2 几乎不相关 较好分散效果 A股与美债
-0.5 ~ -0.2 低度负相关 很好的分散+对冲效果 股票与黄金(部分时段)
-0.8 ~ -0.5 中高度负相关 极强对冲效果 股票与VIX(恐慌指数)
2.3 Python计算实操
// python
import numpy as np
import pandas as pd
# 假设df是包含各资产日收益率的DataFrame
# 计算相关系数矩阵
corr_matrix = df.corr()
print(corr_matrix)
# 计算协方差矩阵
cov_matrix = df.cov()
print(cov_matrix)
# 只看两只股票的相关系数
print(f"AAPL与MSFT的相关系数: {corr_matrix.loc['AAPL', 'MSFT']:.3f}")
print(f"AAPL与GLD(黄金ETF)的相关系数: {corr_matrix.loc['AAPL', 'GLD']:.3f}")
三、相关性如何影响组合风险——这是核心公式
两资产组合的波动率公式:
σp=wA2σA2+wB2σB2+2wAwBσAσBρA,B
其中:
• $wA, wB$:两个资产的权重
• $\sigmaA, \sigmaB$:两个资产的波动率
• $\rho_{A,B}$:两个资产的相关系数
**关键观察:公式里唯一"可控"的变量就是相关系数 ρA,B。**
• 资产波动率是市场给的,你改不了
• 权重可以调,但调来调去也就那几个数
• 但相关系数决定了你"多买几只"到底能不能降低风险
3.1 数值案例:相关性从+0.8降到+0.1,风险降低多少?
假设:
• 资产A:年化波动率25%,权重50%
• 资产B:年化波动率30%,权重50%
相关系数 组合波动率 相比单持A
+1.0 27.5% 风险更高(加权平均)
+0.8 26.2% 几乎没有分散效果
+0.5 23.8% 下降1.2个百分点
+0.1 20.0% 下降5个百分点
0.0 19.5% 下降5.5个百分点
-0.3 17.5% 下降7.5个百分点
-0.5 15.8% 下降9.2个百分点
从+0.8降到0.0,组合波动率从26.2%降到19.5%,降了6.7个百分点。这是什么概念?你的风险降了25%以上,但预期收益率几乎没变。
这就是"免费的午餐"——马科维茨原话。分散化是唯一不需要牺牲预期收益就能降低风险的方法。
四、用相关性构建有效投资组合
4.1 第一步:构建资产相关性矩阵
// python
import yfinance as yf
import pandas as pd
# 下载多资产的历史数据
tickers = ['SPY', 'EFA', 'EEM', 'AGG', 'GLD', 'VNQ', 'DBC']
# 美股、发达市场、新兴市场、债券、黄金、房地产、大宗商品
data = yf.download(tickers, period='5y')['Adj Close']
returns = data.pct_change().dropna()
# 相关系数矩阵
corr = returns.corr()
print(corr.round(3))
典型结果:
• SPY-EFA(美股vs发达市场):0.85+ → 高度重叠,分散效果差
• SPY-AGG(美股vs债券):接近0或负 → 好的分散标的
• SPY-GLD(美股vs黄金):0~0.2 → 不错
• SPY-DBC(美股vs大宗商品):0.3~0.5 → 中等分散
4.2 第二步:识别"伪分散"陷阱
很多投资者踩过的坑:
陷阱1:同行业多持
买了宁德时代、比亚迪、亿纬锂能、天赐材料……觉得买了4只股票很分散?它们的相关系数全在0.7以上。你只是在"锂电赛道"里做了内部细分。
陷阱2:同市场多持
A股买了30只——但A股整体跟上证指数相关性极高,你的"30只股票"本质上就是一个"增强版指数基金",还不如直接买ETF。
陷阱3:时间窗口错觉
用2015-2019年的数据算出来相关系数很低,觉得分散有效。结果2020年3月疫情来了,所有资产的相关系数瞬间飙到0.9以上——流动性危机时,一切相关性失效。
教训:相关性不是常数,它会随着市场状态变化。危机时,所有资产趋向于"一起跌"。你的分散投资在最需要它的时候可能失效。
4.3 第三步:构建真正低相关的多资产组合
全球经典多资产配置方案("全天候"思路简化版):
资产类别 代表标的 配置比例 角色
美股 SPY/VOO 25% 增长引擎
国际发达市场 EFA/VXUS 15% 地域分散
新兴市场 EEM/VWO 10% 增长+分散
美国国债 AGG/TLT 25% 避险+负相关
黄金 GLD/IAU 10% 通胀对冲+低相关
大宗商品 DBC/GSG 10% 通胀对冲+低相关
REITs VNQ/SCHH 5% 另类收益源
这个组合的核心逻辑:每个资产类别的驱动因素不同,它们之间的相关系数长期维持在较低水平。
• 股票涨→经济增长预期好
• 债券涨→利率下降/避险需求
• 黄金涨→通胀预期/避险需求
• 大宗商品涨→供给紧张/通胀
不同宏观环境,不同资产"轮流表现"。组合的整体波动率因此被显著压低。
4.4 相关系数的局限性——必须知道
1. 只度量线性关系:两个资产可能有强烈的非线性关系但相关系数为0。比如A涨时B先跌后涨——线性相关看不出来
2. 不是因果:相关≠因果,两只股票可能因为共同被第三个因素驱动而表现出高相关
3. 时变性:相关系数在市场平静时低,危机时飙升——"correlation goes to 1 in a crisis"是华尔街名言
4. 尾部相关 ≠ 整体相关:两个资产正常时段相关性低,但极端行情可能高度相关。需要用"尾部相关系数"(Tail Dependence)补充分析
// python
# 计算滚动相关系数(观察时变性)
rolling_corr = returns['SPY'].rolling(window=60).corr(returns['GLD'])
rolling_corr.plot(figsize=(12, 4), title='SPY-GLD 60日滚动相关系数')
你会发现:SPY和GLD的相关系数在2008年金融危机、2020年3月都出现了剧烈波动。静态地看一个"平均值"是不够的。
WHAT:掌握相关性分析后,你的投资能力升级在哪?
核心认知
1. 分散投资的本质是"低相关性",不是"多持仓"。买了20只同行业股票不叫分散,那叫集中持仓穿了件花衣服
2. 协方差是起点,相关系数才是工具。协方差告诉你方向,相关系数告诉你强度——且不受波动率干扰,可以跨资产比较
3. 马科维茨的"免费午餐":在预期收益不变的前提下,通过降低资产间相关性来降低组合波动率,这是投资中唯一确定存在的"免费午餐"
4. 相关性不是常数:危机时一切相关性趋向于1,你的分散投资在最需要它的时候可能失效——这是必须接受的现实,不是理论缺陷
5. 真正的多资产分散:跨股票、债券、商品、黄金、REITs、地域(发达+新兴),驱动因素不同,相关性天然较低
你的组合"伪分散"自测清单
检查项 ✅ 真分散 ❌ 伪分散
持仓数量 标的多且跨资产类别 数量多但全在同一板块
相关系数 大部分配对 < 0.5 大部分配对 > 0.7
地域覆盖 至少3个市场 全在一个国家
资产类别 股票+债券+商品+另类 只有股票
危机表现 2008/2020中回撤小于单一市场 跟单一市场同幅度下跌
行动清单
☐ 拉取你当前持仓的所有标的,计算相关系数矩阵。如果超过一半的配对相关系数 > 0.7,你的"分散投资"需要重构
☐ 用滚动相关系数检查时变性——别只看一个静态数字,看它在不同市场阶段的稳定性
☐ 引入低相关资产类别:如果目前只有股票,优先加入国债ETF(AGG/TLT)和黄金ETF(GLD),这是最快提升分散效果的方式
☐ 做一次"危机相关性"压力测试:拉取2008年9月-2009年3月、2020年2-3月的数据,看你的组合在那个时段的相关系数是多少
☐ 计算你当前组合的真实波动率,跟同等收益下的"最低波动率组合"做对比,量化你为"伪分散"付出了多少额外风险
一句话总结
"分散投资"不是买得多,而是买得"不相关"。搞懂了协方差和相关系数,你才能真正区分"有效分散"和"伪分散"——前者是免费午餐,后者是自我安慰。

下一篇预告:第28篇——从随机到有序:随机过程在金融模型中的应用