跳到正文

稳健组合优化,Goldfarb-Iyengar 路线

Goldfarb & Iyengar (2003) 稳健组合优化。把输入视为不确定的,优化最坏情形。盒式与椭球不确定集。数学与实践。

第 6 篇 · 共 12 篇 约 13 分钟

我们已经花了四篇文章讨论处理 MVO 中估计误差的方法:收缩、重采样、稳健优化、Black-Litterman。本文专门讲稳健优化,即 max-min 框架,其中你把 (μ,Σ)(\mu, \Sigma) 视为不确定的并优化最坏情形。

稳健优化与其他方法有不同的味道。收缩把估计向结构化目标拉。重采样对 bootstrap 噪声取平均。Black-Litterman 通过贝叶斯推断更新估计。稳健优化的逻辑是:我不知道真实情况,但我知道哪些是合理的,我会为最坏合理情形做优化。

经典文献是 Goldfarb & Iyengar (2003) 的 “Robust Portfolio Selection Problems”。本文涵盖他们的框架:Σ\Sigma 的因子模型、盒式与椭球不确定集,以及相应的稳健 MVO 公式。

问题设定

标准 MVO 是:

min⁡w w⊤Σws.t. w⊤μ≥rˉ,1⊤w=1\min_w \ w^\top \Sigma w \quad \text{s.t. } w^\top \mu \geq \bar{r}, \quad \mathbf{1}^\top w = 1

其中 (μ,Σ)(\mu, \Sigma) 是已知输入。稳健 MVO 用不确定集 Uμ,UΣ\mathcal{U}_\mu, \mathcal{U}_\Sigma 替换 (μ,Σ)(\mu, \Sigma):

min⁡wmax⁡Σ∈UΣ,μ∈Uμ w⊤Σws.t. min⁡μ∈Uμw⊤μ≥rˉ,1⊤w=1\min_w \max_{\Sigma \in \mathcal{U}_\Sigma, \mu \in \mathcal{U}_\mu} \ w^\top \Sigma w \quad \text{s.t. } \min_{\mu \in \mathcal{U}_\mu} w^\top \mu \geq \bar{r}, \quad \mathbf{1}^\top w = 1

这是一个 max-min 问题。你(投资者)希望最小化最坏情形方差。自然(在 UΣ\mathcal{U}_\Sigma 上)希望最大化方差并在 Uμ\mathcal{U}_\mu 上最小化收益(以违反你的收益约束)。

稳健对偶问题就是你要求解的问题。它仍然是凸规划(对合适的 U\mathcal{U} 选择),所以你得到全局最优和高效计算。

为什么因子模型有帮助

完整协方差矩阵 Σ\Sigma 有 N(N+1)/2N(N+1)/2 个自由参数。对 N=100N = 100 个资产,那是 5,050 个参数。从数据中估计它们基本无望。

因子模型大幅减少参数。标准 KK 因子模型:

r=Bf+ϵr = B f + \epsilon

其中 r∈RNr \in \mathbb{R}^N 是资产收益,B∈RN×KB \in \mathbb{R}^{N \times K} 是因子载荷,f∈RKf \in \mathbb{R}^K 是因子收益,ϵ∈RN\epsilon \in \mathbb{R}^N 是特异噪声。协方差为:

Σ=BFB⊤+D\Sigma = B F B^\top + D

其中 FF 是因子协方差矩阵,DD 是特异方差的对角矩阵。

这把参数从 O(N2)\mathcal{O}(N^2) 减到 O(NK+K2)\mathcal{O}(N K + K^2)。对 K=5K = 5 个因子、N=100N = 100,那是 525 个参数。可处理得多。

Goldfarb & Iyengar (2003) 以因子模型为出发点。他们假设你有估计 B^,F^,D^\hat{B}, \hat{F}, \hat{D},并围绕每个构建不确定集。

盒式不确定

最简单的方案:每个参数可以在一个盒内独立变化。

对因子载荷:

UB={B:∣Bij−B^ij∣≤ϵij(B)}\mathcal{U}_B = \{B : |B_{ij} - \hat{B}_{ij}| \leq \epsilon_{ij}^{(B)}\}

对因子协方差:

UF={F:F⪰F^, F∈S+K, tr(F)≤tr(F^)+ϵF}\mathcal{U}_F = \{F : F \succeq \hat{F}, \ F \in \mathbb{S}_+^K, \ \text{tr}(F) \leq \text{tr}(\hat{F}) + \epsilon_F\}

对特异方差:

