4. 资金配置基础模型
在CVXPY多策略资金配置的实战中,任何复杂的优化逻辑最终都要落到一组可解释、可复现的基础模型上。本节聚焦四类基准:均值-方差模型、风险平价模型、等权重与市值权重基准,并配套梳理收益与风险的度量指标。理解这些模型,是后续引入约束、交易成本、稳健性优化等进阶技巧的前提。
一、核心原理:四类配置逻辑的差异
资金配置的本质是在“预期收益”与“风险”之间做权衡。不同模型对这两个维度的处理方式不同,导致权重结构差异显著。
- 均值-方差模型(MVO):由Markowitz提出,目标是在给定预期收益下最小化组合方差,或在给定风险下最大化收益。其数学形式为二次规划,天然适合CVXPY求解。
- 风险平价模型(Risk Parity):不预测收益,只要求各资产对组合总风险的贡献相等。它更关注风险分散,而非收益最大化。
- 等权重基准(1/N):每个资产权重相同,简单、透明,常作为“无信息”基准。
- 市值权重基准:按资产市值占比分配,代表市场共识,常用于股票或加密资产组合。
四者并非互斥,而是构成一个从“完全依赖预测”到“完全不依赖预测”的谱系。实战中常以等权重和市值权重作为对照,检验优化模型是否真正带来增量。
二、方法流程:用CVXPY实现基础模型
以均值-方差为例,假设有N个资产,预期收益向量μ,协方差矩阵Σ,权重w。标准形式为:
import cvxpy as cp
import numpy as np
n = 5
mu = np.array([0.08, 0.10, 0.12, 0.07, 0.09])
Sigma = np.array([...]) # N×N 协方差矩阵
w = cp.Variable(n)
gamma = 2.0 # 风险厌恶系数
objective = cp.Maximize(mu @ w - gamma * cp.quad_form(w, Sigma))
constraints = [cp.sum(w) == 1, w >= 0]
prob = cp.Problem(objective, constraints)
prob.solve()
print("最优权重:", w.value)
print("组合方差:", cp.quad_form(w, Sigma).value)
风险平价则需引入风险贡献约束。对于资产i,其风险贡献为 w_i * (Σw)_i / (w^T Σ w)。要求所有资产风险贡献相等,可转化为非线性约束,CVXPY中常用近似或迭代求解。
等权重与市值权重无需优化,直接赋值即可:
w_equal = np.ones(n) / n
w_mcap = market_caps / market_caps.sum()
建议在CVXPY中先求解MVO,再计算风险平价权重,最后与两个基准对比。这样能直观看到优化模型是否偏离基准过远。
三、收益与风险度量指标
配置模型的效果需要统一指标衡量。常用指标如下表:
| 指标 | 含义 | 适用场景 |
|---|---|---|
| 年化收益率 | 组合收益的年度化均值 | 收益评估 |
| 年化波动率 | 收益标准差年度化 | 风险度量 |
| 夏普比率 | 超额收益/波动率 | 风险调整后收益 |
| 最大回撤 | 峰值到谷值的最大跌幅 | 极端风险 |
| 风险贡献 | 各资产对组合风险的边际贡献 | 风险平价验证 |
| 换手率 | 权重变化幅度 | 交易成本评估 |
在CVXPY中,这些指标可在求解后通过numpy或pandas计算。例如夏普比率:
returns = portfolio_returns # 时间序列
sharpe = returns.mean() / returns.std() * np.sqrt(252)
四、案例与复盘:基准对比的常见误区
假设某多策略组合包含5类资产:股票、债券、黄金、商品、现金。用MVO求解后,权重可能高度集中于预期收益最高的资产,导致风险集中。此时风险平价会给出更分散的权重,但收益可能低于MVO。等权重则介于两者之间。
常见误区:直接比较MVO与等权重的收益,忽略风险差异。正确做法是同时比较夏普比率、最大回撤和风险贡献分布。若MVO的夏普比率未显著优于等权重,说明预测误差已抵消优化收益。
另一个误区是忽略协方差矩阵的估计误差。MVO对输入敏感,微小的μ或Σ变化可能导致权重剧烈波动。实战中可加入L2正则或使用收缩估计,CVXPY中只需在目标函数添加cp.norm(w, 2)项。