均值—方差与其失败
理论与现实的落差
Section titled “理论与现实的落差”均值—方差优化在给定输入下是数学最优的:
但实践中的表现糟糕,根源只有一个:输入的估计误差。均值估计的误差远大于协方差(见均值与协方差的估计误差),而优化器把均值放在了输出里权重最大的位置——于是给出极端、不稳定的权重:多头集中在本期均值被高估的资产,权重月月剧变,换手成本把理论优势吃光。
| 修补 | 思想 |
|---|---|
| 协方差收缩(Ledoit–Wolf) | 稳定 ,治标 |
| 均值收缩 / 不用均值 | 最小方差、风险平价,绕开 |
| Black–Litterman | 以市场组合为先验,把"观点"做贝叶斯更新 |
| 约束与正则化 | 权重上下限、 换手惩罚、 权重惩罚 |
| 交易成本入目标 | 换手本身变成惩罚项,见凸优化速览 |
其中最有效的是最朴素的两个:约束与换手约束。
import cvxpy as cpimport numpy as np
def mv_portfolio(mu: np.ndarray, Sigma: np.ndarray, w0: np.ndarray, lam: float = 5.0, w_max: float = 0.15, tc: float = 0.002) -> np.ndarray: """带换手成本与权重上限的均值—方差:约束是稳定的来源""" w = cp.Variable(len(mu)) trade = w - w0 obj = cp.Maximize(mu @ w - lam * cp.quad_form(w, cp.psd_wrap(Sigma)) - tc * cp.norm1(trade)) # L1 换手惩罚 cons = [cp.sum(w) == 1, w >= 0, w <= w_max] cp.Problem(obj, cons).solve(solver=cp.CLARABEL) return w.valueBlack–Litterman 的直觉
Section titled “Black–Litterman 的直觉”直接估均值不可靠,Black–Litterman 换了个思路:
- 先验:市场组合权重反推的隐含均衡收益(市场已把所有公开信息定价);
- 更新:研究者的观点("A 跑赢 B 2%")按置信度与均衡做贝叶斯融合。
结果:观点置信度低时权重靠近市场组合,置信度高时才偏离——输出对输入的敏感度被先验驯服。它没有解决估计误差,而是给了误差一个安全的默认值。
DeMiguel–Garlappi–Uppal (2009) 的著名发现:在多种数据集上,简单等权(1/N)的样本外夏普难以被复杂优化显著战胜。含义很残酷:均值—方差的理论优势,在估计误差与换手成本之后所剩无几。任何复杂组合构建方法,都必须先过等权这一关。
量化中的用法
Section titled “量化中的用法”- 默认带权重上限与 换手约束,优化器输出与上期持仓做比较;
- 均值输入用 Black–Litterman 或收缩,不用原始样本均值;
- 等权作为永久基准,季度对比。
- 优化器是"误差放大器":均值估计误差被放大成极端权重
- 加入换手约束能显著稳定权重
- Black–Litterman 以市场组合为先验,观点为更新