高维风险平价算法 (High-dimensional Risk Parity Algorithms)

一句话:风险平价的权重没有闭式解,只能数值求解。当资产数上百时,SQP、Jacobi、Newton-Nesterov 都慢或不收敛;把问题写成「带对数障碍的二次函数最小化」后,可以直接借用机器学习里的循环坐标下降 (CCD) 与 ADMM。

问题:把 RB 写成带对数障碍的极小化

RB 组合由非线性方程组 RC_i(x)=b_iR(x) 定义。Griveau-Billion 等 (2013) 把它改写为

\min_{x}\ \tfrac{1}{2}x^\top\Sigma x-\lambda\sum_{i=1}^{n}b_i\ln x_i

(\lambda 可取 1,收敛后再归一化 x^\star=y^\star/\sum_i y_i^\star)。这个形式有三个好处:解唯一、权重和约束 \mathbf{1}^\top x=1 被去掉(缩放性质由归一化补回)、x\ge0 由对数自动保证。它同时是 Roncalli (2013) 处理零风险预算 b_i=0 时多个解的办法。

CCD:循环坐标下降

CCD 的思路与 Gauss-Seidel / Jacobi 解线性方程组类似:每一步只优化一个坐标,其余坐标固定,循环直到收敛。随机版本是 RCD(Nesterov 2012),循环版本是 CCD(Tseng 2001)。

单坐标更新是二次方程。 对坐标 i 求一阶条件并令 \lambda=1,得到关于 x_i 的二次方程。因为 \sigma_i^2>0 使该多项式为凸二次式,且两根之积为负,两个根必异号,因此取正根即为该坐标的最优解。由于 x 的分量严格为正,迭代过程中每次更新后仍保持为正(只要初值为正且 c>SR_+)。

效率技巧。 把更新式改写成只需 (\Sigma x)_i 和 \sigma(x) 的形式后,\Sigma x 与 \sigma(x) 的更新各只需一次向量乘法(用 \Sigma 的第 i 行/列),这把每次迭代的成本从矩阵级降到矩阵-向量级。

收敛性。 依据 Tseng (2001) 对不可微函数情形的坐标下降收敛定理(技术性假设 (B1)–(C2))。Richard & Roncalli (2019) 补充:在约束可分离(每个坐标各有各的可行集 \Omega_i)时,CCD 变成两步——先解 L_0 的单坐标最小化,再做投影 x_i\leftarrow P_{\Omega_i}(x_i)。

与其他算法的比较

Eurostoxx 50 的 ERC 回测(1989-12 至 2012-12,每月计算 ERC)。

算法 收敛频率 % 平均每次迭代耗时 (1/100 秒) 最大耗时
SQP 94.96 2.00 4.70
Jacobi 92.02 0.04 1.60
Newton 100.00 0.04 1.60
Nesterov 100.00 0.05 1.60
CCD 100.00 0.12 1.60

S&P 500 的 ERC 回测。 SQP 在此被略去(不收敛);Jacobi 收敛频率仅 69.14%(十次只收敛七次);CCD 平均耗时 4.33、最大 9.40,Newton 17.90/38.78,Nesterov 18.80/54.70。

高维表现(Davies-Higham 2000 生成的模拟相关矩阵)。

n Jacobi Newton Nesterov CCD
500 不收敛 24 37 13
1000 不收敛 215 384 45
1500 不收敛 790 1575 110

分界线在 n=250 附近:资产数少于 250 时 Newton 更快,超过 250 时 CCD 更高效。

实现细节会改变结论。 牛顿法若直接算 Hessian 的逆而非用 Cholesky 分解,n=1500 的例子会从 7.90 秒变成 35.40 秒;CCD 的耗时取决于编程语言的循环效率——在 Matlab 和 R(循环实现差)里 Newton 反而更快,在 C、Fortran、Gauss 里 CCD 更快。

加约束后:ADMM 与 Dykstra

Richard & Roncalli (2019) 把这条工具线扩展到带约束的问题:

  • 传统约束优化算法全部失败。 SQP、信赖域、内点法都找不到解——「对数障碍与约束的混合」不是标准优化问题。
  • ADMM 把问题拆成三步:x-更新(惩罚后的风险预算问题,用 Newton 求解)、z-更新(投影到约束集 \Omega)、u-更新(对偶变量)。惩罚参数 \phi>0 的自适应调整(He 等 2000;Wang & Liao 2001)能加速收敛。
  • ADMM-CCD:用 CCD 解 ADMM 的 x-更新。
  • Dykstra 算法(Dykstra 1983;Bauschke & Borwein 1994)用来算多约束集交上的投影:把 \Omega=\{x: Ax=B,\ Cx\le D,\ x^-\le x\le x^+\} 拆成三个基本凸集,逐个投影并迭代。
  • 相对耗时(Matlab 实现):ADMM-Newton 与 CCD 最好,ADMM-CCD 次之,ADMM-QP 反而偏慢,ADMM-BFGS 最差但加上加速二分与自适应缩放后耗时降到 1/15。

约束耦合时 CCD 失效。 当坐标之间通过 Ax=B 或 Cx\le D 耦合(一般情形),CCD 解不保证收敛到真解,且依赖变量与约束的排序顺序——此时应改用 ADMM-Newton 或 ADMM-CCD。

从机器学习迁移过来的三件事

  1. 坐标下降(Friedman-Hastie-Tibshirani 2010)——CCD 的来源,此前已被用于范数约束的均值-方差优化(Yen & Yen 2013)。
  2. ADMM(Gabay & Mercier 1976;Boyd 等 2011)——把带约束的凸问题拆成可分别求解的子问题。
  3. 近端算子与 Dykstra 算法(Parikh & Boyd 2014;Combettes & Pesquet 2011)——处理「投影到约束集」这一步;\ell_p 球的投影可由 \ell_p 范数的近端算子给出(Moreau 分解定理)。

Richard & Roncalli 明确说这篇论文的一个目的是「推广在机器学习里非常流行、但在金融界不为人知的优化算法」。

与其他概念的关系

局限与开放问题

  • CCD 要求所有风险预算严格为正;b_i=0 时算法未定义。
  • 数值实验用 Gauss 10 语言、Intel T8400 3 GHz Core 2 Duo、3.5 GB 内存,绝对耗时不具参考价值,只有相对比较有意义。
  • 收敛性依赖 Tseng (2001) 的技术性假设。
  • 论文只解决「给定 \Sigma 如何快速求权重」,未处理交易成本、协方差估计误差等实务问题;带约束的换手控制见 Richard-Roncalli 2019。
  • 高维测试用的是模拟相关矩阵(奇异值算术分布),不反映真实市场相关结构。

来源