UD={D:D 对角, Dii≥D^ii, Dii≤D^ii+ϵii(D)}\mathcal{U}_D = \{D : D \text{ 对角}, \ D_{ii} \geq \hat{D}_{ii}, \ D_{ii} \leq \hat{D}_{ii} + \epsilon_{ii}^{(D)}\}

这些都不简单。UF\mathcal{U}_F 是迹被常数约束的 PSD 矩阵集合。UD\mathcal{U}_D 允许特异方差大于估计(但不能更小)。

这些集合下的稳健 MVO 变成二阶锥规划(SOCP)。可以在多项式时间内求解。

椭球不确定

更结构化的方案:每个参数位于围绕其估计的椭球内。

对因子载荷:

UB={B:∥B−B^∥F≤ϵB}\mathcal{U}_B = \{B : \|B - \hat{B}\|_F \leq \epsilon_B\}

这表示偏差的 Frobenius 范数被约束。在某些方向上比盒式更保守,在另一些方向上更宽松。

对因子协方差:

UF={F:(F−F^)∈EF}\mathcal{U}_F = \{F : (F - \hat{F}) \in \mathcal{E}_F\}

其中 EF\mathcal{E}_F 是 K×KK \times K 对称矩阵空间中的椭球。椭球不确定下的稳健对偶问题仍是 SOCP。

稳健对偶问题

在所有参数的椭球不确定下,稳健 MVO 变为:

min⁡w,ξB,ξF,ξDξB+ξF+ξDs.t.w⊤Σ^w+∥CBw∥ξB+∥CFw∥ξF+∥CDw∥ξD≤σˉ21⊤w=1,w≥0\begin{aligned} \min_{w, \xi_B, \xi_F, \xi_D} \quad & \xi_B + \xi_F + \xi_D \\ \text{s.t.} \quad & w^\top \hat{\Sigma} w + \|C_B w\| \xi_B + \|C_F w\| \xi_F + \|C_D w\| \xi_D \leq \bar{\sigma}^2 \\ & \mathbf{1}^\top w = 1, \quad w \geq 0 \end{aligned}

这是草图。精确形式取决于你选择哪个不确定集。但结构是:每个不确定集对应辅助变量 ξ\xi,ww 中的二次目标,以及 SOC 约束。

用任何 SOCP 求解器求解:cvxpy、Mosek、Gurobi。现代求解器对中等 NN 在毫秒级处理完毕。

与收缩的关系

Tütüncü & Koenig (2004) 给出了一个漂亮的结果:对 Σ\Sigma 的椭球不确定下的稳健 MVO 等价于对”稳健化”协方差矩阵的 MVO:

Σrobust=Σ^+δI\Sigma_{\text{robust}} = \hat{\Sigma} + \delta I

其中 δ\delta 取决于不确定集的大小。这正是向 σˉ2I\bar{\sigma}^2 I 的 Ledoit-Wolf 收缩。

所以对一种特定的不确定集,稳健优化在数学上等价于收缩。稳健框架的优势在于它给了你一个有原则的方式来选择 δ\delta,取决于你对 Σ^\hat{\Sigma} 估计的不信任程度,而非某种不透明的 MSE 优化。

实践中,这意味着:如果你采用对椭球 Σ\Sigma 不确定的稳健 MVO,你就在做接近 Ledoit-Wolf 收缩的事情。稳健框架帮助你校准收缩强度。

对更复杂的不确定集(盒式、混合),稳健优化能给出与收缩不同的组合。差异通常不大。

带椭球 Σ\Sigma 不确定的稳健 MVO

具体设置。假设你有估计 Σ^\hat{\Sigma} 和一个椭球不确定集:

UΣ={Σ:Σ⪰0, ∥Σ−Σ^∥F≤δ}\mathcal{U}_\Sigma = \{\Sigma : \Sigma \succeq 0, \ \|\Sigma - \hat{\Sigma}\|_F \leq \delta\}

稳健 MVO 是:

min⁡wmax⁡Σ∈UΣw⊤Σws.t. budget\min_w \max_{\Sigma \in \mathcal{U}_\Sigma} w^\top \Sigma w \quad \text{s.t. budget}

内层 max 是一个凸问题。其解为:

max⁡Σ∈UΣw⊤Σw=w⊤Σ^w+δ∥w∥2\max_{\Sigma \in \mathcal{U}_\Sigma} w^\top \Sigma w = w^\top \hat{\Sigma} w + \delta \|w\|^2

所以稳健对偶问题为:

min⁡w w⊤Σ^w+δ∥w∥2s.t. budget\min_w \ w^\top \hat{\Sigma} w + \delta \|w\|^2 \quad \text{s.t. budget}

