均值-方差优化(MVO):六十年前的诺奖与它的"玻璃心"
我的掌握程度:
先掌握这个答案
MVO标准形:max_w (w'μ − λ·w'Σw),s.t. 权重和=1、其他约束。μ=预期收益向量、Σ=协方差矩阵、λ=风险厌恶。翻车机理:解对μ极端敏感——μ的小误差导致w大幅跳变(优化器是「误差放大器」:它专门把估计误差最大化的方向上加仓);样本Σ在高维下病态(近奇异,求逆爆炸)。补救阶梯:①收缩估计Σ(Ledoit-Wolf);②加权重约束(单票上限、换手惩罚)——粗暴但有效;③Black-Litterman:用市场均衡做先验、观点做修正(q-556);④干脆放弃精确解:风险平价/等权(q-560/q-063的1/N奇迹)。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
1952年,25岁的马科维茨用一篇14页的博士论文开创了现代金融:组合选择=在「预期收益」与「风险(协方差)」之间做最优化。1990年诺奖加冕。但六十年来从业者对MVO的感情复杂——它理论上完美,实践上脆得像玻璃。
由此产生的问题
MVO的数学形态是什么?它为什么在实践中"翻车"?工程上有哪些补救?
核心概念
MVO标准形:max_w (w'μ − λ·w'Σw),s.t. 权重和=1、其他约束。μ=预期收益向量、Σ=协方差矩阵、λ=风险厌恶。翻车机理:解对μ极端敏感——μ的小误差导致w大幅跳变(优化器是「误差放大器」:它专门把估计误差最大化的方向上加仓);样本Σ在高维下病态(近奇异,求逆爆炸)。补救阶梯:①收缩估计Σ(Ledoit-Wolf);②加权重约束(单票上限、换手惩罚)——粗暴但有效;③Black-Litterman:用市场均衡做先验、观点做修正(q-556);④干脆放弃精确解:风险平价/等权(q-560/q-063的1/N奇迹)。
为什么需要它
①理解现代组合理论的起点:后续一切方法(BL、风险平价、鲁棒优化)都是对MVO某处缺陷的修补——不懂MVO就看不懂它们的来意;②工程直觉:优化器的输出永远要「人工审阅」——权重集中于单一资产=μ估计在作祟的警报;③面试常客:『MVO为什么难用』的标准答案就在翻车机理+补救阶梯里。
实际应用场景
落地工具:cvxpy几行代码(本题code);机构实践=「优化+约束+人工否决」三道闸:优化器给方案→约束裁剪→风险经理审阅集中度后才执行。
与之前知识的联系
q-552提出「从分数到权重」的问题,MVO是第一个正式答案;q-295(阶段3协方差矩阵)在此成为核心输入;q-556/560的BL与风险平价是它的两个著名补丁;阶段7的组合风控是同一暴露管理思想的延伸。
⚠ 常见误解
- MVO数学最优=实践最优:它最优的前提是μ和Σ精确已知——而估计误差恰恰是常态;『最优解』常常是『最极端的赌注』
- 补救是为了更精确:不,多数补救(约束/收缩/等权)是主动降低对估计的依赖——用次优换稳健
- MVO已过时该淘汰:它仍是约束优化的骨架(多因子组合的凸优化形态);淘汰的是「裸用MVO」的天真
🛠 本题实践任务
跑通上述cvxpy实验,再试三件事:①把cap从0.6降到0.4(看约束如何驯服优化器)②对Σ加0.01对角收缩重解 ③λ调大/调小各一档。各记录权重变化并写一句话感受。
💡 提示(先自己想5分钟再看)
λ是风险厌恶:调大=更保守(趋近最小方差);cap越紧、解越稳——稳健性常来自约束而非精确。
✅ 验收标准
三组对照结果+三句话感受。你亲手摸过了现代组合理论的「玻璃心」——比背十遍定义记得牢。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(协方差矩阵、凸优化概念、因子到权重),再用案例、公式和代码帮助理解。此功能需要先启用服务。