The more flexible prediction of the component model is evident. The distributional assumption does make a difference.

Method

Figure 1 shows variability between models, but let’s consider variability from a single model. Given a specific model, we get the parameter values for that model using the data. There is estimation error in those parameters. We get different predictions with different parameter values.

Variability is shown by doing: 200 series of the same length as the data were simulated with the estimated parameter values. So we know the true parameter values for those simulated series. Then the model is fit on each of the simulated series — the result is parameter values that are not the same as the true values. Finally predictions are produced from the real data using the newly estimated parameters.

In the plots below the prediction using the estimated parameters is in blue while the predictions using the parameters found from the simulated data are in gold.

Results

Figure 2 shows the prediction variability using 2000 returns and the component model with a t distribution. Figure 3 is for the component with normal model, Figure 4 the garch(1,1) with the t, and Figure 5 is for the garch(1,1) with the normal.

Figure 2: Volatility term structure variability for the component model with t distribution and 2000 returns.

Figure 3: Volatility term structure variability for the component model with normal distribution and 2000 returns.

Figure 4: Volatility term structure variability for the garch(1,1) with t distribution and 2000 returns.

Figure 5: Volatility term structure variability for the garch(1,1) with normal distribution and 2000 returns. Figures 6, 7 and 8 all use the component model with the t distribution, like Figure 2. The difference is the amount of data used.

Figure 6: Volatility term structure variability for the component model with t distribution and 5000 returns.

Figure 7: Volatility term structure variability for the component model with t distribution and 1000 returns.

Figure 8: Volatility term structure variability for the component model with t distribution and 500 returns. Figure 9 shows the standard deviation of the simulated predictions for the models using 2000 returns.

Figure 9: Standard deviation of simulated predictions with 2000 returns of component-t (blue), component-normal (green), garch(1,1)-t (gold) and garch(1,1)-normal (black). The normal distribution shows less variability than the t distribution. But the t distribution is probably giving us more accurate predictions. The root mean squared difference between the simulated predictions and the original prediction gives a pattern very similar to that of the standard deviation.

Figure 10 shows the standard deviation for the component model with the t distribution for the four different lengths of data.

Figure 10: Standard deviation of simulated predictions of component-t model with 500 returns (gold), 1000 returns (green), 2000 returns (blue) and 5000 returns (black). In Figure 10 we expect to see small sample size at the top and big sample size at the bottom. That is violated in that sample size 500 is below 1000. Perhaps this is a sign that our estimate of the variability of variability is very variable.

Questions

What are the weaknesses of this approach to variability?tap_a=5644-dce66f&tap_s=10907-287229"http://www.portfolioprobe.com/user-area/some-hints-for-the-r-beginner/">done in R. In particular the rugarch package was used.

specifying garch models

I find it hard to remember the form of the garch specification. Here is a little function that makes it easy to create specifications for the four models of interest here:

Technical note: If all of the parameters are fixed when fitting a garch model with ugarchfit, then the result is no longer the same type of object. I’d rather at least have a choice to get back the usual type. In this setting we are fixing all but the mean return. Whether or not that parameter is fixed will have negligible effect on the results.

plotting variability

Figure 2 was created like:

pp.plotVolTermSim(vts.ct.2000, xlab="Days after 2013 Mar 14")

where:

pp.plotVolTermSim

checking for bugs

Figure 10 produced a surprising result. It certainly could have been because of a mix-up in the objects — either the name of the object or the call that created it was not as intended. But the simulation objects are self-describing in that they have an attribute that shows the command that created them.

Doing the following command:

for(i in ls(pat="^vts")) {cat(i, "\n"); print(attr(get(i), "call"))}

showed that the objects were all created as intended. Hence the surprise lies elsewhere.