Main Content

Assess EGARCH Forecast Bias Using Simulations

This example shows how to simulate an EGARCH process. Simulation-based forecasts are compared to minimum mean square error (MMSE) forecasts, showing the bias in MMSE forecasting of EGARCH processes.

Specify an EGARCH model.

Specify an EGARCH(1,1) process with constant κ=0.01, GARCH coefficient γ1=0.7, ARCH coefficient α1=0.3 and leverage coefficient ξ1=-0.1.

Mdl = egarch('Constant',0.01,'GARCH',0.7,...
    'ARCH',0.3,'Leverage',-0.1)
Mdl = 
  egarch with properties:

     Description: "EGARCH(1,1) Conditional Variance Model (Gaussian Distribution)"
      SeriesName: "Y"
    Distribution: Name = "Gaussian"
               P: 1
               Q: 1
        Constant: 0.01
           GARCH: {0.7} at lag [1]
            ARCH: {0.3} at lag [1]
        Leverage: {-0.1} at lag [1]
          Offset: 0

Simulate one realization.

Simulate one realization of length 50 from the EGARCH conditional variance process and corresponding innovations.

rng default; % For reproducibility

[v,y] = simulate(Mdl,50);

figure
subplot(2,1,1)
plot(v)
xlim([0,50])
title('Conditional Variance Process')

subplot(2,1,2)
plot(y)
xlim([0,50])
title('Innovations')

Figure contains 2 axes objects. Axes object 1 with title Conditional Variance Process contains an object of type line. Axes object 2 with title Innovations contains an object of type line.

Simulate multiple realizations.

Using the generated conditional variances and innovations as presample data, simulate 5000 realizations of the EGARCH process for 50 future time steps. Plot the simulation mean of the forecasted conditional variance process.

rng default; % For reproducibility
[Vsim,Ysim] = simulate(Mdl,50,'NumPaths',5000,...
                       'E0',y,'V0',v);

figure
plot(v,'k')
hold on
plot(51:100,Vsim,'Color',[.85,.85,.85])
xlim([0,100])
h = plot(51:100,mean(Vsim,2),'k--','LineWidth',2);
title('Simulated Conditional Variance Process')
legend(h,'Simulation Mean','Location','NorthWest')
hold off

Figure contains an axes object. The axes object with title Simulated Conditional Variance Process contains 5002 objects of type line. This object represents Simulation Mean.

Compare simulated and MMSE conditional variance forecasts.

Compare the simulation mean variance, the MMSE variance forecast, and the exponentiated, theoretical unconditional log variance.

The exponentiated, theoretical unconditional log variance for the specified EGARCH(1,1) model is

σε2=exp{κ(1-γ1)}=exp{0.01(1-0.7)}=1.0339.

sim = mean(Vsim,2);
fcast = forecast(Mdl,50,y,'V0',v);
sig2 = exp(0.01/(1-0.7));

figure
plot(sim,':','LineWidth',2)
hold on
plot(fcast,'r','LineWidth',2)
plot(ones(50,1)*sig2,'k--','LineWidth',1.5)
legend('Simulated','MMSE','Theoretical')
title('Unconditional Variance Comparisons')
hold off

Figure contains an axes object. The axes object with title Unconditional Variance Comparisons contains 3 objects of type line. These objects represent Simulated, MMSE, Theoretical.

The MMSE and exponentiated, theoretical log variance are biased relative to the unconditional variance (by about 4%) because by Jensen's inequality,

E(σt2)exp{E(logσt2)}.

Compare simulated and MMSE log conditional variance forecasts.

Compare the simulation mean log variance, the log MMSE variance forecast, and the theoretical, unconditional log variance.

logsim = mean(log(Vsim),2);
logsig2 = 0.01/(1-0.7);

figure
plot(logsim,':','LineWidth',2)
hold on
plot(log(fcast),'r','LineWidth',2)
plot(ones(50,1)*logsig2,'k--','LineWidth',1.5)
legend('Simulated','MMSE','Theoretical')
title('Unconditional Log Variance Comparisons')
hold off

Figure contains an axes object. The axes object with title Unconditional Log Variance Comparisons contains 3 objects of type line. These objects represent Simulated, MMSE, Theoretical.

The MMSE forecast of the unconditional log variance is unbiased.

See Also

Objects

Functions

Related Examples

More About