【量化投资从入门到精通 #29】相关性与分散别把鸡蛋放一个篮子
前两篇都在泼冷水。这篇给个不用调参、不用改策略、几乎白送的改进:分散。
一、这个方法解决什么投资问题
散户最典型的仓位结构是:全部资金押 1–2 只股票。理由通常是"我最看好它"。
结果是:你的账户波动 = 那只股票的波动。它一天跌 8%,你就跌 8%。而分散最反直觉的地方在于——把钱分到 5 只上,组合波动会低于这 5 只的平均波动,且这部分降低是不用付出收益代价的。
这是投资里少有的"免费午餐",来源是相关性小于 1。
二、核心思想:相关性决定分散效果
两个资产的日收益相关系数 ρ:
- ρ = 1(完全同步)→ 分散无效,组合波动 = 平均波动
- ρ = 0(毫不相干)→ 分散效果最好,N 个资产波动降到约 1/√N
- ρ < 0(反向)→ 可以互相对冲
所以选标的不是"挑最好的 5 只",而是挑彼此不同步的 5 只。两只都是银行股,ρ 很高,分散约等于没分。
三、实操演示
def corr(a, b):
ma, mb = sum(a)/len(a), sum(b)/len(b)
cov = sum((a[i]-ma)*(b[i]-mb) for i in range(len(a))) / (len(a)-1)
return cov / (std(a)*std(b))
port = [sum(data[c][i] for c in codes)/len(codes) for i in range(n)] # 等权组合日收益
port_vol = std(port) * math.sqrt(252) # 年化波动
真实输出(2026-08-06,5 只 × 249 个交易日)相关系数矩阵:
| 茅台 | 平安 | 招行 | 美的 | 长电 | |
|---|---|---|---|---|---|
| 贵州茅台 | 1.00 | 0.57 | 0.45 | 0.40 | 0.40 |
| 中国平安 | 0.57 | 1.00 | 0.49 | 0.34 | 0.35 |
| 招商银行 | 0.45 | 0.49 | 1.00 | 0.32 | 0.58 |
| 美的集团 | 0.40 | 0.34 | 0.32 | 1.00 | 0.34 |
| 长江电力 | 0.40 | 0.35 | 0.58 | 0.34 | 1.00 |
年化波动率:
| 标的 | 年化波动 |
|---|---|
| 贵州茅台 | 22.06% |
| 中国平安 | 26.90% |
| 招商银行 | 17.45% |
| 美的集团 | 18.96% |
| 长江电力 | 13.68% |
| 个股平均 | 19.81% |
| 等权组合 | 14.68% ← 降低 25.89% |
四、结果解读
只是把钱平均分成 5 份,波动就从 19.81% 降到 14.68%——降了四分之一。 没有择时、没有调参、没有多做一次交易。
再看细节:这 5 只的相关系数在 0.32 ~ 0.58 之间,全部小于 1,所以分散生效了。如果换成 5 只银行股(相关系数普遍 0.8+),降幅会小得多。
这对策略意味着什么:#03 讲过夏普 = 收益 ÷ 波动。分散在不动收益的前提下把分母砍掉 26%,等于夏普直接提升约 35%。这是比调 MA 参数划算得多的改进。
为什么不能无限分散:降幅有下限。市场里存在系统性风险(大盘一起跌),它无法被分散掉。上表相关系数没有一个接近 0,就是因为它们都在同一个 A 股市场里。实证上 A 股 15–20 只以后,边际收益就很小了。
五、常见陷阱
- 伪分散:买 10 只但全是同一行业/同一风格,相关系数 0.85,等于买了一只。
- 危机时相关性飙升:平时 0.4,暴跌时可能一起冲到 0.9——分散在最需要它的时候最弱。
- 只算收益不算相关:选标的时只看谁涨得多,不看彼此的同步性。
- 过度分散:50 只以上管理成本、交易成本上升,收益却被摊平。
六、小结 + 下篇预告
分散是唯一的免费午餐,但只有相关性低才算数。实测 5 只低相关标的等权持有,年化波动从 19.81% 降到 14.68%。选标的时,请把相关系数矩阵和收益率一起看。
下篇 #30:止损与仓位——实测告诉你固定止损为什么常常是摆设,跟踪止损才真正管用。
免责声明
本文为量化方法教学,标的为示例,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。



