[R-SIG-Finance] Rugarch for EWMA/VaR

alexios ghalanos alexios at 4dscape.com
Thu May 3 22:48:22 CEST 2012


Thomas,

1. The problem with the iGARCH model (related to a bad default setting) 
was fixed some time ago in the r-forge version (will be available on 
CRAN when I next update it there...since it is frowned upon to update a 
CRAN package more than 12 times in a year, you should look to r-forge 
for the 'newest' version at any time).
You have 2 options:
1. Download the latest version from r-forge OR,
2. In ugarchfit set the option "fit.control=list(stationarity=FALSE)"

2. That's definitely a problem in the summary method. Will investigate 
when I get a moment.

3. The error with the ugarchfilter C function, related to the newest 
version of R, was also fixed in the r-forge release.

4. You can't roll when all the parameters are fixed. It does not even 
make sense! Roll implies that you are fitting, forecasting, re-fitting.
Since you have all parameters fixed then just use the filter method on 
the data you want to forecast 1-ahead, else use the forecast method with 
a spec object and out of sample specified.

-Alexios

On 03/05/2012 21:23, ThomasF wrote:
> Dear R-Users, dear Alexios,
>
> I am trying to use rugarch to forecast volatiliy and do VaR-backtests using
> the Exponentially weighted moving average.
> To achieve this I used the iGarch, set omega to 0 and either estimate or fix
> alpha1 and beta1. Example code is provided at the end of my post.
>
> Some issues came up which I'd be glad to solve with your help:
>
> 1) Whenever i try to fit alpha1 and beta1, I always get 0.5 as result. I
> tried this for different underlyings and time horizons. Any idea what the
> reason could be?
>
> 2) I also get an error (I translated the error message to english) after the
> ARCH LM Test output:
>
> ARCH LM Tests
> ------------------------------------
>               Statistic DoF P-Value
> ARCH Lag[2]      4.653   2 0.09765
> ARCH Lag[5]      7.991   5 0.15672
> ARCH Lag[10]    12.082  10 0.27959
> Error in names(ans) = c("10%", "5%", "1%") :
>    Attribut 'names' [3] must have same length as the vector [0]
>
> Is there something wrong with my code or the way i put the data into the
> model? The other part of the outputs seems legit.
>
> 3) when I tried to do the same calculations with fixed alpha i get the
> following error when i try to filter the model:
>
> 1: In doTryCatch(return(expr), name, parentenv, handler) :
>    passing an object of type 'NULL' to .C (arg 8) is deprecated
> 2: In doTryCatch(return(expr), name, parentenv, handler) :
>    passing an object of type 'NULL' to .C (arg 9) is deprecated
>
> The ugarchfilter output seems reasonable again.
>
> 4)  I am not able to generate a rolling forecast and VaR Output when i fixed
> alpha1. Could you please give me a hint on how to do this with filtered
> data?
>
> 5) Does any of those issues arise of the use of the data as "zoo" object?
>
>
> Thanks in advance for your effort to help me
>
> Sincerely
>
> Thomas
>
>
> -----------------Code----------
>
>
> ################
> ###Download Data&  Compute Returns
> ################
>
> library ("tseries")
>
> #adjusted close price of sp500
> sp500price=get.hist.quote(instrument="^gspc", start="2006-01-01",
> end="2011-12-31", quote="AdjClose")
>
> # returns
> sp500returns=diff(log(sp500price))
>
>
> library("rugarch")
>
>
>
> ##############
> ### Use iGarch for EWMA - fitted alpha and beta
> ##############
>
>
> ### Model spec
> spec1= ugarchspec (variance.model = list(model = "iGARCH", garchOrder = c(1,
> 1)), mean.model=list(armaOrder=c(0,0),include.mean=FALSE),
> distribution.model = "norm", fixed.pars = list(omega=0))
>
> ###Fit Model
> fit1= ugarchfit(spec=spec1, data=sp500returns, out.sample=0, solver="solnp",
> solver.control=list(trace=0))
> show(fit1)
>
> #### rolling forecast und VaR
> roll1=ugarchroll(spec=spec1, data=sp500returns, n.ahead=1,
> forecast.length=500, refit.every=25, refit.window="recursive",
> solver="solnp", solver.control=list(tol=1e-05, delta=1e-06, trace=0),
> calculate.VaR=TRUE, VaR.alpha=c(0.01, 0.05))
>
> report(roll1, type="VaR", n.ahead=1, VaR.alpha=0.01, conf.level=0.95)
> report(roll1, type="fpm")
> plot(roll1, which="all")
>
>
>
>
> ##############
> ### Use iGarch for EWMA - fixed alpha and beta with lambda=0.94
> ##############
>
>
> ### Model spec
> spec2= ugarchspec (variance.model = list(model = "iGARCH", garchOrder = c(1,
> 1)), mean.model=list(armaOrder=c(0,0),include.mean=FALSE),
> distribution.model = "norm",  fixed.pars = list(omega=0, alpha1=0.06))
>
> ###Fit Model???
>
> fit2= ugarchfit(spec=spec2, data=sp500returns, out.sample=0, solver="solnp",
> solver.control=list(trace=0))
> show(fit2)
>
> ### filter model
> filt2= ugarchfilter(spec=spec2, data=sp500returns)
> show(filt2)
>
> #### rolling forecast und VaR
>
> roll2=ugarchroll(spec=spec2, data=sp500returns, n.ahead=1,
> forecast.length=500,   calculate.VaR=TRUE, VaR.alpha=c(0.01, 0.05))
>
> report(roll2, type="VaR", n.ahead=1, VaR.alpha=0.01, conf.level=0.95)
>
> report(roll2, type="fpm")
> plot(roll2, which="all")
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Rugarch-for-EWMA-VaR-tp4607011.html
> Sent from the Rmetrics mailing list archive at Nabble.com.
>
> _______________________________________________
> 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