4. 相关性分析

多策略组合的核心假设是“策略之间低相关甚至负相关,从而在同等收益下降低组合波动”。但相关性不是静态常数,它会随市场状态漂移,甚至在压力情景下突然升高。若只用一个全样本相关系数做资金分配,组合很可能在关键时刻失去分散化保护。本节围绕四个问题展开:如何计算策略间相关系数、如何观察滚动相关性、如何识别尾部相关性、以及相关性突变如何影响组合风险与资金分配。

一、核心原理:相关系数只是线性同步性的快照

常用皮尔逊相关系数衡量两条策略日收益序列的线性同步程度,公式为两序列协方差除以各自标准差的乘积。它的取值范围是[-1,1],接近1表示同涨同跌,接近-1表示反向,接近0表示线性关系弱。但在策略组合中,必须注意三点:

  • 尺度无关但不代表风险贡献相同。相关系数只描述方向同步性,不包含波动率大小。两个策略相关系数0.8,但一个波动率5%、另一个20%,它们对组合的风险贡献差异巨大。
  • 对非线性关系不敏感。若策略A在趋势市盈利、震荡市亏损,策略B恰好相反,但两者收益并非线性关系,皮尔逊系数可能低估这种互补性。
  • 对异常值敏感。少数极端收益会显著拉高或拉低相关系数,因此需要结合斯皮尔曼秩相关或肯德尔秩相关做稳健校验。

实战原则:相关性分析不是算一个数,而是建立“全样本—滚动窗口—尾部条件—突变检测”四层视图。资金分配应基于多层视图的综合判断,而非单一全样本系数。

二、方法流程:从收益矩阵到相关性监控

假设有N条策略,每条策略有T个交易日的日收益。标准流程如下:

  1. 数据对齐:按交易日对齐所有策略收益,缺失值用0填充或剔除,避免因不同市场日历导致伪相关。
  2. 全样本相关矩阵:计算N×N皮尔逊相关矩阵,观察整体分散化水平。
  3. 滚动相关:设定窗口W(如60日、120日),逐日滚动计算两两相关系数,形成时间序列。
  4. 尾部相关:取各自收益最差5%或10%的样本,计算条件相关系数,观察极端行情下的同步性。
  5. 突变检测:对滚动相关序列做均值漂移检测,如CUSUM或滚动Z-score,标记相关性突然升高的时点。
  6. 组合影响评估:将相关矩阵代入组合波动率公式,比较不同相关性假设下的组合风险与资金分配权重。
import numpy as np
import pandas as pd

# returns: DataFrame, index=date, columns=strategy
def rolling_corr(returns, s1, s2, window=60):
    return returns[s1].rolling(window).corr(returns[s2])

def tail_corr(returns, s1, s2, q=0.05):
    threshold = returns[[s1, s2]].min(axis=1).quantile(q)
    mask = returns[[s1, s2]].min(axis=1) <= threshold
    return returns.loc[mask, s1].corr(returns.loc[mask, s2])

def corr_shift_z(rolling_series, lookback=120):
    mu = rolling_series.rolling(lookback).mean()
    sigma = rolling_series.rolling(lookback).std()
    return (rolling_series - mu) / sigma

组合波动率可近似写为:σ_p² = wᵀΣw,其中Σ为协方差矩阵。当相关性从0.2升到0.8时,即使各策略波动率不变,组合波动率也会显著上升。资金分配若仍按低相关假设执行,实际风险敞口会被低估。

相关性四层视图与组合影响链路 全样本相关矩阵 整体分散化水平 滚动相关性 60/120日窗口时序 尾部相关性 极端亏损条件同步 突变检测 Z-score/CUSUM 协方差矩阵 Σ 更新 σ_p² = wᵀΣw 组合波动率上升 分散化失效 资金分配调整 降权高相关策略

三、案例/场景:相关性突变如何击穿组合

假设组合中有三条策略:趋势跟踪A、均值回归B、套利C。全样本相关系数显示A与B为-0.15,A与C为0.10,B与C为0.05,看起来分散化良好。资金分配按等风险贡献法给A、B、C各约33%权重。

某月市场出现流动性冲击,所有风险资产同步下跌。此时:

  • A与B的滚动60日相关系数从-0.15快速升至0.65;
  • A与C从0.10升至0.55;
  • 尾部5%条件相关系数显示A与B达到0.78。

组合实际波动率比模型预测高出约40%,最大回撤远超预期。原因不是策略本身失效,而是相关性突变导致分散化收益消失。若在突变检测触发时及时降低A与B的权重,并增加与两者低相关的C或现金,组合回撤可显著收敛。

视图 计算方式 观察重点 对资金分配的含义
全样本相关 全期皮尔逊系数 整体分散化水平 初始权重设定参考
滚动相关 60/120日滚动窗口 相关性趋势与漂移 动态调整权重
尾部相关 最差5%/10%条件相关 极端行情同步性 压力测试与风险预算
突变检测 Z-score/CUSUM 相关性跳变时点 触发降权或对冲

四、误区/复盘:相关性分析中最容易犯的错

误区一:用全样本相关系数做动态分配。全样本系数是历史平均,无法反映当前状态。应至少以滚动相关作为分配输入。

误区二:忽略尾部相关。正常时期低相关不代表危机时低相关。尾部相关系数才是压力情景下的真实分散化能力。

误区三:把相关当因果。两条策略同涨同跌可能只是共同暴露于某个风险因子,而非彼此驱动。应进一步做因子归因。

误区四:窗口越短越好。窗口过短噪声大,容易频繁调仓;窗口过长反应迟钝。建议同时观察60日与120日,并用突变检测辅助。

复盘清单:

  • 是否计算了全样本、滚动、尾部三层相关?
  • 滚动相关是否出现持续上升趋势?
  • 尾部相关是否显著高于全样本相关?
  • 突变检测是否触发?触发后资金分配是否调整?
  • 组合波动率预测与实际偏差是否在可接受范围?

相关性分析的目标不是追求一个精确数字,而是建立对策略间同步性的动态认知。只有把全样本、滚动、尾部和突变四个视角结合起来,才能在资金分配中真正实现“该分散时分散、该收缩时收缩”。