【量化投资从入门到精通 #39】组合优化:等权 / 风险平价 / 最小方差,怎么配权重
从"选股"切到"组合"。#29 讲了分散能降波动,这篇讲怎么决定每只买多少——权重本身就是一种策略。
一、这个方法解决什么投资问题
29 证明了一个朴素道理:把鸡蛋放不同篮子,波动会下降。但"各买多少"没说清。
- 全仓一只:波动最大、最怕黑天鹅
- 等权:简单,但高波动股和低波动股拿一样多,组合被高波动股主导
- 能不能让每只对组合风险的贡献一样大?或者直接把组合波动压到最低?
这三种思路对应三种经典配置,本文用真实 K 线算给你看差别。
二、核心思想:权重是另一只看不见的手
组合波动率 ≠ 各股波动的平均。它取决于权重 × 个股波动 × 两两相关性(#29 的协方差框架)。所以配权重就是在"预期收益"和"组合风险"之间做权衡:
- 等权:什么都不假设,省事,但默认让高波动股主导。
- 风险平价(简化):权重 ∝ 1/个股波动,让每只的波动贡献接近——低波动股(如长江电力)自然拿更多。
- 最小方差:在"只做多、权重和=1"约束下,搜索使组合波动最小的权重——会疯狂偏向最低波动的那只。
三、实操演示
def port_stats(rets, w):
codes = list(rets.keys()); n = len(rets[codes[0]])
p = [sum(w[c]*rets[c][i] for c in codes) for i in range(n)]
vol = std(p) * math.sqrt(252)
ann = (sum(p)/n) * 252
return ann, vol, (ann/vol if vol else 0)
等权
w_eq = {c: 1/len(codes) for c in codes}
# 风险平价(简化:∝ 1/年化波动)
inv = {c: 1/(std(rets[c])*ANN) for c in codes}
w_rp = {c: inv[c]/sum(inv.values()) for c in codes}
# 最小方差(随机搜索 20000 次,只做多)
best_w, best_vol = None, 1e9
for _ in range(20000):
r = [random.random() for _ in codes]
w = {c: r[i]/sum(r) for i, c in enumerate(codes)}
if port_stats(rets, w)[1] < best_vol:
best_vol, best_w = port_stats(rets, w)[1], w
真实输出(2026-08-06,6 只标的 × 249 个交易日):
标的 等权 风险平价 最小方差
贵州茅台 16.7% 15.6% 5.4%
中国平安 16.7% 12.8% 0.9%
招商银行 16.7% 19.7% 22.6%
美的集团 16.7% 18.1% 15.8%
长江电力 16.7% 25.1% 46.3%
宁德时代 16.7% 8.6% 8.9%
方案 年化收益 年化波动 收益/波动
等权 4.44% 14.97% 0.30
风险平价 1.41% 13.61% 0.10
最小方差 1.89% 12.27% 0.15
单只年化波动:贵州茅台 22.06% → 宁德时代 39.89%。
四、结果解读
- 分散确实降了波动:单只波动 13.68%~39.89%,三种组合都被压到 12%~15%,印证 #29。
- 风险平价最"稳"但收益最低:它把近一半权重给了低波动的长江电力(25.1%),组合波动最低(13.61%),但代价是年化收益只剩 1.41%——收益/波动比反而最低(0.10)。因为它太保守,牺牲了收益。
- 最小方差最极端:46.3% 押长江电力、中国平安只剩 0.9%,波动压到 12.27% 最低,但这是"赌一只低波动股",集中度风险被隐藏了。
- 等权反而性价比不差:收益最高(4.44%)、波动只比最优高一点,收益/波动 0.30 远好于另两种。当个股本身不极端时,等权是性价比最高的"免费午餐"。
五、常见陷阱
- 最小方差过度集中:表面波动最低,实则重仓一两只,黑天鹅时比等权更脆弱。
- 风险平价不是"收益最大化":它优化的是风险,不是收益,别期待高回报。
- 权重依赖历史波动:用过去 250 天波动配的权,遇到风格切换会失灵(波动率本身也在漂移)。
- 忽略相关性突变:危机时所有股票相关性冲向 1,分散保护瞬间消失(#29)。
- 只看波动不看流动性:理论最优权重可能要求买卖极不活跃的票。
六、小结 + 下篇预告
权重是组合里看不见的策略:等权省事且常常性价比最高;风险平价/最小方差压波动但牺牲收益、还可能过度集中。真实数据上,6 只股的等权组合收益/波动比(0.30)反而最优。
下篇 #40 聊一个实操问题:配好权重后多久重新调一次? 调太勤被成本吃掉(#31),调太懒又跑偏——用真实数据找平衡点。
免责声明
本文为量化方法教学,标的为示例,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。

浙公网安备 33010602011771号