第 5 章 时间序列分析中的 GARCH 模型

5.1 如何拟合 ARCH 模型?

在 R 语言中拟合自回归条件异方差(ARCH)模型,常用的包是 fGarch。

首先加载 fGarch 包,如果没有安装,需先安装再加载。

# 安装 fGarch 包(如果未安装)
# install.packages("fGarch")
library(fGarch)
## NOTE: Packages 'fBasics', 'timeDate', and 'timeSeries' are no longer
## attached to the search() path when 'fGarch' is attached.
## 
## If needed attach them yourself in your R script by e.g.,
##         require("timeSeries")

假设已有金融时间序列数据,将其转换为合适的格式。这里以简单收益率序列为例,通常需要对价格序列进行对数差分来计算收益率。

# 示例价格序列
price <- c(100, 102, 105, 103, 107, 104, 109, 106, 110, 108)
# 计算对数收益率
returns <- diff(log(price))
# 将收益率转换为时间序列对象
ts_returns <- ts(returns, frequency = 1)

使用 garchFit 函数来拟合 ARCH 模型。ARCH (p) 模型中,p 表示 ARCH 项的阶数。

# 拟合 ARCH(1) 模型
fit_arch <- garchFit(formula = ~garch(1,0), data = ts_returns)
## 
## Series Initialization:
##  ARMA Model:                arma
##  Formula Mean:              ~ arma(0, 0)
##  GARCH Model:               garch
##  Formula Variance:          ~ garch(1, 0)
##  ARMA Order:                0 0
##  Max ARMA Order:            0
##  GARCH Order:               1 0
##  Max GARCH Order:           1
##  Maximum Order:             1
##  Conditional Dist:          norm
##  h.start:                   2
##  llh.start:                 1
##  Length of Series:          9
##  Recursion Init:            mci
##  Series Scale:              0.03142
## 
## Parameter Initialization:
##  Initial Parameters:          $params
##  Limits of Transformations:   $U, $V
##  Which Parameters are Fixed?  $includes
##  Parameter Matrix:
##                     U       V params includes
##     mu     -2.722e+00   2.722 0.2722     TRUE
##     omega   1.000e-06 100.000 0.1000     TRUE
##     alpha1  1.000e-08   1.000 0.1000     TRUE
##     gamma1 -1.000e+00   1.000 0.1000    FALSE
##     delta   0.000e+00   2.000 2.0000    FALSE
##     skew    1.000e-01  10.000 1.0000    FALSE
##     shape   1.000e+00  10.000 4.0000    FALSE
##  Index List of Parameters to be Optimized:
##     mu  omega alpha1 
##      1      2      3 
##  Persistence:                  0.1 
## 
## 
## --- START OF TRACE ---
## Selected Algorithm: nlminb 
## 
## R coded nlminb Solver: 
## 
##   0:     21.402773: 0.272170 0.100000 0.100000
##   1:     12.665457: 0.269698 0.869289 0.738836
##   2:     12.635209: 0.281595 0.815430 0.781563
##   3:     12.332695: 0.301814 0.399306  1.00000
##   4:     12.164310: 0.296407 0.283343 0.900445
##   5:     12.145624: 0.268870 0.218458 0.616603
##   6:     12.060826: 0.260141 0.465170 0.434621
##   7:     12.053330: 0.261397 0.425275 0.530211
##   8:     12.050975: 0.262984 0.402514 0.543349
##   9:     12.050357: 0.263041 0.380110 0.557084
##  10:     12.050344: 0.263112 0.383421 0.554449
##  11:     12.050343: 0.263101 0.383242 0.554569
##  12:     12.050343: 0.263102 0.383240 0.554568
## 
## Final Estimate of the Negative LLH:
##  LLH:  -19.09    norm LLH:  -2.121 
##        mu     omega    alpha1 
## 0.0082663 0.0003783 0.5545684 
## 
## R-optimhess Difference Approximated Hessian Matrix:
##               mu    omega    alpha1
## mu     -33343.90    51404    25.133
## omega   51403.78 -7745216 -4820.550
## alpha1     25.13    -4821    -4.451
## attr(,"time")
## Time difference of 0.002612 secs
## 
## --- END OF TRACE ---
## 
## 
## Time to Estimate Parameters:
##  Time difference of 0.01715 secs
# 查看拟合结果
print(fit_arch)
## 
## Title:
##  GARCH Modelling 
## 
## Call:
##  garchFit(formula = ~garch(1, 0), data = ts_returns) 
## 
## Mean and Variance Equation:
##  data ~ garch(1, 0)
## <environment: 0x7febd9542df0>
##  [data = ts_returns]
## 
## Conditional Distribution:
##  norm 
## 
## Coefficient(s):
##         mu       omega      alpha1  
## 0.00826632  0.00037831  0.55456841  
## 
## Std. Errors:
##  based on Hessian 
## 
## Error Analysis:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     0.0082663   0.0055073    1.501    0.133
## omega  0.0003783   0.0006316    0.599    0.549
## alpha1 0.5545684   0.8306641    0.668    0.504
## 
## Log Likelihood:
##  19.09    normalized:  2.121 
## 
## Description:
##  Fri Jul 11 18:40:06 2025 by user:

