There exist volatility clusters in daily returns of shares: market volatility is high for certain period but low for others. In other words, small(large) changes tend to be followed by further small (large) changes, ie: conditional heteroskedasticity. Hence in this project, we use GARCH model to tackle this asymmetry in volatility
Sample ACF and PACF is significant different from 0 at certain lags suggest that the process has conditional heteroskedasticity
Green line is higher than normal distribution (red line). Hence, student t distribution (heavier tail) would be more suitable for model
s <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
variance.model = list(model = "sGARCH"),
distribution.model = 'sstd')
m <- ugarchfit(data = return, spec = s)
s <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = 'sstd')
m <- ugarchfit(data = return, spec = s)
We chose model GJR-GARCH with lowest AIC and Information Criteria
sfinal<- s
#Merge parameter
setfixed(sfinal) <- as.list(coef(m))
f2020 <- ugarchforecast(data = return,
fitORspec = sfinal,
n.ahead = 252)
#Forecasting future variance
plot(sigma(f2020))
sim <- ugarchpath(spec = sfinal,
m.sim = 3,
n.sim = 1*252,
rseed = 123)
p <- 72.87*apply(fitted(sim), 2, 'cumsum') + 72.87
matplot(p, type = "l", lwd = 3)
Comments:
Price is non-stationary while return is stationary(ie:move around a constant mean over time). So we model growth in share price