2
$\begingroup$

I have daily returns data and I predict the variance for the next day using GARCH(1,1) as follows

model = arch_model(df['return'], p = 1, q = 1, mean = 'constant', vol = 'GARCH', dist = 'normal')
model_fit = garch_model.fit(disp='off')
variance_prediction = model_fit.forecast(horizon = 1).variance[-1:]

How then do I get the uncertainty on this prediction? The parameters of GARCH (mu, omega, alpha, beta) have uncertainties, is it simply a case of combining these?

$\endgroup$
3
  • $\begingroup$ You can start by computing the standard deviation of the residuals . $\endgroup$
    – phdstudent
    Nov 2, 2023 at 17:58
  • $\begingroup$ @phdstudent and then what? $\endgroup$ Nov 3, 2023 at 7:43
  • $\begingroup$ Should have been more clear. I have added an answer below. $\endgroup$
    – phdstudent
    Nov 3, 2023 at 15:44

1 Answer 1

0
$\begingroup$

"Uncertainty of the prediction" is a very vague term. You can check the "accuracy of the prediction" or the "uncertainty of the parameter estimates".

I am assuming that what you actually want is the "accuracy of the prediction".

One way to get the accuracy of a GARCH(1,1) model is to use the methodology of Hansen and Lunde (2005). In this paper they actually compared the accuracy of 330 Arch-type models and concluded that GARCH(1,1) was superior in their sample.

The paper describes at great length the way to do it. But in a nutshell:

  1. Estimate the GARCH(1,1) in monthly data using a window from $[t_{start}, t_{end}$. Compute volatility forecast for month $t_{end+1}$.
  2. Compute realized volatility during month $t_{end+1}$ using daily data (e.g. sum of squared returns).
  3. Subtract your forecasted volatility from realized volatility and square it. Do this for several months and check the sum of squared residuals. I.e. compute the RMSE:

$$MSE = \frac{1}{n} \sum_{t=1}^n (\sigma_t^2 -\hat{\sigma_t}^2)^2$$

Where $\sigma_t$ is month $t$ volatility computed using daily data and $\hat{\sigma_t}$ is the forecasted value for month $t$ of volatility from your GARCH(1,1) model.

You can do this exercise using many frequencies. My example above is for monthly frequency. Just replace the appropriate definitions.

$\endgroup$
3
  • 1
    $\begingroup$ The OP is "predicting the variance" which I understand to be "estimating the variance". Uncertainty of an estimate is then a natural question, and some confidence intervals would be due. Another thing: GARCH is an acronym and therefore should be written in capital letters. Yet another thing: while volatility is a vague term, you mentioned sum of squared returns. Then I think $\sigma^2$ is a more natural notation than $\sigma$ that you are using. $\endgroup$ Nov 3, 2023 at 15:53
  • $\begingroup$ The above is the standard in the literature of checking the an out-of-sample estimate of variance. There is no such thing as confidence intervals in such an out-of-sample test. If in-sample, then yes. Just the standard deviations and t-statistics of the GARCH model itself would suffice. I am have updated the two things you mention above. They are both typos indeed. $\endgroup$
    – phdstudent
    Nov 3, 2023 at 16:07
  • $\begingroup$ Thank you. I am not sure what you mean by There is no such thing as confidence intervals in such an out-of-sample test, but I suppose it is possible (though I believe challenging) to come up with a confidence interval for an estimate of $\sigma_{t+1}$ from a GARCH(1,1) model. (If we ignored the estimation uncertainty of $\hat\sigma_t^2$ and $\hat\varepsilon_t^2$, that would be easy, but we cannot ignore it.) $\endgroup$ Nov 3, 2023 at 16:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.