gpt4 book ai didi

r - R 中的多元 GARCH(1,1)

转载 作者:行者123 更新时间:2023-12-04 18:04:11 25 4
gpt4 key购买 nike

我使用 R 来估计 4 个时间序列的 Multivariate GARCH(1,1) 模型。我用 rmgarch 包试过了。好像我用错了,但我不知道我的错误是什么。第一次使用。

library(quantmod)
library(fBasics)
library(rmgarch)
#load data, time series closing prices, 10 year sample
#DAX 30
getSymbols('^GDAXI', src='yahoo', return.class='ts',from="2005-01-01", to="2015-01-31")
GDAXI.DE=GDAXI[ , "GDAXI.Close"]
#S&P 500
getSymbols('^GSPC', src='yahoo', return.class='ts',from="2005-01-01", to="2015-01-31")
GSPC=GSPC[ , "GSPC.Close"]
#Credit Suisse Commodity Return Strat I
getSymbols('CRSOX', src='yahoo', return.class='ts',from="2005-01-01", to="2015-01-31")
CRSOX=CRSOX[ , "CRSOX.Close"]
#iShares MSCI Emerging Markets
getSymbols('EEM', src='yahoo', return.class='ts',from="2005-01-01", to="2015-01-31")
EEM=EEM[ , "EEM.Close"]
#calculating log returns of the time series
log_r1=diff(log(GDAXI.DE[39:2575]))
log_r2=diff(log(GSPC))
log_r3=diff(log(CRSOX))
log_r4=diff(log(EEM))
#return vector
r_t=cbind(log_r1, log_r2,log_r3, log_r4)
#specifying and fitting the model
model = multispec(replicate(4, ugarchspec(variance.model = c(1,1))))
model_order = mgarchspec(model, Order = c(1, 1), distribution ='mvnorm')
fit = mgarchfit(model_order, data = r_t, solver = 'solnp',fit.control = list(eval.se = TRUE))
print(fit.1)

最佳答案

您将在下面找到多元 DCC 和 ADCC Garch 模型的并行实现。目前尚不清楚您要实现的目标,但我假设您正在寻找每个变量之间的某种相关性。或者至少是不相关的波动性度量。我的代码基于可以在这里找到的代码:"Multivariate Garch implementation" .我强烈推荐阅读这篇文章。

像以前一样加载所有系列

library(rmgarch)
library(parallel)
library(quantmod)

确保数据长度相等并计算时间序列的对数返回
Dat<-data.frame(GDAXI.DE[-c(1:22)],GSPC,CRSOX,EEM)
Dat<-apply(Dat,2,function(x) Delt(x,k=1,type="log"))

指定您的单变量 garch 过程以及您的多变量模型。在这里,我包括了 vanilla DCC-GARCH 以及非对称 DCC-GARCH 模型规范
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')

在执行计算密集型模型时,我建议使用并行方法。幸运的是 rmgarch内置了这个功能。所以,让我们打开我们想要对其进行分析的集群数量
cl = makePSOCKcluster(4)
multf = multifit(uspec, Dat, cluster = cl)

我们现在终于可以拟合模型了
fit1 = dccfit(spec1, data = Dat, fit.control = list(eval.se = TRUE), fit = multf, cluster = cl)
fit_adcc = dccfit(spec1, data = Dat, fit.control = list(eval.se = TRUE), fit = multf, cluster = cl)
print(fit1)
print(fit_adcc)

请务必记住使用以下命令关闭集群
stopCluster(cl)

我希望这对您正在寻找的东西有所帮助!

关于r - R 中的多元 GARCH(1,1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35035857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com