R中的多元Garch DCC-ROLL(RMGARCH)

时间:2019-12-18 12:48:06

标签: r statistics

我有一个5种仪器的csv文件,我想使用rmgarch估计协方差矩阵

csv文件的范围是2018年1月2日至2019年12月11日(482个变量)

当我运行以下代码时:

# Testing Multivariate Garch
library(readxl)
library(rmgarch)
library(rugarch)

# Series
returns <- read.csv('ret.csv')
rownames(returns) <- returns$X
returns$X <- NULL

ret_1 <- head(returns, -1)

# Specs
spec1 = ugarchspec(distribution = "std")
mspec = multispec(rep(c(spec1), times=ncol(returns)))
fitspec = dccspec(mspec, VAR=TRUE, lag=1, dccOrder=c(1,1),model="DCC", distribution="mvt")


# Fitting Model
garchdccfit = dccfit(fitspec, returns, fit.control=list(scale=TRUE)) 

# 1-Step ahead forecast object
forecast <- dccforecast(garchdccfit, n.ahead=1)

# 1-Step ahead covariance matrix
forecast_cov <- rcov(forecast)


# Rolling Forecast - For backtest purpose
roll_forecast <- dccroll(fitspec, returns, n.ahead=1, forecast.length = 1, 
                         refit.every = 1, refit.window = "recursive", 
                         fit.control=list(scale=TRUE),
                         save.fit = TRUE, save.wdir = "W:/Personal Folders/Thales Marques/GarchPython")

# Reading first RDS file
first_fit <- readRDS("dccroll_1.rds", refhook = NULL)

滚动预测

我了解到roll_forecast变量的行为类似于:

  • 在变量fitspec中使用dcc-garch规范
  • 使用返回数据(482个Obs。,共5个变量)
  • forecast.length = 1起,它将预测比我的样本领先一步
  • 将拟合模型输出另存为save.wdir中的rds文件

我运行rcov(roll_forecast)的输出是:

, , 2019-12-11

                PRE_2A        PRE_5A      IBOV_1st       BRL_1st       SPX_1st
PRE_2A    2.234106e-06  4.244793e-06  7.540792e-06 -5.853135e-06  1.864744e-06
PRE_5A    4.244793e-06  1.092654e-05  1.824539e-05 -1.535431e-05  4.155332e-06
IBOV_1st  7.540792e-06  1.824539e-05  1.075482e-04 -3.854478e-05  2.692275e-05
BRL_1st  -5.853135e-06 -1.535431e-05 -3.854478e-05  5.422331e-05 -1.032894e-05
SPX_1st   1.864744e-06  4.155332e-06  2.692275e-05 -1.032894e-05  4.212289e-05

拟合模型(存储为dccroll_1.rds)为:

*---------------------------------*
*          DCC GARCH Fit          *
*---------------------------------*

Distribution         :  mvt
Model                :  DCC(1,1)
No. Parameters       :  63
[VAR GARCH DCC UncQ] : [30+20+3+10]
No. Series           :  5
No. Obs.             :  481
Log-Likelihood       :  9616.71
Av.Log-Likelihood    :  19.99 

Optimal Parameters
-----------------------------------
                   Estimate  Std. Error  t value Pr(>|t|)
[PRE_2A].omega     0.000000          NA       NA       NA
[PRE_2A].alpha1    0.165964          NA       NA       NA
[PRE_2A].beta1     0.757918          NA       NA       NA
[PRE_2A].shape     5.292370          NA       NA       NA
[PRE_5A].omega     0.000001          NA       NA       NA
[PRE_5A].alpha1    0.140100          NA       NA       NA
[PRE_5A].beta1     0.827182          NA       NA       NA
[PRE_5A].shape     8.027201          NA       NA       NA
[IBOV_1st].omega   0.000010          NA       NA       NA
[IBOV_1st].alpha1  0.059325          NA       NA       NA
[IBOV_1st].beta1   0.881198          NA       NA       NA
[IBOV_1st].shape  10.244986          NA       NA       NA
[BRL_1st].omega    0.000001          NA       NA       NA
[BRL_1st].alpha1   0.026141          NA       NA       NA
[BRL_1st].beta1    0.954693          NA       NA       NA
[BRL_1st].shape    9.616442          NA       NA       NA
[SPX_1st].omega    0.000004          NA       NA       NA
[SPX_1st].alpha1   0.196621          NA       NA       NA
[SPX_1st].beta1    0.780560          NA       NA       NA
[SPX_1st].shape    4.486858          NA       NA       NA
[Joint]dcca1       0.009943          NA       NA       NA
[Joint]dccb1       0.969974          NA       NA       NA
[Joint]mshape      7.524895          NA       NA       NA

Information Criteria
---------------------

Akaike       -39.724
Bayes        -39.177
Shibata      -39.754
Hannan-Quinn -39.509


Elapsed time : 0.2523229 

1)这意味着dccroll仅寻找1:481的观测值,估计协方差矩阵并为482nd observation ('2019-12-11')进行预测?为什么这不会像Forecast_cov那样超出样本一步?

预测Cov-无滚动方法

Forecast_cov(不会滚动,只是预测前进了一步,将返回以下输出:

$`2019-12-11`
, , T+1

                PRE_2A        PRE_5A      IBOV_1st       BRL_1st       SPX_1st
PRE_2A    1.955756e-06  3.830893e-06  7.007353e-06 -5.465868e-06  1.558854e-06
PRE_5A    3.830893e-06  1.013570e-05  1.739417e-05 -1.463438e-05  3.690273e-06
IBOV_1st  7.007353e-06  1.739417e-05  1.023071e-04 -3.704365e-05  2.442711e-05
BRL_1st  -5.465868e-06 -1.463438e-05 -3.704365e-05  5.160562e-05 -9.766693e-06
SPX_1st   1.558854e-06  3.690273e-06  2.442711e-05 -9.766693e-06  3.667363e-05

2)由于输出为2019-12-11, T+1,,我相信这是2019-12-12的估计协方差矩阵,对吗?

最后的问题

3)如何确定最后一个用于估计协方差矩阵的变量? (对于递归方法,可以获取观察次数中的最后一个值,但这不能通过移动窗口来完成

4)有什么方法可以在dccforecast中获得dccroll的相同输出? dccforecast一直运行到2019-12-12dccroll一直运行到2019-12-11

如果我不清楚,请与我联系,以便我进一步解释。

谢谢

0 个答案:

没有答案