首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >市场暴跌时,相关系数为什么不够用?从 Copula 看资产的极端联动

市场暴跌时,相关系数为什么不够用?从 Copula 看资产的极端联动

原创
作者头像
DolphinDB
发布2026-08-19 09:49:22
发布2026-08-19 09:49:22
1370
举报

传统的相关系数、协方差,衡量的是资产之间一种平均意义上的线性关系。但真实市场里,资产之间的联动往往不是均匀分布的:有些股票,市场上涨时跟涨明显,市场下跌时却相对抗跌,而在极端行情下,原本相关性并不高的资产,也可能突然出现共同下跌。

这些现象的共同原因是,金融资产的收益率通常具有尖峰、厚尾等特征,同时资产之间的依赖关系还可能表现出非线性、非对称性和尾部依赖——相关系数能告诉我们“平均来看有多相关”,却回答不了资产在不同市场状态,特别是极端上涨或极端下跌行情下,是否会表现出不同的联动方式。

这正是 Copula 擅长解决的问题。Copula 不仅可以描述整体依赖关系,通过选择不同类型的 Copula,还可以进一步刻画非对称依赖和尾部联动。针对这一需求,DolphinDB 提供了完整的 Copula 系列函数支持,覆盖模型拟合、随机数生成、概率密度和累积分布计算等主要建模环节,帮助用户在统一的数据与计算环境中完成 Copula 分析。

本文将从 Copula 的基本原理和模型选择讲起,并结合因子挖掘、压力测试和组合风险管理三个实际案例,看看 Copula 如何将“相关性之外”的依赖结构转化为可以用于金融分析和决策的信息。

Copula 是什么

Copula 是一种用来刻画多个随机变量之间依赖结构的统计函数。它的核心作用,是把“资产自身的分布”和“资产之间如何一起变化”分开建模。

每项资产的收益率都有自己的分布特征:有的波动更大,有的收益率更厚尾,有的正负收益并不对称。这部分属于边缘分布(marginal distribution),描述的是每个资产自身的特征。

但投资组合真正关心的,还有另一层信息:不同资产会不会同时出现极端值?涨的时候是不是一起涨?跌的时候是不是一起跌?这部分属于资产之间的依赖结构(dependence structure),而 Copula 正是用来描述这部分关系的。

具体可以理解成三个步骤:

  1. 分别估计每项资产的边缘分布,将收益率转换成 0 到 1 之间的分位数,在采用经验分布时,可通过秩变换构造伪观测值;
  2. 使用 Copula 函数描述这些分位数之间的联合依赖结构;
  3. 完成模型拟合后,可以基于 Copula 计算联合概率等统计特征,或生成具有所拟合依赖结构的随机样本,再通过各变量的逆边缘分布函数将样本映射回原始尺度。

背后的数学基础是 Sklar 定理。对于连续的边缘分布,多维联合分布可以唯一分解为各个边缘分布和一个 Copula 函数。这样做的好处在于,不需要用一个复杂的多元分布同时描述所有资产。可以先分别研究每个资产自身的分布,再选择合适的 Copula 描述资产之间的依赖关系。

更重要的是,这种依赖关系不一定是简单、对称的。有些资产可能在正常行情下相关性一般,但在市场暴跌时突然表现出很强的共同下跌特征;也有些资产可能在上涨行情中的联动更明显。Copula 可以针对这些不同的尾部依赖结构进行建模。

五种 Copula:谁更擅长捕捉尾部依赖?

不同 Copula 对依赖结构的假设不同,尤其是对尾部依赖的处理差异很大。因此,Copula 并不是随机选择,模型选错可能直接影响极端风险的估计。

在需要捕捉尾部依赖的场景中,通常会优先选用 Student t-Copula,或者 Clayton、Gumbel 这类阿基米德 Copula。当然,真实建模时不能只根据业务直觉选模型,还需要结合数据进行参数估计和模型检验。

DolphinDB 从 V3.00.6 起提供了覆盖上述五类模型的内置 Copula 函数体系,并覆盖建模的四个主要环节——copulaFit 系列用于参数拟合,copulaRand 系列用于生成具有指定依赖结构的随机样本,copulaPdf 和 copulaCdf 系列分别用于计算概率密度和累积分布。

下面三个案例中涉及的模型拟合、情景模拟和风险计算,用的都是这套内置接口。

案例一:因子挖掘——构造涨跌依赖因子

大盘极端上涨时,希望股票能够保持较强的上涨联动,而在极端下跌时,又希望这种联动不要同样强烈。围绕这一思路,我们利用 Copula 分别刻画股票与市场的上尾和下尾依赖,并通过截面回归进一步剔除上下尾相关性中的共同信息,将上尾相关系数剔除掉下尾相关系数后的残差作为选股因子。

为了检验这个因子是否真的有效,我们选取 2012 到 2018 年中证全指成分股的历史数据进行了回测。回测部分结果如下:

从结果来看,月度平均 RankIC 为正,年化 ICIR 接近 1,说明在这段回测期内,该因子与未来收益呈现较为稳定的正向关系。

进一步观察月度 RankIC 及累计 RankIC 曲线,可以看到月度 RankIC 整体以正值为主,累计 RankIC 曲线总体呈上升趋势,说明因子的收益区分能力并非完全来自少数单一月份。

月度 RankIC
月度 RankIC
累计 RankIC 曲线
累计 RankIC 曲线

将股票按照因子值进行分组后,组合收益整体呈现随因子值提高而上升的趋势,高因子组的表现明显优于低因子组,也进一步说明该因子具有较好的横截面区分能力。

