一、多目标优化概述:从单目标到多目标的演进
做量化投资这些年,我越来越觉得——投资决策本质上就是个多目标问题。你想想看,谁不想收益高、风险低、回撤小、流动性好?但现实是,这些目标往往互相打架。
我记得刚入行那会儿,带我的老大哥让我优化一个股票组合。我吭哧吭哧跑了个单目标优化,把夏普比率拉到最高。结果呢?回测曲线漂亮得不行,实盘一跑,三天就亏了5%。为什么?因为单目标优化只盯着一个指标,其他维度全忽略了。
1.1 单目标优化的局限性
传统的投资组合优化,说白了就是马科维茨那套——给定预期收益,最小化方差。或者反过来,给定风险水平,最大化收益。这就是典型的单目标优化。
但问题来了:
- 收益和风险天生矛盾:想赚得多,就得承受大波动
- 流动性被忽视:高收益的小盘股,你买进去容易,想出来就难了
- 最大回撤没人管:夏普比率高的策略,可能一年内腰斩两次
我在一个CTA策略项目里就吃过这个亏。单目标优化出来的参数,回测年化收益30%,最大回撤只有8%。我当时觉得捡到宝了。结果实盘三个月,回撤直接干到25%。为什么?因为单目标优化把「收益/风险比」作为唯一目标,但市场风格一变,那些隐藏的风险全暴露了。
1.2 从单目标到多目标的演进
那怎么办?我们得同时考虑多个目标。比如:
- 最大化年化收益
- 最小化年化波动率
- 最小化最大回撤
- 最小化换手率(控制交易成本)
这几个目标放在一起,你会发现——不存在一个完美的解,能让所有目标同时达到最优。你只能找「折中方案」。
这就引出了多目标优化的核心思想:我不追求「最好」,我追求「不差」。
1.3 Pareto最优解概念
Pareto最优,说白了就是——你没法在不损害至少一个目标的前提下,改善另一个目标。
举个例子:
假设你有两个策略A和B:
| 策略 | 年化收益 | 最大回撤 |
|---|---|---|
| A | 15% | 10% |
| B | 12% | 8% |
| C | 15% | 8% |
策略C比A收益相同但回撤更小,比B收益更高且回撤相同。所以C「支配」了A和B。A和B都不是Pareto最优。而C就是Pareto最优解之一。
所有Pareto最优解构成的集合,叫Pareto前沿。你想想看,这就像一条边界线——边界上的点,你动不了任何一个目标而不伤害其他目标。
下面这张图展示了Pareto前沿的核心逻辑:
1.4 多目标优化的金融应用场景
多目标优化在量化投资里,应用场景其实比你想的要多得多。我挑几个典型的说说:
场景一:投资组合构建
这是最经典的应用。我们同时优化:
- 预期收益(越大越好)
- 波动率(越小越好)
- 最大回撤(越小越好)
- 换手率(越小越好,控制摩擦成本)
我做过一个实盘组合,用单目标优化出来的权重,换手率高达每月200%。佣金和滑点直接把收益吃掉了3个点。后来改用多目标优化,把换手率作为一个目标加进去,换手率降到40%,收益反而提升了。为什么?因为少交了手续费。
场景二:因子择时
不同市场环境下,因子的表现差异很大。比如:
- 牛市中,动量因子吃香
- 熊市中,低波因子抗跌
- 震荡市中,价值因子可能更好
多目标优化可以帮我们找到「在不同市场环境下都还过得去」的因子权重组合。说白了,就是不要在某一种行情里死得太惨。
场景三:策略参数优化
每个策略都有参数。比如均线策略的短周期和长周期。单目标优化会找到一组参数,让夏普比率最高。但多目标优化会给你一批参数——有的夏普高但回撤大,有的夏普一般但回撤小。你可以根据当前市场状态选。
场景四:风险预算分配
多资产组合里,不同资产的风险贡献不一样。多目标优化可以帮我们找到「风险贡献均衡」的配置方案。我记得有个客户,要求年化收益不低于8%,最大回撤不超过12%,同时换手率低于50%。单目标根本搞不定,多目标优化跑了一圈,找到了5个候选方案,客户挑了一个最顺眼的。
1.5 多目标优化的挑战
当然,多目标优化也不是万能药。我踩过几个坑:
- 计算量爆炸:目标越多,Pareto前沿上的点越多,计算时间呈指数增长
- 目标冲突太严重:有些目标天生就是死对头,比如收益和风险,你很难找到好的折中
- 权重选择主观:最终选哪个Pareto最优解,还是得靠人拍脑袋
嗯,这里要注意——多目标优化不是帮你做决策,而是帮你缩小决策范围。从成千上万个可能方案,缩小到几十个Pareto最优解,然后你再根据经验挑。
我个人习惯是,先用多目标优化跑出Pareto前沿,然后画个雷达图,把每个候选方案的各个目标值标出来。一眼就能看出哪个方案更均衡。这个方法我用了好几年,挺管用的。
好了,这一章我们聊了多目标优化的基本概念。说白了就是——别只盯着一个指标看,多维度思考,找到那个「没有明显短板」的方案。下一章我们会深入讲具体的多目标优化算法,包括NSGA-II、MOEA/D这些实战中常用的方法。