1. 课程导入与问题界定
先看一个在真实投研场景中并不罕见的案例。某多资产组合在年初按“分散化”原则配置:A股宽基指数基金30%、成长风格基金25%、红利低波基金20%、可转债基金15%、黄金ETF10%。从单资产波动率看,这个组合相当稳健——五类资产的历史年化波动率分布在8%到22%之间,两两相关系数长期均值大多在0.1到0.4之间,按常规均值—方差框架测算的组合波动率约为9.6%。然而在某个季度初的十个交易日内,组合净值回撤了7.8%,远超模型给出的“95%置信度、10日VaR约3.2%”的估计。
事后归因发现问题并不出在单个资产的跌幅上:A股宽基跌6.1%、成长风格跌8.4%、红利低波跌5.2%、可转债跌4.7%、黄金仅跌1.3%。单看每一项都在可承受范围内,但前四类资产在这十个交易日里几乎同涨同跌,原本0.2~0.4的相关系数迅速抬升到0.75以上,红利低波与成长风格甚至出现了0.81的滚动相关。分散化的“减震器”在关键时刻失效了,组合实际承受的是接近单一风险因子的冲击。这就是本节要界定的核心问题——板块相关性突变。
相关性突变的定义与识别口径
所谓板块相关性突变,指在特定市场环境下,原本相关性较低的板块之间,其收益率的联动关系在较短时间内发生显著、持续且方向一致的抬升(少数情形下也可能是骤降),导致基于历史相关性构建的组合风险结构失效。它有三个关键限定,缺一不可:
- 时间尺度上的“短”:不是年度级别的缓慢漂移,而是在数日到数周窗口内发生的跃迁。实务中常用20日、60日滚动相关系数配合突变检测来判断。
- 幅度上的“显著”:相关系数抬升幅度需超过统计噪声。例如以过去250个交易日相关系数分布的标准差为基准,当前20日相关系数偏离均值超过2倍标准差,可视为异常。
- 结构上的“系统性”:不是某一对板块的偶发联动,而是多个板块同时向高相关收敛,意味着共同风险因子(如流动性、政策预期、汇率)开始主导定价。
需要强调参照约定:本课程中所有相关系数均指日收益率序列的皮尔逊相关系数,取值范围[-1, 1],数值越大表示同向联动越强;滚动窗口默认以交易日为单位,窗口内数据不足时不计算。这一约定在后续所有章节和图示中保持一致。
压力测试的目标边界
明确了问题,就要界定工具的目标。压力测试在这里不是预测下一次回撤的具体时点,也不是给出精确的损失概率,而是回答三个问题:在相关性突变的极端情景下,组合可能承受多大损失?损失主要来自哪些板块的联动?现有组合结构在多大程度上依赖“相关性保持稳定”这一隐含假设?
因此本课程设定的压力测试边界是:以历史极端窗口和假设情景为输入,以组合层面的损失分布和板块贡献分解为输出,聚焦相关性参数的结构性变化而非单资产尾部风险。它不替代日常的VaR监控,也不处理流动性枯竭下的强制平仓路径,这些属于其他风控模块的职责。边界清晰,才能避免压力测试沦为“什么都想算、什么都算不准”的摆设。
为什么以组合风险诊断与压力测试为主线
面对相关性突变,学习者容易陷入两个误区:一是把它当成纯统计问题,沉迷于Copula、DCC-GARCH等模型的参数估计;二是把它当成纯编程问题,追求回测代码的复杂度。这两条路都会偏离实际目标。本课程因此明确主线:组合风险诊断与压力测试是目的,统计与编程是手段。
具体来说,统计知识用于回答“相关性是否真的变了、变化是否显著”,例如滚动窗口计算、标准差阈值判断、相关系数矩阵的正定性检查;编程知识用于回答“如何批量、可复现地完成计算”,例如用pandas计算滚动相关、用矩阵运算完成组合重估。但所有这些都服务于一个业务判断:当前组合在相关性突变情景下是否安全,如果不安全,应该调整哪些板块的权重或增加何种对冲。
以开头的案例为例,若按本课程框架处理,操作路径大致是:先取五类资产过去两年的日收益率,计算20日滚动相关矩阵,发现前四类资产的相关性在回撤窗口内从均值0.3附近跃升至0.75以上,偏离历史分布超过2倍标准差,判定为突变;随后构造“前四类资产相关性统一设为0.8、黄金维持0.1”的压力情景,用原有权重重估组合,得到10日损失约7.5%的结果,与真实回撤7.8%接近;最后做贡献分解,发现成长风格与红利低波的联动贡献了损失的六成以上,从而明确调仓方向应是降低这两类资产的合并暴露,而非简单削减总仓位。这个例子中的参数均为教学假设,用于说明流程,不代表任何真实产品业绩。