因子分组平均收益
因子分组平均收益

在此基础上构建多空组合,多空净值曲线整体呈现上升趋势。虽然期间存在一定波动和回撤,但从整个回测区间来看,策略表现出较为明显的收益趋势。

多空组合净值曲线
多空组合净值曲线
多空组合月度收益率
多空组合月度收益率

需要注意的是,这些结果只代表历史样本中的回测表现,并不意味着该因子未来一定有效。研报本身也指出,该模型存在未来失效的可能,在极端市场环境下仍可能受到剧烈冲击。因此,在实际投资中还需要进一步进行样本外测试、滚动回测以及不同市场阶段的稳健性检验。

案例二:压力测试——描述非平行的利率冲击

在债券组合的压力测试中,一个常见的简化方法是进行平行移动(parallel shift):假设整个收益率曲线同时上移或下移一个固定幅度。例如,在收益率曲线整体平行上移 60BP 的压力情景下,假设 2Y、5Y、10Y 等各关键期限收益率均同步上行 60BP。

这种方法计算简单,但现实中的收益率曲线很少会完全平行移动。市场发生冲击时,短端和长端的变化幅度可能不同;国债、国开债和信用债对同一市场冲击的敏感程度也可能不同。换句话说,真正需要模拟的不是“所有利率一起移动多少”,而是:当一个关键期限发生极端变化时,其他期限和其他券种会如何联动?

这正是 Copula 可以发挥作用的地方。

以 10 年期国债收益率上行 60BP 为核心压力情景,可以利用 Copula 模型描述不同期限、不同券种收益率之间的联合依赖结构,进一步模拟其他关键期限和券种在这一压力条件下可能出现的变化。

再结合每只债券在不同关键期限上的关键期限久期(KRD,Key Rate Duration),就可以把收益率曲线的变化进一步映射到债券价格变化,从而得到组合层面的潜在损失。

我们将 KRD-Copula 模型与传统修正久期模型进行比较,结果如下:

从四只债券的结果来看,KRD-Copula 模型的预测误差均低于传统修正久期模型。其中,企业债 D 的误差从 9.98% 降至 1.46%,改善尤为明显。

这背后的原因在于,两种方法对利率变化的假设不同。传统修正久期模型通常基于单一利率变动进行近似,而 KRD-Copula 同时考虑不同关键期限、不同券种之间的联合依赖结构,因此能够更细致地描述压力情景下的收益率变化。

当然,这并不意味着 Copula 在任何压力测试中都一定优于传统方法。最终效果仍然取决于边缘分布拟合、Copula 模型选择、参数稳定性以及压力情景本身的合理性。

案例三:组合风险管理——识别极端行情下的共同风险

最后一个场景更贴近日常的风险管理工作:算组合的 VaR、CVaR 时,如果假设资产之间相互独立,会不会低估真实风险。

我们设计了一个对比实验:使用相同的边缘分布,一组按照资产相互独立的假设生成随机样本,另一组则使用 Student t-Copula 生成具有联合依赖结构的随机样本。

随后,在 95% 置信水平下分别计算组合 VaR 和 CVaR,并使用独立的测试集进行样本外验证。

为了验证实现结果的一致性,我们分别使用 MATLAB、Python 和 DolphinDB 进行计算。

相关系数拟合值三个平台完全一致,自由度和 CVaR 误差的结果也仅存在小数点后第三、四位的细微差异,表明 DolphinDB 的 Copula 建模结果与 MATLAB、Python 等主流工具具有较高的一致性。

独立假设下,CVaR 预测误差约为 0.0038;使用 Copula 后,误差下降至约 0.0002,预测精度得到明显改善。在样本外测试中,独立假设得到的 CVaR 为 0.0217,而 Copula 模型得到的结果为 0.0214。虽然样本外改善幅度没有训练阶段那么明显,但样本外 Copula 的误差仍低于独立模型。

这个结果说明,在当前实验数据和模型设定下,将资产之间的联合依赖结构纳入风险计算,可以使 CVaR 的估计更接近测试集中的实际尾部风险。

更直观地说,如果组合中的资产在极端行情下确实存在共同下跌依赖,而模型却假设它们相互独立,那么组合的尾部风险往往可能被低估。Copula 的价值就在于把这种隐藏在联合分布中的依赖结构纳入模拟,从而生成更符合实际相关性的极端情景。

写在最后

相关系数更像一个晴天工具——市场平稳的时候,它能够告诉我们资产之间大致有多相关。但真正考验一个模型的,往往不是平静的市场,而是那些资产突然一起失守的时刻。

Copula 提供的,是在整体相关性之外进一步刻画资产依赖结构的能力。从选股中的涨跌依赖,到压力测试中的联合冲击,再到 VaR、CVaR 中的尾部风险,这些应用背后关注的其实都是同一个问题:资产之间的依赖关系在不同市场状态,尤其是极端行情中,究竟表现出怎样的特征?

当然,Copula 也不是万能工具。边缘分布拟合、模型选择、参数稳定性以及样本外验证,都会影响最终结果。真正有价值的,是结合具体场景选择合适的模型,并用真实数据持续验证。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • Copula 是什么
  • 五种 Copula:谁更擅长捕捉尾部依赖?
  • 案例一:因子挖掘——构造涨跌依赖因子
  • 案例二:压力测试——描述非平行的利率冲击
  • 案例三:组合风险管理——识别极端行情下的共同风险
  • 写在最后
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档