在上述代码中:formula = ~garch(1,0) 表示拟合 ARCH (1) 模型,garch(p,q)pARCH 项的阶数,qGARCH 项的阶数(这里为 0,因为是纯粹的 ARCH 模型)。 data = ts_returns 指定用于拟合模型的时间序列数据为收益率序列。

拟合模型后,需要对模型进行诊断,以检查模型是否合适。常见的诊断方法包括检查残差的自相关和条件异方差性。

检查残差自相关

# 提取标准化残差
std_residuals <- residuals(fit_arch, standardize = TRUE)
# 绘制标准化残差的自相关函数图
acf(std_residuals, main = "ACF of Standardized Residuals")

检查条件异方差性

# 安装包,如未安装
# install.packages("FinTS")
library(FinTS)
## 
## Attaching package: 'FinTS'
## The following object is masked from 'package:forecast':
## 
##     Acf
# 进行ARCH - LM检验
if(!inherits(std_residuals, "ts")) {
  std_residuals <- ts(std_residuals, frequency = 1)
}
arch_lm_test <- ArchTest(std_residuals,lags = 2)
print(arch_lm_test)
## 
##  ARCH LM-test; Null hypothesis: no ARCH
##  effects
## 
## data:  std_residuals
## Chi-squared = 2.1, df = 2, p-value = 0.3

使用拟合好的 ARCH 模型进行预测。

# 预测未来3期
forecast_arch <- predict(fit_arch, n.ahead = 3)
# 查看预测结果
print(forecast_arch)
##   meanForecast meanError standardDeviation
## 1     0.008266   0.02777           0.02777
## 2     0.008266   0.02839           0.02839
## 3     0.008266   0.02873           0.02873

5.2 如何拟合 GARCH 模型?

在 R 语言中拟合广义自回归条件异方差(GARCH)模型,通常使用fGarch包。

如果尚未安装fGarch包,需要先进行安装,然后加载它。

# 安装 fGarch 包(如果未安装)
# install.packages("fGarch")
library(fGarch)

假设我们有一个金融时间序列数据,例如股票价格序列。通常需要先将价格序列转换为收益率序列,一般采用对数收益率。

# 示例价格序列
price <- c(100, 102, 105, 103, 107, 104, 109, 106, 110, 108)
# 计算对数收益率
returns <- diff(log(price))
# 将收益率转换为时间序列对象
ts_returns <- ts(returns, frequency = 1)

使用garchFit函数来拟合 GARCH (p,q) 模型,其中p是 ARCH 项的阶数,q是 GARCH 项的阶数。

