2. 均值方差模型的数学推导:目标函数与约束条件、拉格朗日乘子法求解、两基金分离定理

好,咱们直接进入正题。

上一章我们聊了马科维茨为什么要搞这套东西。这一章,我们来手撕它的数学内核。

说实话,我第一次看这个模型的时候,觉得它就是个二次规划问题。但真正在项目里跑起来,才发现坑不少。比如协方差矩阵的奇异性问题,我后面会讲到。

2.1 目标函数与约束条件

先明确我们要干什么。

你有一堆资产,比如股票A、B、C。你想分配资金,让组合的预期收益尽可能高,同时风险尽可能低。

但鱼和熊掌不可兼得。所以马科维茨把它写成了一个优化问题。

目标函数:最小化组合方差(风险)

min  σ²_p = wᵀ Σ w

其中 w 是权重向量,Σ 是协方差矩阵。

约束条件有两个:

  1. 收益约束:组合的预期收益要达到目标值 μ_p
  2. 权重和约束:所有权重加起来等于1(满仓操作)
s.t.  wᵀ μ = μ_p
      wᵀ 1 = 1

嗯,这里要注意。实际项目中,我们还会加一些额外约束,比如不允许做空(w_i ≥ 0),或者行业集中度限制。但基础模型就这两个约束。

核心理解:这个模型本质上是在收益-风险平面上画一条“有效边界”。边界上的每个点,都是在给定收益下风险最小的组合。

2.2 拉格朗日乘子法求解

怎么解这个优化问题?

拉格朗日乘子法。说白了,就是把约束条件“惩罚”进目标函数里。

构造拉格朗日函数:

L = wᵀ Σ w - λ₁ (wᵀ μ - μ_p) - λ₂ (wᵀ 1 - 1)

这里 λ₁ 和 λ₂ 是拉格朗日乘子。

然后对 w 求偏导,令其等于0:

∂L/∂w = 2Σw - λ₁ μ - λ₂ 1 = 0

解出 w:

w = (1/2) Σ⁻¹ (λ₁ μ + λ₂ 1)

你看,最优权重是 μ 和 1 的线性组合。这个形式很关键,后面两基金分离定理就靠它。

接下来把 w 代回约束条件,解出 λ₁ 和 λ₂。这个过程有点繁琐,但结果是解析的。

我的经验:在实际编码中,我建议直接用数值优化器(比如 scipy.optimize)来求解,而不是手推解析解。原因有二:一是协方差矩阵求逆容易出数值问题;二是加约束时解析解就不灵了。

2.3 两基金分离定理

这个定理很有意思。它说:有效边界上的任意一个组合,都可以由两个“基金”组合而成。

哪两个基金?

  • 最小方差组合:风险最小的那个点
  • 切点组合:与无风险利率连线相切的那个点(如果有无风险资产)

为什么会有这个性质?

你回头看 w 的表达式:w = (1/2) Σ⁻¹ (λ₁ μ + λ₂ 1)。

它本质上是 μ 和 1 的线性组合。而 μ 和 1 分别对应着两个不同的组合权重向量。所以任何有效组合,都是这两个基础组合的线性组合。

实际意义:你不需要去研究所有资产。只要找到这两个“基金”,然后按比例配就行了。这在大型资产管理中非常实用。

我记得有一次帮一家保险资管做配置,他们持有200多只股票。如果用全量优化,协方差矩阵是200×200,计算量巨大。但用两基金分离定理,先算出两个核心组合,再调比例,效率高得多。

注意:两基金分离定理成立的前提是——所有资产都是可交易的,且没有交易成本。现实中这两条都不成立。所以它更多是理论指导,不能直接照搬。

2.4 知识结构图

下面我用一张SVG图来总结这一章的核心逻辑:

均值方差模型数学推导 目标函数 min wᵀΣw 约束条件 wᵀμ=μ_p, wᵀ1=1 拉格朗日乘子法 L = wᵀΣw - λ(...) 最优权重:w = (1/2)Σ⁻¹(λ₁μ + λ₂1) 两基金分离定理 任意有效组合 = 最小方差组合 + 切点组合的线性组合 核心逻辑:二次规划 → 解析解 → 线性组合性质

2.5 避坑指南

最后,分享几个我在项目中踩过的坑:

  • 协方差矩阵不稳定:用历史数据估计的Σ,样本外表现往往很差。我建议用收缩估计或因子模型来降噪。
  • 权重过于集中:不加约束的均值方差模型,经常会把大部分权重分配给少数几个资产。这时候需要加一些正则化项。
  • 忽略交易成本:理论上的最优组合,换手率可能很高。实际中要考虑摩擦成本,否则收益全被手续费吃掉了。

我曾经做过一个回测,直接用原始均值方差模型调仓,结果年化收益还不如等权配置。后来加了换手率惩罚,效果才明显改善。所以,模型再漂亮,也要结合实际约束来用。

好,这一章就到这里。数学推导虽然枯燥,但它是后面所有进阶内容的基础。下一章我们聊聊怎么在实际中估计这些参数——那才是真正考验手艺的地方。


公众号:蓝海资料掘金营,微信deep3321