高维风险平价算法 (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。
从机器学习迁移过来的三件事
- 坐标下降(Friedman-Hastie-Tibshirani 2010)——CCD 的来源,此前已被用于范数约束的均值-方差优化(Yen & Yen 2013)。
- ADMM(Gabay & Mercier 1976;Boyd 等 2011)——把带约束的凸问题拆成可分别求解的子问题。
- 近端算子与 Dykstra 算法(Parikh & Boyd 2014;Combettes & Pesquet 2011)——处理「投影到约束集」这一步;\ell_p 球的投影可由 \ell_p 范数的近端算子给出(Moreau 分解定理)。
Richard & Roncalli 明确说这篇论文的一个目的是「推广在机器学习里非常流行、但在金融界不为人知的优化算法」。
与其他概念的关系
- Risk Parity — 算法服务的对象
- 风险预算与风险平价 — RB 的定义
- ADMM 算法 — 约束问题的求解框架
- ERC 组合性质 — 为什么必须数值求解
局限与开放问题
- CCD 要求所有风险预算严格为正;b_i=0 时算法未定义。
- 数值实验用 Gauss 10 语言、Intel T8400 3 GHz Core 2 Duo、3.5 GB 内存,绝对耗时不具参考价值,只有相对比较有意义。
- 收敛性依赖 Tseng (2001) 的技术性假设。
- 论文只解决「给定 \Sigma 如何快速求权重」,未处理交易成本、协方差估计误差等实务问题;带约束的换手控制见 Richard-Roncalli 2019。
- 高维测试用的是模拟相关矩阵(奇异值算术分布),不反映真实市场相关结构。
来源
- summaries/201311-fast-algorithm-high-dimensional-risk-parity/201311-fast-algorithm-high-dimensional-risk-parity — (2013) Griveau-Billion-Richard-Roncalli,CCD 算法与性能对比
- summaries/201901-constrained-risk-budgeting-portfolios/201901-constrained-risk-budgeting-portfolios — (2019) Richard-Roncalli,ADMM / 近端算子 / Dykstra 的约束版扩展