# 拟合 GARCH(1,1) 模型
fit_garch <- garchFit(formula = ~garch(1,1), data = ts_returns)
## 
## Series Initialization:
##  ARMA Model:                arma
##  Formula Mean:              ~ arma(0, 0)
##  GARCH Model:               garch
##  Formula Variance:          ~ garch(1, 1)
##  ARMA Order:                0 0
##  Max ARMA Order:            0
##  GARCH Order:               1 1
##  Max GARCH Order:           1
##  Maximum Order:             1
##  Conditional Dist:          norm
##  h.start:                   2
##  llh.start:                 1
##  Length of Series:          9
##  Recursion Init:            mci
##  Series Scale:              0.03142
## 
## Parameter Initialization:
##  Initial Parameters:          $params
##  Limits of Transformations:   $U, $V
##  Which Parameters are Fixed?  $includes
##  Parameter Matrix:
##                     U       V params includes
##     mu     -2.722e+00   2.722 0.2722     TRUE
##     omega   1.000e-06 100.000 0.1000     TRUE
##     alpha1  1.000e-08   1.000 0.1000     TRUE
##     gamma1 -1.000e+00   1.000 0.1000    FALSE
##     beta1   1.000e-08   1.000 0.8000     TRUE
##     delta   0.000e+00   2.000 2.0000    FALSE
##     skew    1.000e-01  10.000 1.0000    FALSE
##     shape   1.000e+00  10.000 4.0000    FALSE
##  Index List of Parameters to be Optimized:
##     mu  omega alpha1  beta1 
##      1      2      3      5 
##  Persistence:                  0.9 
## 
## 
## --- START OF TRACE ---
## Selected Algorithm: nlminb 
## 
## R coded nlminb Solver: 
## 
##   0:     12.230474: 0.272170 0.100000 0.100000 0.800000
##   1:     12.221270: 0.272164 0.114664 0.110886 0.811272
##   2:     12.215804: 0.272932 0.126638 0.100453 0.797114
##   3:     12.213032: 0.274780 0.158682 0.0823255 0.776116
##   4:     12.208664: 0.277941 0.210107 0.0901593 0.708816
##   5:     12.146469: 0.305662 0.710939 0.223365 1.00000e-08
##   6:     12.135791: 0.293042 0.700899 0.230291 1.00000e-08
##   7:     12.093912: 0.243210 0.580573 0.330530 1.00000e-08
##   8:     12.071014: 0.242315 0.486770 0.415371 1.00000e-08
##   9:     12.063518: 0.272571 0.324203 0.570067 1.00000e-08
##  10:     12.054351: 0.262584 0.419094 0.484321 1.00000e-08
##  11:     12.053175: 0.262740 0.398924 0.505071 1.00000e-08
##  12:     12.052426: 0.263777 0.384312 0.523673 1.00000e-08
##  13:     12.051633: 0.263935 0.376281 0.539180 1.00000e-08
##  14:     12.050588: 0.263813 0.374040 0.557101 1.00000e-08
##  15:     12.050363: 0.263297 0.379452 0.558062 1.00000e-08
##  16:     12.050344: 0.263145 0.382569 0.555553 1.00000e-08
##  17:     12.050343: 0.263099 0.383202 0.554672 1.00000e-08
##  18:     12.050343: 0.263103 0.383244 0.554569 1.00000e-08
##  19:     12.050343: 0.263102 0.383240 0.554568 1.00000e-08
## 
## Final Estimate of the Negative LLH:
##  LLH:  -19.09    norm LLH:  -2.121 
##        mu     omega    alpha1     beta1 
## 8.266e-03 3.783e-04 5.546e-01 1.000e-08 
## 
## R-optimhess Difference Approximated Hessian Matrix:
##               mu    omega    alpha1     beta1
## mu     -33343.89    51403    25.133    24.856
## omega   51402.79 -7745215 -4820.553 -5378.501
## alpha1     25.13    -4821    -4.451    -3.783
## beta1      24.86    -5379    -3.783    -4.339
## attr(,"time")
## Time difference of 0.004818 secs
## 
## --- END OF TRACE ---
## 
## 
## Time to Estimate Parameters:
##  Time difference of 0.02455 secs
# 查看拟合结果
print(fit_garch)
## 
## Title:
##  GARCH Modelling 
## 
## Call:
##  garchFit(formula = ~garch(1, 1), data = ts_returns) 
## 
## Mean and Variance Equation:
##  data ~ garch(1, 1)
## <environment: 0x7febdbc819d8>
##  [data = ts_returns]
## 
## Conditional Distribution:
##  norm 
## 
## Coefficient(s):
##         mu       omega      alpha1       beta1  
## 0.00826631  0.00037831  0.55456807  0.00000001  
## 
## Std. Errors:
##  based on Hessian 
## 
## Error Analysis:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     8.266e-03   5.521e-03    1.497    0.134
## omega  3.783e-04   9.752e-04    0.388    0.698
## alpha1 5.546e-01   9.377e-01    0.591    0.554
## beta1  1.000e-08   1.456e+00    0.000    1.000
## 
## Log Likelihood:
##  19.09    normalized:  2.121 
## 
## Description:
##  Fri Jul 11 18:40:06 2025 by user:

