[R-SIG-Finance] Error with presigma in rugarch package
Роман Хромотов
khromotovr @end|ng |rom gm@||@com
Fri Apr 19 12:51:39 CEST 2019
Hi,
I'm new here, so please excuse me for violation of local rules, if this
happens.
First, I've seen this problem here, it is more or less the same:
http://r.789695.n4.nabble.com/RUGARCH-bootstrap-fitting-error-presigma-length-td4634470.html <http://r.789695.n4.nabble.com/RUGARCH-bootstrap-fitting-error-presigma-length-td4634470.html>
However, I have the newest version (I suppose so) 1.4-1 of rugarch package,
and the error is still in place. I think, there is a problem with my code
then. So, any help would be appreciated greatly.
I'm trying to forecast some financial returns with so-called copula-garch
method. When I run the code woth ARMA(1,1) - it's ok, but with ARMA(2+, q)
it returns:
"Error in .sgarchpath2(spec = spec, n.sim = n.sim, n.start = n.start, m.sim
= m.sim, :
ugarchpath-->error: presigma must be of length 2"
Here is the simulation part of the code (originally taken from here with
minor changes of distribution model and a bit more:
http://www.unstarched.net/r-examples/rugarch/simulated-rolling-forecast-density/ <http://www.unstarched.net/r-examples/rugarch/simulated-rolling-forecast-density/>)
specm <- ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1),
submodel = NULL),
mean.model=list(armaOrder=c(2,1), include.mean=TRUE),
distribution.model = 'std')
fsim <- matrix(NA, ncol = 60, nrow = 5000)
# we will also create the closed form forecast
afor <- matrix(NA, ncol = 60, nrow = 2)
rownames(afor) <- c('Mu', 'Sigma')
colnames(afor) = colnames(fsim) = rep(paste('T+', 1:10, sep = ''), 6)
# T+1 we can use ugarchsim:
for (i in 0:5) {
fit <- ugarchfit(specm, returns[1:405, i+1])
specf <- ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1),
submodel = NULL),
mean.model=list(armaOrder=c(2,1), include.mean=TRUE),
distribution.model = 'std', fixed.pars = as.list(coef(fit)))
tmp <- ugarchsim(fit, n.start = 0, startMethod = 'sample', n.sim = 1,
m.sim = 5000, custom.dist = list(name = 'sample', distfit =
t(new_res[,i+1])))
fsim[, (1+10*i)] = as.numeric(fitted(tmp))
tmp <- ugarchforecast(fit, n.ahead = 1)
afor[, 1+10*i] <- c(fitted(tmp), sigma(tmp))
}
###
# for T+(i>1):
for (j in 0:5) {
fit <- ugarchfit(specm, returns[1:405, j+1])
specf <- ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1),
submodel = NULL),
mean.model=list(armaOrder=c(2,1), include.mean=TRUE),
distribution.model = 'std', fixed.pars = as.list(coef(fit)))
for (i in 2:10) {
filt <- ugarchfilter(specf, data = returns[1:(405 + i - 1), j+1], n.old
= 405)
path <- ugarchpath(specf, n.sim = 1, m.sim = 5000, presigma =
tail(sigma(filt),
1),
prereturns = returns[(405 + i - 1), j+1], preresiduals =
tail(residuals(filt),
1), custom.dist = list(name = 'sample', distfit = t(new_res[,j+1])))
fsim[, i+10*j] <- as.numeric(fitted(path))
tmp <- ugarchforecast(specf, returns[1:(405 + i - 1), j+1], n.ahead =
1)
afor[, i+10*j] <- c(fitted(tmp), sigma(tmp))
}
}
Hope, my point is clear! Thank you in advance!
[[alternative HTML version deleted]]
More information about the R-SIG-Finance
mailing list