[R-SIG-Finance] rugarch - estimation problem with an external regressor in the GARCH(1, 1) model

alexios ghalanos alexios at 4dscape.com
Fri Mar 1 14:22:40 CET 2013


Harald,

1. The data you are passing to the variance equation is negative, while 
the constraints on the regressor coefficients in the conditional 
variance equation default to a positive range (0,100). You can of course 
change the defaults with the "setbounds<-" method.
2. Whether you divide by 1000 or any other value, what you should 
compare are the likelihoods of the solution. They should all be VERY 
close, but it is likely that they are NOT the same since scaling of the 
parameters+bounds does not use any sophisticated algorithm. To avoid 
scaling problems and having to make adjustments to default solver 
parameters, you really should try to pass values in the external 
regressor which are close in scale to the variance equation.
3. Try using the eGARCH model when using external regressors in the 
variance equation since it guarantees positivity.

e.g.
######################################################################
gspec.ru <- ugarchspec(variance.model=list(model="eGARCH", 
garchOrder=c(1,1), external.regressors=(RVARtmp1/100)^2),
mean.model=list(arfima=FALSE, armaOrder=c(0,0), include.mean=TRUE), 
distribution="std")
gfit <- ugarchfit(gspec.ru, RDAXtmp, solver="nlminb")
######################################################################
likelihood(gfit) = 6034


Compare that with the likelihood of a non-RV enhanced model=5818 (info 
criteria/LR Test will show that difference is significant).

-Alexios

On 01/03/2013 12:35, Harald Weiss wrote:
> Hi R-users,
> I'm estimating an extended GACH(1,1) model (solver is "nlminb") where
> realized volatility is added to the variance equation as an explanatory
> variable. Since the estimated coefficient of realized volatility was
> very small, I divided it by 1,000, 10,000, and so on. While realized
> volatility was still significant when I divided it by 1,000, the
> variable gets insignificant if I divide by 100,000. Using the solver
> "nloptr" I receive similar results. To my knowledge this should
> (normally) not happen. If I use the solver "solnp" realized volatility
> is not significant. However, many studies found that realized volatility
> is significant when added to the variance equation. My question is how
> can I explain this result. Is this due to an instability of the
> algorithm or perhaps the accuracy of the calculation in R?
> Than you very much for helping me,
> Harald
>
> My code is:
>
> library(rugarch)
> rm(list=ls())
>
> DATA <- read.table("20130121_rdax-Lrvar_1month.csv",header=FALSE,sep=";")
> RDAX <- DATA[2:2035,1]
> RVAR <- DATA[2:2035,4]
> D <- matrix(RDAX)
> B <- matrix(RVAR)
> RDAXtmp <- D[1:2034,1]
> RVARtmp1 <- matrix(B[1:2034,1])
>
> #1. model estimation based on original data
> gspec.ru <- ugarchspec(variance.model=list(model="sGARCH",
> garchOrder=c(1,1), external.regressors=RVARtmp1),
> mean.model=list(arfima=FALSE, armaOrder=c(0,0), include.mean=TRUE),
> distribution="ged")
> gfit <- ugarchfit(gspec.ru, RDAXtmp, solver="nlminb", fit.control =
> list(stationarity = 1))
>
> #2. model estimation based on adjusted volatility
> RVARtmp2 <- RVARtmp1/1000
> gspec.ru2 <- ugarchspec(variance.model=list(model="sGARCH",
> garchOrder=c(1,1), external.regressors=RVARtmp2),
> mean.model=list(arfima=FALSE, armaOrder=c(0,0), include.mean=TRUE),
> distribution="ged")
> gfit2 <- ugarchfit(gspec.ru2, RDAXtmp, solver="nlminb", fit.control =
> list(stationarity = 1))
>
> #3. model estimation based on adjusted volatility
> RVARtmp3 <- RVARtmp1/10000
> gspec.ru3 <- ugarchspec(variance.model=list(model="sGARCH",
> garchOrder=c(1,1), external.regressors=RVARtmp3),
> mean.model=list(arfima=FALSE, armaOrder=c(0,0), include.mean=TRUE),
> distribution="ged")
> gfit3 <- ugarchfit(gspec.ru3, RDAXtmp, solver="nlminb", fit.control =
> list(stationarity = 1))
>
>
> #4. model estimation based on adjusted volatility
> RVARtmp4 <- RVARtmp1/100000
> gspec.ru4 <- ugarchspec(variance.model=list(model="sGARCH",
> garchOrder=c(1,1), external.regressors=RVARtmp4),
> mean.model=list(arfima=FALSE, armaOrder=c(0,0), include.mean=TRUE),
> distribution="ged")
> gfit4 <- ugarchfit(gspec.ru4, RDAXtmp, solver="nlminb", fit.control =
> list(stationarity = 1))
>
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
>



More information about the R-SIG-Finance mailing list