在上述代码中: formula = ~garch(1,1)指定了要拟合的是 GARCH (1,1) 模型。garch(p,q)中的p和q分别对应 ARCH 项和 GARCH 项的阶数。 data = ts_returns表示使用之前计算得到的收益率时间序列数据进行模型拟合。

拟合模型后,需要对模型进行诊断以检查其合理性。常见的诊断方法包括:

检查残差的自相关

# 提取标准化残差
std_residuals <- residuals(fit_garch, standardize = TRUE)
# 绘制标准化残差的自相关函数图
acf(std_residuals, main = "ACF of Standardized Residuals")

检查条件异方差性

# 进行ARCH - LM检验
arch_lm_test <- ArchTest(std_residuals,lags = 2)
print(arch_lm_test)
## 
##  ARCH LM-test; Null hypothesis: no ARCH
##  effects
## 
## data:  std_residuals
## Chi-squared = 2.1, df = 2, p-value = 0.3

使用拟合好的 GARCH 模型进行预测。

# 预测未来3期
forecast_garch <- predict(fit_garch, n.ahead = 3)
# 查看预测结果
print(forecast_garch)
##   meanForecast meanError standardDeviation
## 1     0.008266   0.02777           0.02777
## 2     0.008266   0.02839           0.02839
## 3     0.008266   0.02873           0.02873

5.3 如何拟合 mgarch 模型?

在 R 语言中,若要拟合多元广义自回归条件异方差(MGARCH)模型,可借助rmgarch包来完成。在此过程中,可能还需加载fGarch包,因为rmgarch包的某些功能依赖于它。若尚未安装这两个包,需先进行安装。

具体操作如下:

# 安装 rmgarch 包(如果未安装)
# install.packages("rmgarch")
# 安装 fGarch 包(如果未安装)
# install.packages("fGarch")
library(fBasics)
library(rmgarch)
## Loading required package: rugarch
## Loading required package: parallel
## 
## Attaching package: 'rugarch'
## The following objects are masked from 'package:fBasics':
## 
##     qgh, qnig
## 
## Attaching package: 'rmgarch'
## The following objects are masked from 'package:xts':
## 
##     first, last
library(fGarch)
library(parallel)

假设手头拥有多个相关的金融时间序列数据,比如多个股票的收益率序列。首先要将这些序列整理为合适的格式,一般是构建成一个矩阵或数据框,其中每一列代表一个时间序列。以下代码展示了如何从雅虎财经获取数据,并将其处理为所需格式,同时计算对数收益率并去除缺失值:

