Conditional forecasts using VAR

Questions and discussions on Vector Autoregressions
holyw160
Posts: 10
Joined: Thu Nov 09, 2006 3:07 am

Conditional forecasts using VAR

Unread post by holyw160 »

Hello,
I was trying to compute conditional forecasts using a VAR model (p.241). The RATS (v.8) User Guide example 7.6 contains an example of conditional forecasting with a VAR model (see below). This example assumes a 5% annual growth rate in GDP. It is
compute fstart=2007:1,fend=2009:4
@condition(model=canmodel,steps=12,results=condfore) 2
# logusagdp 2007:4 logusagdp(2006:4)+.05
# logusagdp 2008:4 logusagdp(2006:4)+.10
forecast(model=canmodel,results=forecasts,from=fstart,to=fend)
do i=1,6
compute [label] l=%modellabel(canmodel,i)
graph(header="Forecasts of "+l,window=l,$
key=below,klabels=||"Unconditional","Conditional"||) 2
# forecasts(i)
# condfore(i)
end do i
As can be seen the variables are in log format so the 5% growth rate is added in. I was trying to compute conditional forecasts from a 3-variable VAR model of the impairment rate (non-performing loans divided by total loans for a portfolio of loans). Apart from growth in the impairment rate, the two other variables are growth in the rate of unemployment and the growth rate of the equity market. Using 2015 and 2016 forecasts for growth in the rate of unemployment of -11% and -10%, and equity market growth of 6% and 7%, respectively, I tried to modify the RATS example above. The difference in your example is that the variables are expressed in log levels (e.g., logusagdp, etc.). All 3 variables in my model, however, are growth rates. I tried to follow the logic you used but when I ran the code, I got the following error message.

"Constraints Must Use One of the Endogenous Variables Please Check Constraint Number 1"
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Conditional forecasts using VAR

Unread post by TomDoan »

That's your model:

system(model=model_g)
variables DL_NPLCGS D_UR DL_ISEQ
lags 1 to lags
det constant
end(system)

These are your conditions:

@condition(model=model_g,steps=8,results=condfore) 4
# ln_iseq 2015:4 ln_iseq(2014:4)+.06
# ln_iseq 2016:4 ln_iseq(2015:4)+.13
# ur 2015:4 ur(2014:4)*(0.89)
# ur 2016:4 ur(2014:4)*(0.89)*(0.9)

You wrote the model in terms of the differences, but the constraints in terms of the levels. Since there's no simple way to convert the constraints to be in terms of the differences, you want to change the model so it's in terms of levels. That can be done with:

system(model=model_gd)
variables LN_NPLCGS UR LN_ISEQ
lags 1 to lags-1
det constant
ect
end(system)

Note that when you model this with an empty error correction, you need to take one off the lags.
holyw160
Posts: 10
Joined: Thu Nov 09, 2006 3:07 am

Re: Conditional forecasts using VAR

Unread post by holyw160 »

Hi Tom,
Thank you for the suggestions. I have re-worked the model with the same variables (but using log levels as you suggest to facilitate conditional growth forecasts in the variables).
The conditional forecasts that I need to use (over the period 2015 to 2018) are for growth in the equity market (ISEQ) and the level of the unemployment rate (UR); these are as follows:
ISEQ: 6%(2015) 7%(2016) 6%(2017) 7%(2018)
UR: 10%(2015) 9%(2016) 8%(2017) 7%(2016)

Incorporating the conditional forecasts for the equity market are straightforward, but since we don't use logs for the unemployment rate I adopt the following approach using the @condition procedure:
# ur 2015:4 ur(2014:4)*(.10/.1125)
# ur 2016:4 ur(2014:4)*(.10/.1125)*(.09/.10)
# ur 2017:4 ur(2014:4)*(.10/.1125)*(.09/.10)*(.08/.09)
# ur 2018:4 ur(2014:4)*(.10/.1125)*(.09/.10)*(.08/.09)*(.07/.08)
In other words, (.101/.1125) is the ratio of UR forecast for 2015 to the outturn for UR in 2014. So for 2016, the cumulative change since end-2014 is captured by the product of (.10/.1125)*(.09/.10). Similarly for 2017 and 2018.

When I run the revised code, it appears to be working but some of the output looks odd. For example:
(1) Under the section "Graph of Unconditional & Conditional Forecasts of Variables", the forecast for the log level of the equity market index almost looks to have a seasonal pattern;
(2) Under the section "Transforming the growth in the NPL ratio into average (annualised) growth rates from FSTART-1", produces output that is not intuitive. It is more intuitive if one doesn't annualise (i.e. scale up by 400).

I would appreciate any insights that you might be able to offer. Please see code and data attached.

Thanks once again.
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Conditional forecasts using VAR

Unread post by TomDoan »

You have a very short data set with very unstable data. The forecasts of the ISEQ and NPLCGS series are trying to drive back to the "mean" over the sample, but the mean is quite different from the last observed value. As a result, the conditional forecasts of ISEQ are pushing up towards the unconditional forecasts for the first few periods in a year, then dive back down by quarter 4 to hit your constraint. The NPLCGS series is near zero for the first two years of the data set---convert it into logs and you have huge gaps between the value there and the value through the rest of the sample. The average of the log series is very different from the final values, so the move towards the average is extremely large on a percentage basis.
Post Reply