1. 课程导入

在量化投资中,选到好策略只是第一步,真正决定长期收益曲线形态的,往往是资金如何在多个策略之间分配。很多初学者把精力全部放在单策略信号优化上,却忽略了组合层面的权重管理,结果出现“策略都对,账户却波动巨大”的尴尬局面。本章作为全课程导入,先建立多策略资金配置的整体认知,再说明CVXPY在其中的工程定位,最后给出清晰的学习路径与实战目标。

一、为什么多策略资金配置是必修课

单一策略的收益来源往往依赖特定市场状态。趋势策略在单边行情中表现优异,但在震荡市中频繁止损;均值回归策略在区间震荡中稳定获利,却在趋势启动时承受较大回撤。若把全部资金押注在单一策略上,账户净值就会随市场风格切换而剧烈波动。多策略资金配置的核心价值,在于利用策略之间的低相关性,让不同收益来源互相补偿,从而改善组合的夏普比率与最大回撤。

资金配置要解决三个层次的问题:第一,选哪些策略,即策略池构建;第二,各策略配多少钱,即权重优化;第三,权重多久调整一次,即再平衡频率。本课程聚焦第二层,并用CVXPY把权重优化从“拍脑袋”变成可复现、可约束、可回测的工程流程。

核心结论:多策略资金配置不是简单平均分配,而是在收益、风险、相关性、交易成本和实盘约束之间寻找最优解。

二、CVXPY在量化投资中的定位

CVXPY是一个基于Python的凸优化建模工具,它允许开发者用接近数学公式的方式描述优化问题,再自动调用底层求解器完成计算。在量化投资中,CVXPY最常见的用途包括:马科维茨均值—方差优化、风险平价、最小方差组合、最大分散化组合、带换手率约束的权重优化,以及带行业暴露约束的增强配置。

与直接调用求解器相比,CVXPY的优势在于建模表达清晰和约束扩展方便。例如,实盘中常见的“单策略权重不超过30%”“总杠杆不超过1.5倍”“换手率不超过20%”等要求,都可以直接写成约束条件,而不需要手动推导解析解。下面的代码展示了CVXPY描述组合优化问题的基本结构:

import cvxpy as cp
import numpy as np

# 假设有4个策略,mu为预期收益,Sigma为协方差矩阵
mu = np.array([0.08, 0.06, 0.10, 0.05])
Sigma = np.array([
    [0.04, 0.01, 0.02, 0.00],
    [0.01, 0.03, 0.01, 0.01],
    [0.02, 0.01, 0.05, 0.01],
    [0.00, 0.01, 0.01, 0.02]
])

w = cp.Variable(4)
risk = cp.quad_form(w, Sigma)
objective = cp.Maximize(mu @ w - 2.0 * risk)
constraints = [
    cp.sum(w) == 1,
    w >= 0,
    w <= 0.4
]
problem = cp.Problem(objective, constraints)
problem.solve()

print("最优权重:", np.round(w.value, 4))
print("组合风险:", round(np.sqrt(risk.value), 4))

这段代码体现了CVXPY的典型工作流:定义变量、构造目标函数、添加约束、调用求解器、读取结果。后续章节会在此基础上逐步加入换手率惩罚、风险预算、情景约束和滚动回测。

多策略资金配置的输入—优化—输出链路 输入层 策略收益序列 协方差矩阵 预期收益/风险预算 CVXPY优化层 目标函数:收益-风险 约束:权重上下限 约束:换手率/杠杆 输出层 各策略最优权重 组合风险与收益 再平衡信号 回测层 净值曲线 回撤/夏普 归因分析 关键约束与实盘映射 • 权重非负:禁止做空,符合多数私募/公募产品合同 • 单策略上限:防止过度集中,降低单一策略失效冲击 • 换手率约束:控制交易成本,避免频繁调仓侵蚀收益 • 风险预算:让每个策略对组合风险的贡献符合预期

三、方法流程:从策略池到最优权重

一个可落地的多策略资金配置流程通常包含以下步骤:

  1. 策略池构建:筛选逻辑独立、相关性较低、有足够历史数据的策略。
  2. 数据准备:整理各策略的日收益序列,估计预期收益与协方差矩阵。
  3. 优化建模:用CVXPY定义目标函数与约束,形成凸优化问题。
  4. 求解与校验:调用求解器,检查状态是否为optimal,并验证权重合理性。
  5. 滚动回测:按固定窗口滚动优化,模拟真实调仓过程。
  6. 绩效归因:分析收益来源、风险贡献与回撤结构,迭代改进。

其中,第3步和第5步是本课程的重点。很多教程只讲一次性的静态优化,但实盘中权重需要定期更新,且每次更新都要考虑换手成本。CVXPY的约束表达能力恰好能覆盖这些需求。

四、案例场景:三个策略的资金分配

假设我们有一个趋势策略、一个套利策略和一个中性策略。趋势策略预期收益高但波动大,套利策略收益稳定但容量有限,中性策略与市场相关性低。若等权分配,组合风险可能被趋势策略主导;若只按收益分配,又会过度集中。通过CVXPY设置“单策略不超过40%、组合波动率不超过8%”的约束,可以得到更均衡的权重。

策略 预期年化收益 年化波动率 等权权重 优化后权重
趋势策略 12% 18% 33.3% 35%
套利策略 7% 6% 33.3% 40%
中性策略 9% 8% 33.3% 25%

优化后,套利策略获得更高权重,因为它在风险调整后收益上更有优势;趋势策略被限制在35%,避免波动过大;中性策略权重下降,但其低相关性仍然为组合提供分散价值。这个例子说明,资金配置不是简单排序,而是综合权衡。

五、常见误区与复盘

误区一:用历史收益直接优化权重,忽略估计误差。历史收益均值极不稳定,容易导致权重过度集中。建议加入收缩估计或风险预算约束。
误区二:只做一次优化就长期持有。市场相关性会变化,策略容量会衰减,必须滚动再平衡。
复盘建议:每次调仓后记录优化状态、求解时间、权重变化和换手成本,形成可追溯的配置日志。

另一个常见问题是忽略求解器状态。CVXPY返回infeasible或unbounded时,不能直接使用结果。实盘中应先检查problem.status,再决定是否降级到等权或上一期权重。

六、学习路径与实战目标

本课程的学习路径分为四个阶段:第一阶段掌握CVXPY建模基础与组合优化原理;第二阶段实现均值—方差、风险平价和最小方差等经典模型;第三阶段加入换手率、杠杆、行业暴露等实盘约束;第四阶段完成滚动回测与绩效归因,形成可复用的配置框架。

实战目标很明确:课程结束时,你能够独立用CVXPY搭建一个多策略资金配置系统,输入策略收益数据,输出带约束的最优权重,并完成滚动回测与风险分析。你不需要成为凸优化理论专家,但必须理解每个约束背后的业务含义,并能诊断常见求解问题。

记住:CVXPY是工具,资金配置的核心是业务理解。约束设得对不对,比求解器选哪个更重要。