library(quantmod)
## Loading required package: TTR
## 
## Attaching package: 'TTR'
## The following object is masked from 'package:fBasics':
## 
##     volatility
## The following object is masked from 'package:fGarch':
## 
##     volatility
#load data, time series closing prices, 10 year sample
#DAX 30
getSymbols('^GDAXI', src='yahoo', from="2025-01-01",    to="2055-05-31")
## [1] "GDAXI"
GDAXI.DE=GDAXI[ , "GDAXI.Close"]
#S&P 500
getSymbols('^GSPC', src='yahoo', from="2025-01-01", to="2055-05-31")
## [1] "GSPC"
GSPC=GSPC[ , "GSPC.Close"]
#Credit Suisse Commodity Return Strat I
getSymbols('CRSOX', src='yahoo', from="2025-01-01", to="2055-05-31")
## [1] "CRSOX"
CRSOX=CRSOX[ , "CRSOX.Close"]
#iShares MSCI Emerging Markets
getSymbols('EEM', src='yahoo', from="2025-01-01", to="2055-05-31")
## [1] "EEM"
EEM=EEM[ , "EEM.Close"]

merged_data <- merge(GDAXI.DE, GSPC, CRSOX, EEM)
# 转换回 data.frame
Dat <- as.data.frame(merged_data)
Dat<-apply(Dat,2,function(x) Delt(x,k=1,type="log"))
Dat <- na.omit(Dat)

rmgarch包提供了多种 MGARCH 模型形式,其中常见的有 BEKK、CCC 等。这里以 BEKK (1,1) 模型为例来展示模型的构建。

xspec <- ugarchspec(mean.model = list(armaOrder = c(1, 1)), 
           variance.model = list(garchOrder = c(1,1), model ='sGARCH'), 
           distribution.model = 'norm')
uspec = multispec(replicate(4, xspec))
spec1 = dccspec(uspec = uspec, dccOrder = c(1, 1), distribution ='mvnorm')
spec1a = dccspec(uspec = uspec, dccOrder = c(1, 1), model='aDCC', distribution ='mvnorm')

在上述代码片段中: * ugarchspec用于定义单变量 GARCH 模型部分。其中,variance.model里的model = “sGARCH”表明采用标准 GARCH 模型,garchOrder = c(1, 1)将 GARCH 项和 ARCH 项的阶数都设定为 1。mean.model中的armaOrder = c(1, 1)意味着均值模型包含一阶自回归和一阶移动平均项 。 * uspec通过multispec函数和replicate函数,将单变量 GARCH 模型规范xspec复制 4 份,以适配多元模型。 * spec1使用dccspec定义了一个普通的动态条件相关(DCC)模型,dccOrder = c(1, 1)指定 DCC 模型的阶数,distribution =’mvnorm’表示假设数据服从多元正态分布。 * spec1a同样使用dccspec,不过定义的是一个非对称动态条件相关(aDCC)模型,其他设置与spec1相同。 完成模型规范定义后,即可使用这些规范和处理好的数据进行模型拟合,代码如下:

