Just finished Kris Boudt's course, running into errors from non-convergence in rugarch
That's piqued my interest...here is my suggestion (which I have successfully tested) for a quick solution: 1. Use variance targeting: gjrSpec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),variance.model = list(model = "gjrGARCH", variance.targeting=TRUE),distribution.model = "sstd") 2. remove the NA leftover from the return calculation: na.omit(spyRets) Alexios
On 11/28/18 7:39 PM, Ilya Kipnis wrote:
image.png
Unfortunately, the gosolnp method does not work.
Tried implementing fit.control as best I understood it.
image.png
Also does not work.
On Wed, Nov 28, 2018 at 10:33 PM alexios galanos <alexios at 4dscape.com
<mailto:alexios at 4dscape.com>> wrote:
Try setting the solver in the resume command to "gosolnp".
It may also have helped to set fit.control(scale=1) in the ugarchroll,
but you can set this in resume as well.
Alexios
On 11/28/18 7:22 PM, Ilya Kipnis wrote:
> I just completed Kris Boudt's datacamp course on GARCH models, and
> thought I'd give it a spin in a more reasonable setting. I've run
into
> an error that the course didn't cover. I'm using a rolling window
of 504
> trading days to try to fit a GJR-GARCH with AR1 return
innovations and a
> skewed student t distribution and refitting the model every 22
days (so,
> basically every month) on SPY returns.
>
> In the course, it was possible to convert this output into a data
frame,
> with an as.data.frame command.
>
> Unfortunately, the course didn't cover what happened when over the
> course of ~300 model fits, there would be the occasional failure to
> converge, which throws the following error:
>
> image.png
>
> Here's my MRE:
>
> require(rugarch)
> require(quantmod)
>
> # get SPY data from Yahoo (also tried with Quandl, data isn't the
issue)
> getSymbols("SPY", from = '1990-01-01')
>
> spyRets <- Return.calculate(Ad(SPY))
>
> # GJR garch with AR1 innovations under a skewed student T
distribution
> for returns
> gjrSpec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),
>? ? ? ? ? ? ? ? ? ? ? ? variance.model = list(model = "gjrGARCH"),
>? ? ? ? ? ? ? ? ? ? ? ? distribution.model = "sstd")
>
> # Use rolling window of 504 days, refitting the model every 22
trading days
> t1 <- Sys.time()
> garchroll <- ugarchroll(gjrSpec, data = spyRets,
>? ? ? ? ? ? ? ? ? ? ? ? ? n.start = 504, refit.window = "moving",
> refit.every = 22)
> t2 <- Sys.time()
> print(t2-t1)
>
> # try to convert predictions to data frame, as in course -- error
thrown
> regarding non-converged estimation windows
> garchroll <- as.data.frame(garchroll)
>
> With a screenshot for better readability:
>
> image.png
> I also tried the resume command from the following post
> https://stat.ethz.ch/pipermail/r-sig-finance/2013q2/011720.html,
which
> did not solve my problem.
>
> I feel that this is a pretty straightforward application of the
rugarch
> package, and that there is most likely a solution that simply wasn't
> covered in the course. I'd be greatly appreciative if someone
could help
> me over this hill (albeit at the risk of revealing that I'm not
exactly
> an expert on GARCH models).
>
> Thank you so much.
>
> Sincerely,
>
> Ilya Kipnis (author of Quantstrat TradeR)
>
> _______________________________________________
> R-SIG-Finance at r-project.org <mailto: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.
>
_______________________________________________
R-SIG-Finance at r-project.org <mailto: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.