I am using
rugarch package in R to forecast returns and volatility of a stock. I train an
ARIMA (p ,d q) + GARCH(s, r) model on the log-returns using
ugarchfit functions. As a part of literature, I understood that the optimizer performs better with scaled values of log-returns. With this, the model gets trained on the log-returns multiplied by
100 as the scaling factor.
Post which, for the forecast across a horizon, I use the
ugarchsim function as:
model.forecast = ugarchsim(model.garch.fit, n.sim=horizon, m.sim=simulations, startMethod="sample")
Now, I can obtain the simulations using:
volatilitySimulations = model.forecast@simulation$sigmaSim seriesSimulations = model.forecast@simulation$seriesSim
As per my understanding, because we scaled the returns earlier, should we:
- Rescale the series simulations by dividing by 100?
- Rescale the volatility simulations by dividing by 100, i.e., sqrt(10000)? My assumption is, this would be required as the variance is proportional to residual^2 and (historical volatility)^2 in GARCH models and volatility is equal to sqrt(variance) - so, volatility is proportional to 100. Please correct me if I am wrong.
I have a mathematical understanding of why we need this. But, I want clarify if I am not making any mistakes in above calculations!