3. 组合级回测概述
单资产回测回答的是“这个策略在这只标的上赚不赚钱”,而组合级回测回答的是“把多个策略、多个资产、多笔资金放在同一个账户里,整体表现如何”。这两者的差别不是把单资产结果简单相加,而是引入了资金共享、权重分配、再平衡、现金约束与归因分解等一整套账户级机制。理解这些机制,是构建可信回测引擎的前提。
一、组合回测与单资产回测的本质区别
单资产回测通常假设:资金全部投入单一标的,信号独立,收益按标的自身价格序列计算。组合回测则必须处理三个额外问题:
- 资金竞争:多个信号同时出现时,账户现金有限,必须决定谁先成交、分配多少资金。
- 权重漂移:持仓价格变化后,各资产的实际权重会偏离目标权重,需要判断是否再平衡。
- 相关性耦合:组合波动不是各资产波动的加权平均,而是取决于协方差结构,风险贡献与资金占比并不一致。
因此,组合回测引擎的核心不是“多跑几个单资产回测”,而是维护一个账户状态机:现金、持仓、市值、权重、交易成本、滑点、分红与费用都在同一时间轴上推进。
组合回测的最小状态变量:
现金 cash、持仓数量 qty[i]、持仓市值 mv[i]、总权益 equity、目标权重 w_target[i]、实际权重 w_actual[i]。
现金 cash、持仓数量 qty[i]、持仓市值 mv[i]、总权益 equity、目标权重 w_target[i]、实际权重 w_actual[i]。
二、组合权重:从信号到资金分配
权重是组合回测的“方向盘”。常见权重方案包括:
| 权重方案 | 计算方式 | 适用场景 | 主要风险 |
|---|---|---|---|
| 等权 | w[i] = 1/N | 资产数量少、预期收益接近 | 高波动资产实际风险占比过高 |
| 市值加权 | w[i] = mv[i] / Σmv | 指数增强、宽基配置 | 动量追高、集中度上升 |
| 风险平价 | 使各资产风险贡献相等 | 多资产稳健配置 | 依赖协方差估计稳定性 |
| 信号强度加权 | w[i] ∝ score[i] | 多因子、多策略叠加 | 信号过拟合、换手过高 |
| 波动率倒数 | w[i] ∝ 1/σ[i] | 波动差异大的资产池 | 低波动资产权重过大 |
权重生成后,还需经过归一化、上限截断、现金缓冲三步处理。例如单资产权重上限 30%,剩余权重按比例回填;同时保留 5% 现金以应对费用与滑点。
# 权重归一化与截断示例
raw = {"A": 0.45, "B": 0.35, "C": 0.30}
cap = 0.30
w = {k: min(v, cap) for k, v in raw.items()}
total = sum(w.values())
w = {k: v / total for k, v in w.items()}
# 结果: A=0.30, B=0.30, C=0.30 (归一化后)
三、再平衡:频率、阈值与成本权衡
再平衡决定“什么时候把实际权重拉回目标权重”。常见方式有三类:
- 日历再平衡:每月、每季度固定日期执行,规则简单,换手稳定。
- 阈值再平衡:当某资产实际权重偏离目标超过阈值(如 ±5%)时触发。
- 混合再平衡:定期检查 + 阈值触发,兼顾纪律性与成本控制。
再平衡不是免费的。每次调仓都会产生交易成本、滑点和税费。回测中必须把再平衡成本计入净值曲线,否则会高估组合收益。一个实用原则是:再平衡带来的风险控制收益,必须大于其交易成本。
在回测引擎中,再平衡应作为独立事件处理:先计算目标权重,再生成买卖订单,最后按成交价更新持仓与现金。不要把再平衡写成“直接修改权重”,否则会丢失成本与现金约束。
四、绩效归因与风险分解
组合赚钱了,但钱从哪里来?绩效归因回答收益来源,风险分解回答风险来源。两者共同构成组合回测的“解释层”。
- 收益归因:将组合收益拆分为资产配置收益、选股/择时收益、交互项与交易成本。
- 风险分解:将组合波动拆分为各资产波动贡献、协方差贡献与集中度贡献。
- 风险贡献:边际风险贡献 MRC[i] = w[i] × (Σw)[i] / σ_p,用于识别“资金占比小但风险占比大”的资产。
例如一个等权组合中,某高波动资产资金占比 25%,但风险贡献可能达到 45%。如果不做风险分解,就会误以为组合风险是均匀分布的。
五、常见误区与复盘
误区一:把单资产回测结果直接加权平均。这忽略了现金共享与再平衡成本,组合净值会系统性偏高。
误区二:再平衡只看频率,不看成本。高频再平衡在震荡市中可能被交易成本吞噬全部超额收益。
误区三:只看资金权重,不看风险贡献。等权不等于等风险,高波动资产会主导组合回撤。
误区四:归因只做收益,不做风险。收益归因解释“赚了多少”,风险分解解释“为什么波动这么大”,两者缺一不可。
误区二:再平衡只看频率,不看成本。高频再平衡在震荡市中可能被交易成本吞噬全部超额收益。
误区三:只看资金权重,不看风险贡献。等权不等于等风险,高波动资产会主导组合回撤。
误区四:归因只做收益,不做风险。收益归因解释“赚了多少”,风险分解解释“为什么波动这么大”,两者缺一不可。
复盘时建议按以下清单逐项检查:
- 权重是否经过归一化与上限截断?
- 再平衡是否计入交易成本与滑点?
- 现金余额是否始终非负?
- 风险贡献是否与资金权重一致?若不一致,原因是什么?
- 归因结果是否能解释净值曲线的主要回撤段?
组合级回测的价值,不在于生成一条更漂亮的净值曲线,而在于让每一个收益来源和风险来源都可追溯、可解释、可复现。只有把权重、再平衡、归因与风险分解都纳入同一套账户状态机,回测结果才具备实盘参考意义。