第十八章 做市策略归因分析:PnL分解、风险因子归因、策略收益来源分析、绩效归因报告
做市策略跑了一段时间,赚了还是亏了?
这个问题看似简单,其实没那么好回答。我见过不少团队,看PnL报表只盯着总盈亏数字,赚了觉得策略牛,亏了觉得市场烂。说实话,这种认知水平,离真正的量化做市还差得远。
归因分析,就是要把你的PnL「拆开来看」。每一分钱是怎么来的,每一笔亏损是谁造成的,都要清清楚楚。我个人习惯,每周五下午雷打不动做一次归因分析,雷打不动。
核心观点:归因分析不是为了「解释过去」,而是为了「优化未来」。你只有知道钱从哪来,才知道该往哪使劲。
18.1 PnL分解:把利润拆成几块
做市策略的PnL,我一般拆成四块:
- 价差收益(Spread PnL)——吃买卖价差赚的钱
- 库存收益(Inventory PnL)——持仓方向性波动带来的盈亏
- 手续费返还(Rebate PnL)——交易所给的maker返佣
- 滑点损失(Slippage PnL)——挂单被吃、撤单重挂造成的成本
举个例子,你挂单在买一卖一,赚了1个tick的价差。但中间行情涨了,你的库存多头浮盈了2个tick。这时候总PnL是+3个tick,但你不能说「策略赚了3个tick」——价差只贡献了1个,库存贡献了2个。这两者的风险性质完全不同。
我在项目中遇到过一种情况:某团队策略回测年化30%,实盘却只有8%。一拆才发现,回测里大部分利润来自「库存收益」,也就是方向性赌对了。但实盘里方向判断不准,库存收益变成了亏损,全靠价差和返佣在撑着。说白了,回测的「假利润」全被归因分析给揪出来了。
我的习惯:每天收盘后,把PnL按这四类拆开,画成堆叠柱状图。一眼就能看出策略到底靠什么赚钱。
18.2 风险因子归因:谁在拖后腿
PnL拆完了,下一步是看风险因子。做市策略暴露在哪些风险里?
我常用的风险因子模型是这样的:
# 风险因子归因示例(伪代码)
risk_factors = {
'delta': 0.0, # 方向性风险
'gamma': 0.0, # 曲率风险
'vega': 0.0, # 波动率风险
'theta': 0.0, # 时间衰减
'rho': 0.0, # 利率风险(期权做市常用)
'skew': 0.0, # 偏斜风险
'correlation': 0.0 # 相关性风险(多资产做市)
}
# 计算每个因子的PnL贡献
for factor in risk_factors:
factor_pnl = factor_exposure * factor_return
print(f"{factor}: {factor_pnl:.2f}")
为什么要做这个?因为不同的风险因子,对冲成本不一样,管理难度也不一样。
举个例子,delta风险你可以用期货对冲,成本很低。但gamma和vega风险,对冲起来就贵多了。如果你发现策略的PnL主要来自「卖gamma收租」,那就要小心了——市场一波动,gamma亏损可能吃掉你几个月的利润。
我曾经见过一个期权做市团队,连续三个月盈利,归因一看,vega敞口贡献了60%的利润。说白了就是在赌波动率会跌。结果第四季度波动率飙升,一周亏光了三个月的利润。这就是风险因子归因没做透的后果。
避坑指南:不要只看「总风险敞口」,要看「每个因子的PnL贡献是否稳定」。如果一个因子的贡献占比超过40%,且波动很大,那你的策略其实是在赌这个因子。
18.3 策略收益来源分析:哪些交易在赚钱
风险因子归因是从「风险维度」看,策略收益来源分析是从「交易维度」看。
我一般按以下几个维度切分:
- 按交易对/品种——哪个品种贡献最大?哪个在拖后腿?
- 按交易时段——开盘、盘中、收盘,哪个时段赚钱效率高?
- 按订单类型——被动挂单(maker)赚得多,还是主动吃单(taker)赚得多?
- 按市场状态——趋势行情、震荡行情、高波动行情,哪种行情下策略表现好?
这里有个关键点:收益来源的「稳定性」比「绝对值」更重要。
你想想看,如果一个策略80%的利润来自「开盘前15分钟」,那这个策略的容量和可持续性就值得怀疑。一旦市场微观结构变了,或者有更多玩家涌入这个时段,利润可能瞬间消失。
我习惯用夏普比率来评估每个收益来源的「质量」:
# 按交易时段计算夏普比率
for session in ['open', 'mid', 'close']:
pnl_series = get_pnl_by_session(session)
sharpe = pnl_series.mean() / pnl_series.std() * sqrt(252)
print(f"{session} 夏普: {sharpe:.2f}")
夏普高的时段,说明收益稳定,值得加大投入。夏普低的时段,说明收益波动大,可能只是运气好。
一个小技巧:把每个收益来源的「累计PnL曲线」画出来。如果曲线是「稳稳向上」的,说明这个来源靠谱。如果是「大起大落」的,说明这个来源有运气成分。
18.4 绩效归因报告:给老板看的,也是给自己看的
归因分析的最终产出,是一份绩效归因报告。这份报告既要给老板看,也要给自己看。
给老板看的版本,要简洁、直观、有结论。我一般用一张表格加一张图搞定:
| 指标 | 本周 | 本月 | 本年 | 说明 |
|---|---|---|---|---|
| 总PnL | +125,000 | +480,000 | +2,100,000 | 扣除所有成本后 |
| 价差收益 | +80,000 | +310,000 | +1,400,000 | 占比66.7% |
| 库存收益 | +20,000 | +90,000 | +350,000 | 占比16.7% |
| 返佣收益 | +30,000 | +110,000 | +480,000 | 占比22.9% |
| 滑点损失 | -5,000 | -30,000 | -130,000 | 占比-6.2% |
| 夏普比率 | 3.2 | 2.8 | 2.5 | 年化 |
| 最大回撤 | -1.2% | -2.1% | -3.5% | 日内回撤 |
给自己看的版本,要更细、更深入。我一般会额外加几个维度:
- 每个品种的盈亏分布——有没有某个品种一直在亏钱?
- 每个交易员的贡献——如果是多交易员团队,谁在赚钱谁在亏?
- 策略参数敏感性——如果调整某个参数,PnL会怎么变?
- 市场状态切换时的表现——从震荡切换到趋势时,策略是否适应?
嗯,这里要注意:归因报告不是「一次性」的工作。我建议每周至少做一次,每次花30分钟。时间长了,你会对策略的「脾性」了如指掌。
我的经验:归因分析做得越细,你对策略的掌控力就越强。很多策略「突然失效」,其实不是突然的——归因报告里早就有了预警信号,只是你没看而已。
18.5 知识体系总览
下面这张图,是我对做市策略归因分析的整体理解。你可以把它当作一个「检查清单」:
这张图把归因分析的四个维度串在了一起。你从PnL分解入手,然后看风险因子,再深入分析收益来源,最后汇总成报告。每一步都有明确的目标和产出。
说实话,归因分析这件事,做一次不难,难的是坚持做。我见过太多团队,刚开始热情高涨,做了两周就嫌麻烦不做了。结果呢?策略亏了都不知道亏在哪。
嗯,最后说一句:归因分析不是「事后诸葛亮」,而是「事前预防针」。你做得越勤快,策略出问题的概率就越低。