This empirical study I am trying to replicate (ch5 Becker et al (2015) : Selecting Volatility Forecasting Models for Portfolio Allocation Purposes) has used 2500 in-sample-period's actual daily returns to calculate one-step-ahead DCC GARCH covariance matrix. I have been able to do this successfully after I estimated the DCC parameters on the basis of the 2500 sample returns. However, they have mentioned that subsequent volatility forecasts are then generated by rolling the sample period of 2500 observations forward one observation until the last forecast of volatility in t=4000 is obtained resulting in 1500 forecasts. They have also mentioned that the parameter of the volatility model is re-estimated every 25th observation. Now two things are confusing me:

1) why have they re-estimated the volatility forecasts every 25th observation? I am having trouble breaking this down in practical steps.

2) how have they calculated the rolling forecasts? I mean the DCC GARCH quasi correlation matrix depends on the previous period's quasi correlation matrix as well as the previous period's standardized error terms. To get the volatility forecast in t=2502, i have calculated the quasi correlation matrix in t=2501 but I am confused about the error terms to use. Should I be using the actual error terms in t=2501 or should I be using an alternate approach? Any insight would be much appreciated. Thanks!

PS I am using matlab for programming


1 Answer 1

  1. Ideally, they would have reestimated the model in every rolling window to mimic how a trader would do it in an optimal way. However, that would be computationally demanding, thus they compromise and reestimate the model only in every 25th rolling window (saving 25 times the computational time). That is, they estimate the model in the first window, then use it in windows 2 to 25 without reestimation, then reestimate the model in window 26 and use it until window 50 without reestimation, then reestimate again in window 51 and so on...

  2. In each window, pretend that you know nothing else but the current data and either the model estimated from this data (in windows 1, 26, 51, ...) or the model inherited from before (in windows 2 to 25, 27 to 50, 52 to 75, ...). You do not know the data preceding the current window nor the succeeding data. Then forecast from this model, reveal the succeeding data and validate the forecasts against it (thus validate against real data which was not used for estimating the model and/or producing the forecasts).

  • $\begingroup$ Thanks @Richard Hardy! I understand part 1) however when it comes to part 2) i am still a bit confused about how I am supposed to forecast for eg period 2's volatility with just the parameters and previous period's volatility but without the standardized error terms of period 1 (t=2501) considering I should pretend I know nothing but the current data and the estimated model. $\endgroup$
    – Hsk
    May 8, 2017 at 14:36
  • $\begingroup$ @Hsk, in period 1, you have the model (i.e. its coefficients) fitted on obs. 1 to 2500 and you have the fitted values for obs. 1 to 2500. Given the fitted values and the coefficients, the forecasting becomes straightforward: you plug in what is needed. E.g. if the $\varepsilon_t \varepsilon_t'$ matrix is needed, you plug in the fitted values $\hat\varepsilon_t$ into the formula. Actually, I suppose Matlab is intelligent enough to forecast it for you if you find the right command. Just tell Matlab to forecast one step ahead. It is slightly more cumbersome in periods 2 to 25, though. $\endgroup$ May 8, 2017 at 14:46
  • $\begingroup$ @Hsk, I think I misunderstood your request, so let me add something. When you have the estimated model, you can filter the data using that model to produce "fitted values", which you will then use for forecasting. I suppose there is a function for filtering with DCC in Matlab (there is one in R package "rmgarch" -- it is dccfilter; better yet, R allows to do exactly what you are doing with a single function dccroll -- see this). $\endgroup$ May 8, 2017 at 14:48
  • $\begingroup$ thanks a lot! Will try to find something similar for matlab $\endgroup$
    – Hsk
    May 8, 2017 at 17:10
  • $\begingroup$ Just one more clarification required @Richard Hardy, on window 26th, 51th, 76th and so on, should I re-estimate the parameters each time based on the previous 25 observations only? $\endgroup$
    – Hsk
    May 9, 2017 at 1:43

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.