策略收益归因基础:Brinson归因模型、多期归因、交互效应处理
做量化交易这些年,我见过太多人盯着净值曲线傻乐。
“这个月赚了8个点,牛逼!”
然后呢?
赚在哪?亏在哪?是选股选对了,还是运气好踩中了行业风口?
一问三不知。
说白了,归因分析就是给你的收益做“尸检”。你得知道每一分钱是怎么来的,才能知道下次怎么复制它。
Brinson归因模型:最经典的收益拆解框架
Brinson模型最早是给公募基金用的,但放在量化策略里一样好使。它的核心逻辑很简单:
超额收益 = 资产配置贡献 + 个股选择贡献 + 交互效应
我习惯用个例子来理解。假设基准是沪深300,你的策略是“超配白酒,低配银行”。
- 资产配置贡献:你赌对了行业权重。白酒涨了10%,银行跌了2%,你多配白酒就赚了。
- 个股选择贡献:在白酒行业里,你选的茅台涨了15%,而行业平均只涨了10%。这是你的选股能力。
- 交互效应:这两件事的“化学反应”。你既超配了白酒,又选对了茅台里的好股票。
公式长这样:
# 单期Brinson归因
def brinson_decomposition(portfolio_weight, benchmark_weight,
portfolio_return, benchmark_return):
"""
portfolio_weight: 策略在各行业的权重
benchmark_weight: 基准在各行业的权重
portfolio_return: 策略在各行业的收益率
benchmark_return: 基准在各行业的收益率
"""
# 资产配置效应
allocation = (portfolio_weight - benchmark_weight) * benchmark_return
# 个股选择效应
selection = benchmark_weight * (portfolio_return - benchmark_return)
# 交互效应
interaction = (portfolio_weight - benchmark_weight) * \
(portfolio_return - benchmark_return)
return allocation, selection, interaction
嗯,这里要注意:交互效应经常被新手忽略。我曾经见过一个策略,明明选股和配置都做得不错,但交互效应是负的,最后超额收益被吃掉一大块。为什么?因为你在超配的行业里选错了股票,或者在低配的行业里选对了股票——这两种情况都会产生负的交互效应。
多期归因:别被单期数据骗了
单期归因有个大坑:它假设每期的权重和收益是独立的。
但现实不是这样的。你上个月赚了钱,这个月可能调仓了。上个月超配的行业,这个月可能已经卖掉了。单期归因没法告诉你“调仓行为”本身创造了多少价值。
多期归因要解决的就是这个问题。常用的方法有两种:
| 方法 | 核心思想 | 我踩过的坑 |
|---|---|---|
| 算术链接法 | 把每期的超额收益简单相加 | 忽略了复利效应,长期误差会累积 |
| 几何链接法 | 用乘法链接各期收益 | 计算复杂,但更符合实际 |
我个人更推荐几何链接法。虽然算起来麻烦点,但结果更靠谱。
# 多期几何链接归因
def geometric_attribution(period_allocations, period_selections,
period_interactions):
"""
将多期的归因结果进行几何链接
"""
import numpy as np
total_allocation = np.prod(1 + period_allocations) - 1
total_selection = np.prod(1 + period_selections) - 1
total_interaction = np.prod(1 + period_interactions) - 1
# 注意:这里不能简单相加,需要做交叉项处理
total_excess = (1 + total_allocation) * \
(1 + total_selection) * \
(1 + total_interaction) - 1
return total_allocation, total_selection, total_interaction, total_excess
我曾经在实盘回测中只用算术链接法,结果发现归因出来的超额收益和实际收益对不上。查了两天才发现是复利效应导致的误差。从那以后,我坚持用几何链接法,或者至少做一次交叉验证。
交互效应处理:最容易被误解的部分
交互效应到底是什么?
说白了,就是你的配置决策和选股决策之间的“协同作用”。
举个例子:
- 你超配了科技行业(配置决策)
- 你在科技行业里选了英伟达(选股决策)
- 结果英伟达涨了50%,科技行业只涨了20%
这时候交互效应就是正的。因为你既赌对了行业,又赌对了股票。
但反过来:
- 你超配了科技行业
- 你在科技行业里选了个垃圾股,只涨了5%
- 科技行业涨了20%
交互效应就是负的。你选股能力拖了配置的后腿。
怎么处理?我建议把交互效应单独拎出来看,不要合并到配置或选股里。很多教材会教你“把交互效应按比例分摊到配置和选股里”,但我不这么干。
交互效应单独列一栏。如果它长期为正,说明你的配置和选股是“共振”的,策略逻辑自洽。如果长期为负,说明你的配置和选股在打架——比如你超配了某个行业,但选的股票却是这个行业里最差的。这时候需要反思策略逻辑。
知识体系总览
下面这张图是我自己梳理的归因框架,你想想看,是不是这个理:
实战中的几个要点
最后分享几个我在实战中总结的经验:
- 别只看单期。单期归因波动很大,尤其是高频策略。至少看一个完整调仓周期的数据。
- 交互效应不是噪音。很多人觉得交互效应是“残差”,直接忽略。但它在某些策略里占比很高,比如行业轮动+精选个股的策略。
- 归因频率要和调仓频率匹配。日频调仓的策略,用周度归因就够了。月频调仓的策略,用季度归因。频率太高全是噪音。
- 基准选择很重要。用沪深300还是中证500?用等权还是市值加权?基准选错了,归因结果全是错的。
归因不是为了证明你牛逼,而是为了找到你策略里真正赚钱的那个“因子”。如果归因结果告诉你“选股贡献最大”,那你就该去优化选股模块。如果告诉你“配置贡献最大”,那你就该去研究行业轮动。
嗯,今天就聊到这。归因分析是个越挖越深的东西,后面我们还会聊到更细的因子归因和机器学习归因方法。到时候再细说。
公众号:蓝海资料掘金营,微信deep3321