t-学生分布的DCC模型估计

时间:2019-08-22 12:51:20

标签: r forecasting

我正在分析和实现DCC模型(动态条件相关),用于系统的方差-协方差矩阵的一日预测计算,该系统大约包括: 30只股票。对于每个标题,我考虑了250个样本的对数日收益的历史序列。 特别是,我对使用t-Student分布对该模型进行仿真感兴趣。 在这方面,我使用的是“ rugarch”和“ rmgarch”软件包。 根据文献中的示例,我通过以下方式进行分析:

1)通过将t型学生分布的自由度数作为输入(参数mshape)的每只股票的单变量garch模型的规格

2)单变量garch模型的多重拟合

3)具有多元t型学生分布的DCC模型规范(在这种情况下,不传递自由度作为输入)

4)拟合DCC模型

5)方差-协方差矩阵预测

我以我正在运行的代码为例(qxts是时间序列数据,mshape是自由度数):

# GARCH(1,1) specification
garch11.spec = ugarchspec(mean.model = list(armaOrder = c(0, 0)), variance.model = list(garchOrder = c(1, 1), model = "sGARCH"), distribution.model = "std", fixed.pars = list(shape = mshape))
# replicate Garch(1,1) spec for both time series
uspec = multispec(replicate(ncol(qxts), garch11.spec))
# Fit Garch models: hybrid -> in case of non convergence, all solvers are used 
multf = multifit(uspec, qxts, solver = "hybrid", fit.control = list(scale = 1))
# Dcc model spec
dcc.garch11.spec = dccspec(uspec = uspec, dccOrder = c(1, 1), distribution = "mvt", model = "DCC")
# Fitting parameters of DCC
dcc.fit = dccfit(dcc.garch11.spec, qxts, fit = multf, fit.control = list(scale = TRUE))
# dcc.fit = dccfit(dcc.garch11.spec, qxts, fit = multf, fit.control = list(scale = 1))
# Forecast 
dcc.fcst = dccforecast(dcc.fit, n.ahead = 1)
varmat = rcov(dcc.fcst)[[dt_cov]][,, 1]

但是,使用2.5的自由度时,出现以下错误:

solve.default(A)中的错误:系统在计算上是单数的:倒数条件数= 1.19994e-18

例如,如果我将自由度从2.5更改为2.6,则错误不再出现。 我想知道是否存在一种方法,即使使用等于2.5的自由度也可以执行计算,因为我在文献中找不到解决此问题的参考。

我也尝试了以下想法。 我没有传递自由度数作为输入,但是我确保对于每个标题,自由度数是由函数multifit在内部计算的。 显然,根据所考虑的股票,我得到不同的自由度。 但是,在这种情况下,将多重拟合的计算参数传递给dcc函数会导致以下错误: “数据”必须是向量类型,为“ NULL” 即使我作为输入传递的数据样本不包含空值。

我想知道这些问题是否仅是由于作为输入传递的数据的数值造成的,还是我在方法的实现上在概念上是错误的?

0 个答案:

没有答案