第十七章:做市策略压力测试
压力测试这事儿,说实话,我早年吃过亏。
2015年那会儿,我刚入行做结构化产品做市。策略回测曲线漂亮得不行,夏普比率3.2,最大回撤不到2%。我信心满满地上了实盘。结果呢?8月份A股熔断,我的做市策略一天亏掉了过去三个月的利润。为什么?因为我的回测里,从来没有考虑过「流动性瞬间枯竭」这种极端情况。
从那以后,我养成了一个习惯:任何策略上线前,必须先过压力测试这一关。今天我们就聊聊怎么做。
17.1 极端市场情景设计
极端情景,说白了就是「你想象中最坏的情况,再乘以2」。
我个人习惯把极端情景分成三类:
- 价格冲击型:比如股指单日暴跌10%,波动率瞬间飙升到80%
- 流动性枯竭型:买卖价差扩大10倍,挂单深度缩水90%
- 相关性突变型:原本负相关的资产突然正相关,对冲失效
举个例子。我做雪球产品做市时,最怕什么?最怕挂钩标的在敲入线附近反复摩擦。这时候Delta从0.2跳到0.8,Gamma巨大,对冲成本失控。
我设计过一个极端情景:
# 极端情景参数示例
scenario = {
'name': '敲入线反复摩擦',
'spot_drop': -35%, # 从期初跌到敲入线附近
'vol_jump': 40% -> 80%, # 波动率翻倍
'spread_widen': 5x, # 价差扩大5倍
'depth_shrink': 90%, # 深度缩水90%
'duration': 5天 # 持续5个交易日
}
你想想看,这种情景下,你的做市策略还能扛得住吗?
17.2 历史危机情景回放
历史不会简单重复,但韵律总是相似的。
我手头有一个「危机情景库」,里面收录了过去20年主要的市场危机事件。每次开发新策略,我都会把这些情景跑一遍。
| 危机事件 | 时间 | 核心特征 | 对做市策略的冲击 |
|---|---|---|---|
| 2008年全球金融危机 | 2008.09 | 流动性冻结,信用利差飙升 | 做市库存无法出清,亏损持续扩大 |
| 2015年A股股灾 | 2015.06-08 | 千股跌停,期指贴水 | 对冲成本失控,Delta对冲失效 |
| 2020年新冠危机 | 2020.03 | 波动率暴涨,资产普跌 | Gamma对冲成本飙升,做市商集体亏损 |
| 2022年英国养老金危机 | 2022.09 | 利率飙升,LDI策略爆仓 | 利率衍生品做市商面临对手方风险 |
嗯,这里要注意一点:历史情景回放不是简单地把历史价格序列塞进去。你得考虑当时的市场微观结构。比如2015年股灾时,期指是贴水的,而且贴水幅度很大。如果你只是把价格数据拿来用,不考虑贴水对展期成本的影响,那测试结果就是骗人的。
我曾经犯过这个错。回测时看着没问题,实盘一跑,展期成本直接把利润吃掉了。后来我学乖了,回放历史情景时,会把当时的基差、波动率曲面、流动性指标一起打包进去。
17.3 压力测试报告生成
测试做完了,怎么输出?光说「策略扛住了」或者「策略爆仓了」是不够的。你需要一份结构化的报告。
我一般把报告分成四个部分:
17.3.1 风险指标汇总
这部分是硬数据,别整虚的。
# 压力测试风险指标示例
{
'max_drawdown': -18.5%, # 最大回撤
'var_99_1d': 3.2%, # 99%置信度1天VaR
'expected_shortfall': 5.1%, # 预期亏损
'liquidity_cost': 2.3%, # 流动性成本占比
'margin_call_risk': '高', # 追加保证金风险
'breach_count': 3 # 风控阈值被击穿次数
}
17.3.2 情景归因分析
哪个情景最致命?为什么?
我个人习惯用「贡献度分解」来做。比如:
- 价格冲击贡献了60%的亏损
- 流动性成本贡献了25%
- 对冲误差贡献了15%
这样你就能知道,最该补的短板在哪里。
17.3.3 压力测试结论与建议
这部分是给老板看的,也是给自己看的。
我一般会写三条:
- 策略是否通过:通过/有条件通过/不通过
- 最大容忍度:在什么条件下策略会失效
- 改进建议:比如增加波动率对冲、降低杠杆、设置熔断机制
我曾经遇到过一个情况:压力测试显示策略在「波动率飙升」情景下亏损很大。我当时的改进方案是「降低Gamma暴露」。结果呢?下次危机来了,波动率没怎么动,但流动性枯竭了。Gamma暴露是降了,但流动性成本反而更高了。
教训:压力测试不能只测一个维度。你得把多个极端情景组合起来看。
17.4 知识体系总览
下面这张图,是我做压力测试的核心框架。你可以把它当成一个检查清单。
压力测试报告生成后,我习惯做一件事:把报告打印出来,拿红笔圈出最危险的三个点。然后问自己:如果这三个点同时发生,我该怎么办?
这个习惯救过我两次。一次是2020年3月,一次是2022年9月。两次都是「组合情景」提前暴露了风险,让我有时间调整仓位。
好了,关于压力测试,核心就是这些。记住:压力测试不是为了证明策略有多强,而是为了知道它什么时候会死。知道死穴在哪,你才能活得更久。