1. DY溢出指数模型概述
DY溢出指数模型(Diebold-Yilmaz Spillover Index)是金融计量经济学中用于分析市场间风险传染和波动溢出效应的经典方法。我第一次接触这个模型是在2015年股灾期间,当时需要量化A股与港股之间的风险传导路径。传统方法难以捕捉动态关联,而DY模型通过方差分解的创新应用,完美解决了这个问题。
该模型的核心思想是将预测误差方差分解(FEVD)转化为可量化的溢出指数。具体来说,它通过VAR模型估计变量间的相互影响,然后计算每个变量对其他变量波动的贡献度。这个贡献度就是溢出效应的量化表现。与静态相关系数相比,DY指数能区分方向性(谁传染谁)和强度(传染程度)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础模型构建与比较
2.1 标准VAR模型实现
构建DY指数的第一步是建立合适的VAR模型。在R语言中,vars包提供了完整的实现方案。以下是核心代码框架:
r复制library(vars)
data(Canada) # 示例数据
var_model <- VAR(Canada, p = 2, type = "const")
summary(var_model)
关键参数选择经验:
- 滞后阶数p:建议先用AIC/BIC准则自动选择,再通过残差检验验证
- 模型类型:金融数据建议选择"both"(含截距项和时间趋势)
- 稳定性检查:所有特征根模都应小于1
注意:小样本数据(n<100)建议使用贝叶斯VAR(BVAR)以避免过拟合
2.2 DCC-GARCH的波动率处理
当数据存在明显的波动聚集性时,需要先通过DCC-GARCH模型过滤条件异方差。rugarch包是理想选择:
r复制library(rugarch)
spec <- ugarchspec(
variance.model = list(model = "sGARCH", garchOrder = c(1,1)),
mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
distribution.model = "std"
)
fit <- ugarchfit(spec, data = returns)
sigma_t <- sigma(fit) # 获取条
