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 ugarchspec and 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:

  1. Rescale the series simulations by dividing by 100?
  2. 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!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.