cl = makePSOCKcluster(2)
multf = multifit(uspec, Dat, cluster = cl)
fit1 = dccfit(spec1, data = Dat, fit.control = list(eval.se = TRUE), fit = multf, cluster = cl)
fit_adcc = dccfit(spec1a, data = Dat, fit.control = list(eval.se = TRUE), fit = multf, cluster = cl)
stopCluster(cl)
print(fit1)           
## 
## *---------------------------------*
## *          DCC GARCH Fit          *
## *---------------------------------*
## 
## Distribution         :  mvnorm
## Model                :  DCC(1,1)
## No. Parameters       :  32
## [VAR GARCH DCC UncQ] : [0+24+2+6]
## No. Series           :  4
## No. Obs.             :  118
## Log-Likelihood       :  1534
## Av.Log-Likelihood    :  13 
## 
## Optimal Parameters
## -----------------------------------
##                       Estimate  Std. Error
## [GDAXI.Close].mu      0.002194    0.001137
## [GDAXI.Close].ar1     0.197088    0.354794
## [GDAXI.Close].ma1    -0.068340    0.377016
## [GDAXI.Close].omega   0.000020    0.000012
## [GDAXI.Close].alpha1  0.360916    0.130517
## [GDAXI.Close].beta1   0.524267    0.152705
## [GSPC.Close].mu       0.000992    0.000903
## [GSPC.Close].ar1     -0.491311    0.500944
## [GSPC.Close].ma1      0.362061    0.716581
## [GSPC.Close].omega    0.000006    0.000108
## [GSPC.Close].alpha1   0.208162    0.334588
## [GSPC.Close].beta1    0.788124    0.446933
## [CRSOX.Close].mu      0.000206    0.000880
## [CRSOX.Close].ar1     0.292972    0.189983
## [CRSOX.Close].ma1    -0.149833    0.175832
## [CRSOX.Close].omega   0.000000    0.000001
## [CRSOX.Close].alpha1  0.000000    0.005107
## [CRSOX.Close].beta1   0.999000    0.004858
## [EEM.Close].mu        0.001754    0.000625
## [EEM.Close].ar1       0.732610    0.129026
## [EEM.Close].ma1      -0.903833    0.040540
## [EEM.Close].omega     0.000028    0.000015
## [EEM.Close].alpha1    0.356457    0.211869
## [EEM.Close].beta1     0.472421    0.099939
## [Joint]dcca1          0.053915    0.035782
## [Joint]dccb1          0.237058    0.183194
##                         t value Pr(>|t|)
## [GDAXI.Close].mu       1.929910 0.053618
## [GDAXI.Close].ar1      0.555500 0.578553
## [GDAXI.Close].ma1     -0.181267 0.856158
## [GDAXI.Close].omega    1.636180 0.101802
## [GDAXI.Close].alpha1   2.765277 0.005687
## [GDAXI.Close].beta1    3.433208 0.000596
## [GSPC.Close].mu        1.098412 0.272025
## [GSPC.Close].ar1      -0.980771 0.326706
## [GSPC.Close].ma1       0.505262 0.613375
## [GSPC.Close].omega     0.051674 0.958789
## [GSPC.Close].alpha1    0.622144 0.533847
## [GSPC.Close].beta1     1.763407 0.077832
## [CRSOX.Close].mu       0.234004 0.814982
## [CRSOX.Close].ar1      1.542099 0.123050
## [CRSOX.Close].ma1     -0.852139 0.394137
## [CRSOX.Close].omega    0.409955 0.681839
## [CRSOX.Close].alpha1   0.000000 1.000000
## [CRSOX.Close].beta1  205.630830 0.000000
## [EEM.Close].mu         2.805649 0.005022
## [EEM.Close].ar1        5.678017 0.000000
## [EEM.Close].ma1      -22.295000 0.000000
## [EEM.Close].omega      1.830470 0.067180
## [EEM.Close].alpha1     1.682440 0.092484
## [EEM.Close].beta1      4.727114 0.000002
## [Joint]dcca1           1.506778 0.131868
## [Joint]dccb1           1.294026 0.195656
## 
## Information Criteria
## ---------------------
##                     
## Akaike       -25.451
## Bayes        -24.699
## Shibata      -25.560
## Hannan-Quinn -25.146
## 
## 
## Elapsed time : 3.391
print(fit_adcc)
## 
## *---------------------------------*
## *          DCC GARCH Fit          *
## *---------------------------------*
## 
## Distribution         :  mvnorm
## Model                :  aDCC(1,1)
## No. Parameters       :  33
## [VAR GARCH DCC UncQ] : [0+24+3+6]
## No. Series           :  4
## No. Obs.             :  118
## Log-Likelihood       :  1534
## Av.Log-Likelihood    :  13 
## 
## Optimal Parameters
## -----------------------------------
##                       Estimate  Std. Error
## [GDAXI.Close].mu      0.002194    0.001140
## [GDAXI.Close].ar1     0.197088    0.357555
## [GDAXI.Close].ma1    -0.068340    0.378972
## [GDAXI.Close].omega   0.000020    0.000012
## [GDAXI.Close].alpha1  0.360916    0.133331
## [GDAXI.Close].beta1   0.524267    0.153806
## [GSPC.Close].mu       0.000992    0.000908
## [GSPC.Close].ar1     -0.491311    0.503578
## [GSPC.Close].ma1      0.362061    0.730503
## [GSPC.Close].omega    0.000006    0.000111
## [GSPC.Close].alpha1   0.208162    0.343471
## [GSPC.Close].beta1    0.788124    0.456457
## [CRSOX.Close].mu      0.000206    0.000886
## [CRSOX.Close].ar1     0.292972    0.188904
## [CRSOX.Close].ma1    -0.149833    0.180547
## [CRSOX.Close].omega   0.000000    0.000001
## [CRSOX.Close].alpha1  0.000000    0.005096
## [CRSOX.Close].beta1   0.999000    0.004822
## [EEM.Close].mu        0.001754    0.000625
## [EEM.Close].ar1       0.732610    0.127187
## [EEM.Close].ma1      -0.903833    0.040502
## [EEM.Close].omega     0.000028    0.000015
## [EEM.Close].alpha1    0.356457    0.204838
## [EEM.Close].beta1     0.472421    0.099646
## [Joint]dcca1          0.053915    0.016528
## [Joint]dccb1          0.237059    0.025993
## [Joint]dccg1          0.000000    0.030432
##                         t value Pr(>|t|)
## [GDAXI.Close].mu       1.925130 0.054213
## [GDAXI.Close].ar1      0.551210 0.581490
## [GDAXI.Close].ma1     -0.180331 0.856893
## [GDAXI.Close].omega    1.631862 0.102708
## [GDAXI.Close].alpha1   2.706907 0.006791
## [GDAXI.Close].beta1    3.408627 0.000653
## [GSPC.Close].mu        1.092653 0.274546
## [GSPC.Close].ar1      -0.975641 0.329242
## [GSPC.Close].ma1       0.495632 0.620154
## [GSPC.Close].omega     0.050358 0.959837
## [GSPC.Close].alpha1    0.606054 0.544479
## [GSPC.Close].beta1     1.726612 0.084237
## [CRSOX.Close].mu       0.232610 0.816064
## [CRSOX.Close].ar1      1.550905 0.120925
## [CRSOX.Close].ma1     -0.829884 0.406605
## [CRSOX.Close].omega    0.410848 0.681184
## [CRSOX.Close].alpha1   0.000000 1.000000
## [CRSOX.Close].beta1  207.192869 0.000000
## [EEM.Close].mu         2.807533 0.004992
## [EEM.Close].ar1        5.760084 0.000000
## [EEM.Close].ma1      -22.315713 0.000000
## [EEM.Close].omega      1.835009 0.066504
## [EEM.Close].alpha1     1.740188 0.081826
## [EEM.Close].beta1      4.740982 0.000002
## [Joint]dcca1           3.262050 0.001106
## [Joint]dccb1           9.120050 0.000000
## [Joint]dccg1           0.000000 1.000000
## 
## Information Criteria
## ---------------------
##                     
## Akaike       -25.434
## Bayes        -24.659
## Shibata      -25.549
## Hannan-Quinn -25.119
## 
## 
## Elapsed time : 1.197

模型拟合完成后,需要对模型进行诊断,以检查模型是否合适。诊断步骤如下:

# 提取 fit1 模型的标准化残差
std_residuals_fit1 <- residuals(fit1)
# 对 fit1 模型每个序列的标准化残差绘制自相关函数图
for (i in 1:ncol(std_residuals_fit1)) {
  acf(std_residuals_fit1[, i], main = paste("ACF of Standardized Residuals for Series", i))
}

# 提取 fit_adcc 模型的标准化残差
std_residuals_fit_adcc <- residuals(fit_adcc)
# 对 fit_adcc 模型每个序列的标准化残差绘制自相关函数图
for (i in 1:ncol(std_residuals_fit_adcc)) {
  acf(std_residuals_fit_adcc[, i], main = paste("ACF of Standardized Residuals for Series", i))
}