这是带 L2 正则化的标准 MVO 问题。闭式解(无不允许做空):

w⋆=(Σ^+δI)−111⊤(Σ^+δI)−11w^\star = \frac{(\hat{\Sigma} + \delta I)^{-1} \mathbf{1}}{\mathbf{1}^\top (\hat{\Sigma} + \delta I)^{-1} \mathbf{1}}

漂亮。对椭球 Σ\Sigma 不确定的稳健最优,就是对收缩后协方差 Σ^+δI\hat{\Sigma} + \delta I 计算的标准 GMV 组合。

代码层面:

import numpy as np

Sigma = ...  # Sample covariance
delta = 0.01  # Robustness parameter

Sigma_robust = Sigma + delta * np.eye(len(Sigma))
Sigma_inv = np.linalg.inv(Sigma_robust)
ones = np.ones(len(Sigma))
w_robust = Sigma_inv @ ones / (ones @ Sigma_inv @ ones)

相比标准 MVO,只是两行有意义的修改。加对角项,求逆,归一化。

带收益不确定的稳健 MVO

现在假设你还有 μ\mu 的不确定:

Uμ={μ:∥μ−μ^∥2≤γ}\mathcal{U}_\mu = \{\mu : \|\mu - \hat{\mu}\|_2 \leq \gamma\}

带收益和协方差双重不确定的稳健 MVO:

min⁡wmax⁡Σ,μw⊤Σws.t. min⁡μw⊤μ≥rˉ\min_w \max_{\Sigma, \mu} w^\top \Sigma w \quad \text{s.t. } \min_\mu w^\top \mu \geq \bar{r}

内层问题有闭式解。稳健对偶问题为:

min⁡w w⊤(Σ^+δI)w−γ∥w∥s.t. budget\min_w \ w^\top (\hat{\Sigma} + \delta I) w - \gamma \|w\| \quad \text{s.t. budget}

等等,这给出了一个非凸目标(减去范数)。让我重新来。

带双重不确定的标准稳健公式:

min⁡w w⊤(Σ^+δI)ws.t. μ^⊤w−γ∥w∥≥rˉ\min_w \ w^\top (\hat{\Sigma} + \delta I) w \quad \text{s.t. } \hat{\mu}^\top w - \gamma \|w\| \geq \bar{r}

这是 SOCP:二次目标,二阶锥约束。用标准工具可解。

如何选择不确定集

稳健优化最困难的部分是选择 δ\delta(对 Σ\Sigma)和 γ\gamma(对 μ\mu)。一些方法。

方法 1:统计估计。 把 δ\delta 设为 ∥Σ^−Σ0∥F\|\hat{\Sigma} - \Sigma_0\|_F 的置信界。这需要对 Σ^\hat{\Sigma} 抽样分布的假设。在高斯收益和因子结构下,你可以推导解析置信界。

方法 2:敏感性分析。 把 δ\delta 设为这样的值:对 Σ^\hat{\Sigma} 的 10% 扰动不会使最优组合变化超过 5%。这是经验性的,取决于具体问题。

方法 3:交叉验证。 对一组 δ\delta 值跑优化,选择样本外 Sharpe 最佳的。标准但数据饥渴。

方法 4:通过构造保证稳健。 选择 δ\delta 以达到目标最坏情形波动率。如果你想要组合在最坏情形 Σ\Sigma 下最多 12% 波动率,就相应设置 δ\delta。

这些都不完美。实践中,大多数从业者使用方法 2 或 3,在宽范围内取中间值。

实际问题

三个要了解的问题。

问题 1:保守性。 稳健优化产生的组合是保守的,因为它们对冲可能不会发生的最坏情形。这意味着预期收益更低。如果你的不确定集太大,稳健性的代价会很大。

问题 2:范数选择。 盒式不确定使用 L_infinity(每个参数最大偏差)。椭球不确定使用 L_2(Frobenius)。不同范数给出不同组合。理论上没有特权选择。

问题 3:计算成本。 带因子模型的稳健 MVO 仍是 SOCP。对 N=500N = 500、K=10K = 10,这可能很慢。现代求解器能处理,但并非免费。

尽管如此,稳健优化仍在几家大型资产管理人生产环境中使用。它的主要吸引力是有原则的不确定性处理:你说明你不知道什么,优化器对冲它。

稳健优化 vs. 重采样

两者都处理输入不确定,但方式不同。

重采样:采样多个输入,逐个优化,求平均。这给出一个在 bootstrap 样本上平均表现良好的组合。

稳健优化:在不确定集上优化最坏情形。这给出一个在最坏合理情景下也不出问题的组合。

