2. 绩效归因分析基础:什么是绩效归因、为什么需要归因、归因分析的三大支柱
各位同学,咱们今天聊聊绩效归因。说实话,这玩意儿在量化交易里,就像汽车的仪表盘。你光知道车在跑(赚钱了),但不知道是发动机给力还是轮胎抓地好,那下次换条路可能就翻车了。
我个人习惯把绩效归因看作「拆解」。把一段时间的收益、风险、成本,一层层剥开,看看每一层到底贡献了多少。我在项目中遇到过不少团队,策略回测曲线漂亮得不行,实盘一跑就崩。为什么?因为没人去拆解「收益到底从哪来的」。嗯,这就是归因要解决的问题。
2.1 什么是绩效归因
说白了,绩效归因就是回答三个问题:
- 赚的钱从哪来? 是选股选得好,还是择时踩得准?
- 亏的钱因为啥? 是市场系统性下跌,还是某个因子突然失效?
- 成本吃掉多少? 交易佣金、滑点、冲击成本,到底谁在吸血?
你想想看,如果一个策略年化收益30%,你第一反应肯定是「牛啊」。但如果归因后发现,其中25%来自市场beta(大盘涨了),只有5%是alpha(选股能力),那你还觉得牛吗?
核心定义: 绩效归因是将投资组合的总收益、总风险、总成本,按照预先设定的归因模型,分解到各个决策维度(如行业、因子、个股)的过程。
2.2 为什么需要归因
我刚开始做统计套利那会儿,觉得只要策略赚钱就行,归因是「事后诸葛亮」,没啥用。直到有一次,一个策略连续三个月跑赢基准,我正得意呢,结果第四个月直接回撤20%。
后来一归因才发现,前三个月的超额收益几乎全部来自「市值因子」—— 当时小盘股在风口上。而我的策略本身,其实没有任何选股能力。风口一停,摔得比谁都惨。
所以,归因的必要性可以总结为三点:
- 验证策略逻辑:你的策略到底在赚什么钱?是运气还是能力?
- 识别风险暴露:有没有隐藏的风险敞口?比如你以为是市场中性,结果归因发现beta暴露了0.3。
- 优化迭代方向:知道哪部分贡献大、哪部分拖后腿,才能有针对性地改进。
我的经验: 每次新策略上线前,我都会先跑一遍归因分析。如果归因结果和策略设计逻辑对不上,那这个策略我绝对不敢实盘。曾经有个策略,设计上是「统计套利」,归因出来却是「动量因子」在主导,后来发现是数据预处理出了问题。
2.3 归因分析的三大支柱
归因分析不是单一维度的事。我个人习惯把它拆成三大块:收益、风险、成本。这三者缺一不可。
2.3.1 收益归因
收益归因是最直观的。它回答「收益是怎么构成的」。常见的分解方式有:
- Brinson 模型:把超额收益拆成「资产配置效应」和「选股效应」。比如你超配了科技股,科技股涨了,这是配置效应;你在科技股里选了腾讯而不是阿里,腾讯涨得更多,这是选股效应。
- 因子归因:把收益拆到各个风险因子(市值、动量、波动率等)上。比如你的策略收益中,30%来自市值因子,20%来自动量因子,剩下50%是残差(真正的alpha)。
注意: 收益归因最容易犯的错误是「过度拟合」。我曾经见过一个团队,把收益归因到50个因子上,每个因子贡献一点点,看起来解释度很高。但实盘一跑,全崩了。为什么?因为那些因子都是数据挖掘出来的,没有经济含义。
2.3.2 风险归因
光看收益不看风险,那是耍流氓。风险归因要回答的是「风险从哪来」。
常用的风险归因工具:
- 波动率分解:把组合的波动率拆到各个资产或因子上。比如你的组合波动率是20%,其中15%来自市场beta,3%来自行业集中度,2%来自个股特异性风险。
- VaR 分解:计算每个资产对组合VaR的边际贡献。这能告诉你,如果砍掉某个头寸,风险能降多少。
避坑指南: 我曾经在风险归因上栽过跟头。当时只做了收益归因,觉得策略很稳健。结果一次黑天鹅事件,组合一天亏了8%。后来一查,风险归因显示「尾部风险」暴露极高,但之前用的模型假设正态分布,根本没捕捉到。从那以后,我坚持用历史模拟法做风险归因,至少能看看极端情况。
2.3.3 成本归因
成本归因是很多人容易忽略的。尤其是统计套利策略,交易频率高,成本可能吃掉大部分收益。
成本归因通常拆成:
| 成本类型 | 说明 | 常见陷阱 |
|---|---|---|
| 佣金 | 每笔交易的手续费 | 不同券商差异大,别用默认参数 |
| 滑点 | 理论成交价与实际成交价的差异 | 回测时假设0滑点,实盘直接亏哭 |
| 冲击成本 | 大单交易导致的价格不利变动 | 统计套利通常用限价单,但流动性差时冲击很大 |
| 融资成本 | 杠杆交易产生的利息 | 别以为年化5%不高,高频交易复利下来很可观 |
我的习惯: 做回测时,我会把成本参数设得比实际高20%。比如实际滑点0.01%,我回测用0.012%。为什么?因为实盘总有意外。曾经有个策略,回测年化收益15%,实盘只有8%,一查发现是冲击成本比预想的高了一倍。从那以后,我宁愿回测保守点。
2.4 三大支柱的关系
收益、风险、成本不是孤立的。它们之间互相影响。比如:
- 为了降低风险,你可能需要分散投资,但这会增加交易成本。
- 为了降低冲击成本,你可能需要拆单,但这会增加滑点风险。
- 为了提升收益,你可能需要加杠杆,但这会放大风险和融资成本。
所以,一个完整的绩效归因,必须把三者放在一起看。只看收益,你可能会高估策略能力;只看风险,你可能会错过高收益机会;只看成本,你可能会忽略策略本身的逻辑问题。
下面这张图,是我自己总结的归因分析框架,你可以参考一下:
嗯,这张图把三大支柱和它们各自的子项都串起来了。你写代码做归因分析时,也可以按照这个框架来设计函数模块。
公众号:蓝海资料掘金营,微信deep3321