Markowitz 到 Deep Portfolio:在 3 次重构中的迁移

发布: (2026年3月8日 GMT+8 05:04)
3 分钟阅读
原文: Dev.to

Source: Dev.to

引言

我见过的大多数投资组合优化代码库都像这样:一个 PortfolioOptimizer 类封装了 scipy.optimize.minimize,约束条件硬编码为 lambda 函数,协方差矩阵由 252 天的收益率估计。它能工作,简单。但一旦你想要动态风险预算、交易成本建模,或任何超出均值‑方差优化的功能,它就会失效。

Markowitz 均值‑方差优化(1952)仍然是量化金融的基石,但从传统的二次规划迁移到基于深度学习的投资组合构建并不仅仅是把 SciPy 换成 Torch 那么简单。

迁移挑战

我在过去一个季度里将一个生产环境的投资组合系统从闭式求解的优化改造成一个混合架构,使用策略网络进行资产配置。迁移过程中暴露出多个痛点:

  • 硬编码约束 在 lambda 表达式中很容易写,但在神经网络的损失函数里实现却变得繁琐。
  • 动态风险预算 需要优化器能够随市场条件变化而自适应,而静态的二次规划若不进行大量重构根本无法实现。
  • 交易成本建模 引入了非线性项,破坏了经典二次求解器的假设。

这些问题把重构过程变成了我未预料到的调试噩梦。

结果

混合系统在样本外数据上的风险调整后收益提升了 18 %,相较于原始的均值‑方差实现。然而,这些改进伴随着权衡:

  • 再平衡速度变慢了 3 倍,引发了运营成本的担忧。
  • 复杂度的提升增加了测试和维护代码库的难度。

这次经验表明,虽然深度学习方法可以提升性能,但在速度、简洁性和可解释性至关重要的场景下,经典的 Markowitz 框架仍然占优势。

0 浏览
Back to Blog

相关文章

阅读更多 »