1060 字
5 分钟

第 7 章:马科维茨的诅咒与 NCO

均值-方差优化拿过诺贝尔奖,却在实盘界声名狼藉。这一章先用一个数字(条件数)把病灶定位清楚,再给出作者的解法 NCO——前面四章的刀(去噪、距离、聚类)在这里合体

马科维茨的诅咒#

均值-方差优化要对协方差矩阵求逆。问题在于:

  • 求逆会放大估计误差——输入差之毫厘,权重谬以千里(《打开量化投资的黑箱》骂过的”误差最大化器”);
  • 放大倍数由条件数(最大特征值 ÷ 最小特征值)刻画:条件数越大,解越不稳定;
  • 而资产相关性越高,相关矩阵的条件数越大。于是得到那个残酷的悖论,作者称之为马科维茨的诅咒:诸多资产高度相关的时候,恰恰是你最需要分散化的时候——却也是优化器最不可靠的时候。

换句话说:优化器在你最需要它的场合最不能用。这不是实现瑕疵,是结构性矛盾。

病根再细分:噪声之外还有”信号害”#

第 2 章的去噪能治一部分(噪声特征值导致的不稳定),但作者指出还有第二个病根:信号本身也致病。市场成分那个巨大特征值把条件数撑得很高——哪怕矩阵估计得完全准确,强共同因子的存在依然让求逆不稳定。所以光去噪不够,还需要改造优化问题本身。

NCO:嵌套聚类优化#

Nested Clustered Optimization,思路是”化整为零,各个击破”:

  1. 去噪 + 聚类:对(去噪后的)相关矩阵跑 ONC(第 3 页),把资产分成若干个内部高相关、彼此低相关的簇;
  2. 簇内优化:在每个簇内部做小规模均值-方差优化——簇内矩阵维度小、结构单一,条件数低,优化可靠;
  3. 簇间优化:把每个簇整体当成一个”合成资产”,算簇间的缩减协方差矩阵,在簇这一层再做一次优化——簇间本来就低相关,这一层同样稳定;
  4. 最终权重 = 簇间权重 × 簇内权重。

精髓:从不在高条件数的大矩阵上求逆。原问题被拆成一组小而良态的子问题,每个都落在优化器能力圈内。

与 HRP 的关系,以及蒙特卡洛裁决#

作者早年的 HRP(层次风险平价,AFML 精读第 6 页提过)走得更极端——完全不求逆。NCO 是折中:保留优化(还能吃进预期收益信息),但用聚类把它关进笼子。怎么知道哪种方法好?作者的答案很符合本书气质:别争论,做蒙特卡洛——自己造已知真实参数的数据,让各方法比赛还原真实最优权重。他的实验里,NCO 相比直接马科维茨优化把样本外估计误差大约砍半;不同市场结构下最优方法不同,用合成数据先测再上本身就是方法论的一部分。

对应到本平台#

backtest/engine.py 目前是 top-N 等权——按本章的谱系,等权恰是”对估计误差最鲁棒”的极端(什么都不估就什么都不会估错),马科维茨是另一个极端(全都估、全放大)。如果将来想给回测引擎加权重优化,正确的升级路径不是直接上均值-方差,而是:等权 → 波动率倒数 → 聚类风险平价 / NCO——每一步只在证明了估计增益大于估计误差之后再迈

本页带走的三句话#

  1. 马科维茨的诅咒:资产越相关越需要分散,条件数却越大、优化器越不可靠——最需要时最不能用;
  2. NCO 的精髓是从不在大矩阵上求逆:聚类拆小、簇内簇外分层优化,每个子问题都良态;
  3. 方法之争交给蒙特卡洛:造已知答案的合成数据让方法比赛——先测后上,这本身就是一把刀。