两者给出不同组合。重采样偏好”中间”表现良好的组合。稳健优化偏好”不好情景下也不爆”的组合。

对多数机构应用,稳健优化比重采样更保守。一些机构同时跑两者并混合。

文献综述

  • Goldfarb & Iyengar (2003). “Robust Portfolio Selection Problems.” Mathematics of Operations Research 28(1): 1-21. 经典文献。
  • Tütüncü & Koenig (2004). “Robust Asset Allocation.” Annals of Operations Research 132(1-4): 157-187. 与收缩的等价性。
  • Lobo, Vandenberghe, Boyd & Lebret (1998). “Applications of Second-Order Cone Programming.” Linear Algebra and its Applications 284(1-3): 193-228. SOCP 背景。
  • Ben-Tal & Nemirovski (1998). “Robust Convex Optimization.” Mathematics of Operations Research 23(4): 769-805. 稳健优化基础。
  • Bertsimas & Sim (2004). “The Price of Robustness.” Operations Research 52(1): 35-53. 稳健性的代价。
  • El Ghaoui, Oks & Oustry (2003). “Worst-Case Value-At-Risk and Robust Portfolio Optimization: A Conic Programming Approach.” Operations Research 51(4): 543-556.
  • Fabozzi, Huang & Zhou (2010). “Robust Portfolios: Recent Contributions from Operations Research and Finance.” Journal of Portfolio Management 36(3): 89-98. 综述。

SOCP 公式详解

对因子载荷的盒式不确定下的稳健 MVO,公式是一个二阶锥规划(SOCP)。让我们推导它。

设置:因子模型 Σ=BFB⊤+D\Sigma = B F B^\top + D,BB 在盒 UB\mathcal{U}_B 内不确定,FF 固定,DD 固定。

稳健组合方差:

max⁡B∈UBw⊤(BFB⊤+D)w\max_{B \in \mathcal{U}_B} w^\top (B F B^\top + D) w

对固定的 F,DF, D,关于 BB 的内层 max 是在盒上对二次函数取最大。最大值在盒的顶点处取到(每个项取 ±ϵ\pm \epsilon)。

对每个项 BijB_{ij},它对 w⊤BFB⊤ww^\top B F B^\top w 的贡献既通过 BB 线性又通过 BFB⊤B F B^\top 二次地依赖 BijB_{ij}。最大值一般不在顶点;它是 SOCP。

重述使用辅助变量和 SOC 约束。标准形式:

min⁡w,ξij∑ijξij+(其他项)\min_{w, \xi_{ij}} \quad \sum_{ij} \xi_{ij} + \text{(其他项)}

受 SOC 约束:

∥Aijw∥≤ξij+常数\|A_{ij} w\| \leq \xi_{ij} + \text{常数}

其中 AijA_{ij} 由 FF、DD 和盒式约束构造。

实践中,你不会手工写这个。你会使用 cvxpy 或 yalmip 这样的建模语言。求解器处理 SOCP 结构。

因子模型的联系

稳健优化在结合因子模型时最为有用。完整 Σ\Sigma 的参数太多无法估计。因子结构把参数减到 O(NK+K2)\mathcal{O}(NK + K^2)。

因子模型也使不确定建模可处理。你把不确定放在因子载荷(BB 矩阵)、因子协方差(FF)和特异方差(DD)上。每一项都比完整协方差小。

Goldfarb & Iyengar (2003) 为每种不确定集组合推导了 SOCP。结果是一个对所有三部分的估计误差都稳健的组合。

生产中:大多数稳健 MVO 实现使用因子模型。例如 Axioma 的风险模型就有带关联不确定估计的因子载荷。

保守性权衡

稳健优化产生保守组合。Bertsimas & Sim (2004) 形式化的”稳健性代价”量化了这一点。

对带不确定预算 Γ\Gamma 的稳健组合,稳健性代价是名义最优(无不确定)与稳健最优之间的差距。对小 Γ\Gamma,差距小。对大 Γ\Gamma,差距可以很大。

经验上,带合理不确定集的稳健 MVO 相对名义 MVO 给出 20-50 个基点的年化收益拖累。这就是对冲最坏情形的代价。

这是否值得取决于应用。对有负债驱动授权的养老金,保守性有价值。对激进的對冲基金,太多了。

稳健 CVaR

一种自然的组合:以 CVaR 作为风险度量的稳健优化。公式:

min⁡wmax⁡Σ∈UΣCVaRα(portfolio loss under Σ)\min_w \max_{\Sigma \in \mathcal{U}_\Sigma} \text{CVaR}_\alpha(\text{portfolio loss under } \Sigma)

