GRO2 Stochastic growth model with irreversible investment

This is an implementation of the model in Christiano and Fisher (2000).

Model's structure

Response variable Consumption ($C$), Investment ($I$), Lagrange multiplier ($\mu$).

State variable Capital stock ($K$), Log of productivity ($Z$).

Shock Innovation to productivity ($\epsilon$).

Parameters Capital depreciation rate ($\delta$), Discount factor ($\beta$), Elasticity of intertemporal substitution ($\tau$), Capital share ($\alpha$), Scale parameter ($a$).

Equilibrium equations

$$C_{t}: C_{t}+I_{t}=a e^{Z_{t}}K_{t}^{\alpha},$$

$$I_{t}:I_{t}\ge 0 \quad \perp \quad C_{t}^{-\tau}+\mu_{t}\ge 0,$$

$$\mu_{t}: \mu_{t}+\beta\mathrm{E}_{t}\left[a \alpha e^{Z_{t+1}}K_{t+1}^{\alpha-1}C_{t+1}^{-\tau}-\mu_{t+1}\left(1-\delta\right)\right]=0.$$

Transition equations

$$K_{t}: K_{t}=\left(1-\delta\right)K_{t-1}+I_{t-1},$$

$$Z_{t}: Z_{t}=\rho Z_{t-1}+\epsilon_{t}.$$

Writing the model

The model is defined in a Yaml file: gro2.yaml.

Create the model object

Mean and standard deviation of the shocks

Mu                = 0;
sigma             = 0.04;
model = recsmodel('gro2.yaml',...
                  struct('Mu',Mu,'Sigma',sigma^2,'order',7));
Warning: Rank deficient, rank = 1, tol =  6.620989e+04. 
Deterministic steady state (different from first guess, max(|delta|)=4.52137)
 State variables:
		1	-6.186e-18	

 Response variables:
		0.2212	0.0196	-4.521	

 Expectations variables:
		4.759	

This command creates a MATLAB file, gro2model.m, containing the definition the model and all its Jacobians from the human readable file gro2.yaml.

Define approximation space

Degree of approximation

order         = 24;

Limits of the state space

smin          = [0.47*model.sss(1)  min(model.e)*3.5];
smax          = [1.72*model.sss(1)  max(model.e)*3.5];
[interp,s] = recsinterpinit(order,smin,smax);

Define options

options = struct('fgmethod','perturbation',...
                 'reesolver','mixed');

Find a first guess through first-order approximation around the steady state

[interp,x] = recsFirstGuess(interp,model,s,model.sss,model.xss,options);

Solve for rational expectations

interp = recsSolveREE(interp,model,s,x,options);
Successive approximation
  Major	 Minor	Residual
      0	     0	2.83E+00 (Input point)
      1	     1	1.55E+00
      2	     1	1.26E+00
      3	     1	1.07E+00
      4	     1	9.38E-01
      5	     1	8.32E-01
      6	     1	7.39E-01
      7	     1	6.52E-01
      8	     1	5.67E-01
      9	     1	4.84E-01
     10	     1	4.08E-01
Too many iterations
Newton-Krylov solver
  Major  Residual  Minor 1  Relative res.  Minor 2
      0  4.08E-01        0       1.00E+00        0 (Input point)
      1  2.00E-01        1       4.91E-01        0
      2  5.21E-02        1       2.60E-01        0
      3  1.61E-02        2       3.09E-01        0
      4  1.97E-03        3       1.22E-01        0
      5  1.74E-05       11       8.87E-03        0
      6  3.85E-09       10       2.21E-04        0

Simulate the model

[~,~,~,stat] = recsSimul(model,interp,model.sss(ones(1000,1),:),200);
subplot(2,3,1)
xlabel('Capital stock')
ylabel('Frequency')
subplot(2,3,2)
xlabel('Log of productivity')
ylabel('Frequency')
subplot(2,3,3)
xlabel('Consumption')
ylabel('Frequency')
subplot(2,3,4)
xlabel('Investment')
ylabel('Frequency')
subplot(2,3,5)
xlabel('Lagrange multiplier')
ylabel('Frequency')
Statistics from simulated variables (excluding the first 20 observations):
 Moments
    Mean      Std. Dev. Skewness  Kurtosis  Min       Max       %LB       %UB
    1.0134    0.1225    0.4020    3.2457    0.6206    1.6243
   -0.0002    0.0911    0.0028    2.9985   -0.4094    0.4102

  Columns 1 through 7

    0.2229    0.0214    0.3176    3.1579    0.1449    0.3235         0
    0.0199    0.0114    0.4439    3.1577         0    0.0891    1.8689
   -4.5226    0.4300   -0.2348    3.0619   -6.6269   -3.0908         0

  Column 8

         0
         0
         0

 Correlation
    1.0000    0.6108    0.9532    0.1757    0.9501
    0.6108    1.0000    0.8187    0.8747    0.8060
    0.9532    0.8187    1.0000    0.4549    0.9893
    0.1757    0.8747    0.4549    1.0000    0.4348
    0.9501    0.8060    0.9893    0.4348    1.0000

 Autocorrelation
    1         2         3         4         5
    0.9922    0.9735    0.9462    0.9121    0.8728
    0.8772    0.7681    0.6724    0.5867    0.5113

    0.9746    0.9424    0.9048    0.8632    0.8187
    0.8199    0.6671    0.5386    0.4285    0.3359
    0.9778    0.9480    0.9123    0.8721    0.8286

References

Christiano, L.J. and Fisher, J.D.M. (2000). Algorithms for solving dynamic models with occasionally binding constraints. Journal of Economic Dynamics and Control, 24(8), 1179-1232.