CVaR 内部对 Σ\Sigma 的 max 不简单。重述需要 SOC 约束和额外变量。

结果:一个同时对最坏情形输入和最坏情形尾部结果对冲的组合。最具防御性的可能配置。

这被一些保险公司和极度厌恶风险的配置人使用。大多数机构使用者不会走到这一步。

稳健优化与贝叶斯稳健性

一个值得注意的联系:带特定不确定集的稳健优化等价于带特定先验的贝叶斯优化。

例如:

  • 带盒式 Σ\Sigma 不确定的稳健 MVO ↔ 带 Σ\Sigma 在盒内均匀先验的贝叶斯 MVO。
  • 带椭球 Σ\Sigma 不确定的稳健 MVO ↔ 带以 Σ^\hat{\Sigma} 为中心的高斯先验的贝叶斯 MVO。
  • 带 Frobenius 范数球的稳健 MVO ↔ 带各项高斯先验的贝叶斯 MVO。

等价并不精确(损失函数不同),但所得组合相似。

实践中,这意味着:如果你在做稳健优化,你就在隐式地做带特定先验的贝叶斯优化。不确定集的选择就是先验的选择。

数值问题

稳健 MVO 比标准 MVO 更难求解。三个问题:

问题 1:SOCP 求解器。 标准 QP 求解器(quadprog、OSQP)不能处理 SOC 约束。你需要 Mosek、Gurobi 或 ECOS。这些是商业的(ECOS 除外)。

问题 2:问题规模。 带 N=500N = 500 个资产、K=50K = 50 个因子的稳健 MVO 有许多 SOC 约束。求解器可能很慢(数秒到分钟)。对高频再平衡,这太慢。

问题 3:数值条件。 当不确定集大时,稳健公式可能病态。加正则化有帮助。

实践中,多数生产系统使用简化的稳健公式(仅 Σ+δI\Sigma + \delta I 版本)以避免这些问题。完整的 SOCP 版本仅在简化版本不足以捕获输入不确定时才使用。

不允许做空组合的稳健优化

带不允许做空约束的稳健 MVO:

min⁡w w⊤(Σ^+δI)ws.t. 1⊤w=1, w≥0\min_w \ w^\top (\hat{\Sigma} + \delta I) w \quad \text{s.t. } \mathbf{1}^\top w = 1, \ w \geq 0

这是带 Σ\Sigma 上 Ledoit-Wolf 收缩的标准最小方差 QP。无不允许做空时闭式解,有则用 QP。

稳健解释:即使在最坏情形(不确定集中最大扰动)下,组合方差被 w⊤(Σ^+δI)ww^\top (\hat{\Sigma} + \delta I) w 界定。所以不允许做空最小方差解隐式地是稳健的。

这是一个漂亮的统一:不允许做空最小方差就是稳健 MVO。不需要额外机制。

稳健优化与随机优化的选择

两种处理输入不确定的对立方法:

  • 稳健优化:假设输入在集合 U\mathcal{U} 内,优化最坏情形。
  • 随机优化:假设输入有分布,优化期望情形。

对有罕见但严重错误的高赌注应用(金融危机、模型误设),稳健优化更安全。对有频繁小错误的应用,随机优化给出更好的平均表现。

一些从业者把两者结合:随机优化处理平均情形,稳健约束处理最坏情形。这就是”机会约束”或”分布稳健”优化。

要点回顾

稳健优化把 (μ,Σ)(\mu, \Sigma) 视为不确定的,并在不确定集上优化最坏情形。结果是一个对合理输入扰动对冲的组合。

对椭球 Σ\Sigma 不确定,稳健 MVO 等价于带 Σ\Sigma 收缩的 MVO。这在数学上漂亮且有用:它给了你有原则的收缩强度。

完整 SOCP 公式处理盒式不确定、椭球不确定和因子结构。它更灵活但计算上更难。

对不允许做空组合,最小方差 QP就是稳健 MVO。Σ\Sigma 上的收缩就是稳健性。这种统一是该领域最干净的结果之一。

最难的部分是不确定集大小的选择。有几种启发式方法,没有一种完美。通过交叉验证或敏感性分析做校准是标准做法。

稳健优化比重采样或收缩更保守。稳健性代价通常为年化 20-50 个基点的收益拖累。这对风险厌恶型配置人可接受,对激进型则不然。

稳健优化可以与 CVaR、Black-Litterman 和随机规划组合获得额外稳健性。实践中,最简单的公式(不允许做空最小方差加收缩)是最常见的。

下一篇文章:多期组合优化——Li-Ng 动态规划方法。