GRO3 Stochastic growth model with recursive preferences and stochastic volatility (SV)
This model is similar to Caldara et al. (2012).
Contents
- Model's structure
- Writing the model
- Create the model object
- Define approximation space using Chebyshev polynomials
- Find a first guess through first-order approximation around the steady state
- Define options
- Solve for rational expectations
- Use simple continuation method to solve for higher values of risk aversion
- Simulate the model
- References
Model's structure
Response variable Consumption (), Labor (
), Marginal utility with respect to consumption (
), Instantaneous utility (
), Production (
), Utility (
).
State variable Capital stock (), Log of productivity (
), Log of productivity volatility (
).
Shock Innovation to productivity (), Innovation to productivity volatility (
).
Parameters Capital depreciation rate (), Discount factor (
), Index of deviation from CRRA utility (
), Risk-aversion parameter (
), Capital share (
), Share of consumption in utility (
), Persistence of log-productivity (
), Persistence of SV (
), Unconditional mean of SV (
), Standard deviation of SV (
).
Equilibrium equation
Transition equations
Writing the model
The model is defined in a Yaml file: gro3.yaml.
Create the model object
model = recsmodel('gro3.yaml',struct('Mu',[0 0],'Sigma',eye(2),'order',5));
Deterministic steady state (different from first guess, max(|delta|)=0.74174) State variables: K Z Sigma ______ ___________ _______ 9.3926 -2.3527e-18 -4.9618 Response variables: C L Uc U Y V Vt _______ _______ _______ _______ _______ _______ _______ 0.71389 0.32835 0.20716 0.82851 0.89799 0.68644 0.82851 Expectations variables: EC EVt _______ _______ 0.20904 0.82851
Define approximation space using Chebyshev polynomials
smin = [0.85*model.sss(1) -0.11 log(0.007)*1.15]; smax = [1.20*model.sss(1) 0.11 log(0.007)*0.85];
[interp,s] = recsinterpinit(4,smin,smax,'cheb');
Find a first guess through first-order approximation around the steady state
[interp,x] = recsFirstGuess(interp,model,s);
Define options
options = struct('reemethod','1-step',... 'accuracy' ,1,... 'stat' ,1);
Solve for rational expectations
[interp,x,z] = recsSolveREE(interp,model,s,x,options);
Use simple continuation method to solve for higher values of risk aversion
The procedure to solve for different parameters values has to be packed in a function. This is done in gro3problem.m.
type('gro3problem.m')
function [X,f,exitflag] = gro3problem(X,z) % GRO3PROBLEM Solves the model GRO3 for different values of risk aversion and IES [model,interp,s,x,options] = X{:}; tau = z(1); Psi = z(2); nu = (1-tau)/(1-1/Psi); model.params(1) = tau; model.params(end-1:end) = [nu Psi]; [interp,x,~,f,exitflag] = recsSolveREE(interp,model,s,x,options); X = {model interp s x options};
This function requires as input the cell array X:
X = {model interp s x options};
The function SCP starts from the known solution with a low risk aversion to find in 2 steps the solution with an higher risk aversion:
X = SCP(X,[5 0.5],[0.5 1/0.5],@gro3problem,2); [model,interp,s,x,options] = X{:};
Simulate the model
recsSimul(model,interp,model.sss(ones(100,1),:),200,[],options); subplot(3,4,1) xlabel('Capital stock') ylabel('Frequency') subplot(3,4,2) xlabel('Log of productivity') ylabel('Frequency') subplot(3,4,3) xlabel('Log of productivity volatility') ylabel('Frequency') subplot(3,4,4) xlabel('Consumption') ylabel('Frequency') subplot(3,4,5) xlabel('Labor') ylabel('Frequency') subplot(3,4,6) xlabel('Marginal utility wrt consumption') ylabel('Frequency') subplot(3,4,7) xlabel('Instantaneous utility') ylabel('Frequency') subplot(3,4,8) xlabel('Production') ylabel('Frequency') subplot(3,4,9) xlabel('Intertemporal utility') ylabel('Frequency') subplot(3,4,10) xlabel('') ylabel('Frequency')
Statistics from simulated variables (excluding the first 20 observations): Moments Mean StdDev Skewness Kurtosis Min Max pLB pUB __________ _________ _________ ________ _________ ________ ___ ___ K 9.3726 0.3448 0.049759 3.1699 8.3612 10.667 NaN NaN Z -0.0010056 0.022278 -0.12717 3.0141 -0.082602 0.072685 NaN NaN Sigma -4.9589 0.13472 -0.079306 2.9814 -5.5057 -4.4161 NaN NaN C 0.71284 0.017722 -0.020588 3.0338 0.65859 0.77676 0 0 L 0.32833 0.0035491 -0.086214 3.1091 0.3127 0.34121 0 0 Uc -0.73063 0.02345 -0.19052 3.0803 -0.80705 -0.65302 0 0 U 4.5172 0.13699 0.17868 3.1564 4.0595 4.959 0 0 Y 0.89685 0.032524 -0.01658 2.985 0.79054 1.0092 0 0 V 0.68632 0.0019234 -0.084775 3.0172 0.68021 0.69296 0 0 Vt 4.5073 0.050563 0.12709 3.0239 4.3367 4.6713 0 0 Correlation K Z Sigma C L Uc U Y V Vt ________ ________ _________ ________ _________ ________ _________ ________ ________ _________ K 1 0.62478 0.046136 0.93156 0.20961 0.95867 -0.99857 0.73116 0.90316 -0.90282 Z 0.62478 1 0.026014 0.86584 0.89427 0.81844 -0.61567 0.98918 0.89935 -0.89944 Sigma 0.046136 0.026014 1 0.041852 0.0065812 0.043077 -0.046003 0.032588 0.040492 -0.040309 C 0.93156 0.86584 0.041852 1 0.55058 0.99528 -0.92653 0.92909 0.99737 -0.99717 L 0.20961 0.89427 0.0065812 0.55058 1 0.47492 -0.19805 0.82003 0.60862 -0.60875 Uc 0.95867 0.81844 0.043077 0.99528 0.47492 1 -0.95661 0.89201 0.98696 -0.98715 U -0.99857 -0.61567 -0.046003 -0.92653 -0.19805 -0.95661 1 -0.72241 -0.89796 0.89806 Y 0.73116 0.98918 0.032588 0.92909 0.82003 0.89201 -0.72241 1 0.95285 -0.95267 V 0.90316 0.89935 0.040492 0.99737 0.60862 0.98696 -0.89796 0.95285 1 -0.99995 Vt -0.90282 -0.89944 -0.040309 -0.99717 -0.60875 -0.98715 0.89806 -0.95267 -0.99995 1 Autocorrelation T1 T2 T3 T4 T5 _______ _______ _______ _______ _______ K 0.99495 0.98532 0.97156 0.95413 0.93348 Z 0.92544 0.85546 0.78812 0.72396 0.66418 Sigma 0.87737 0.77009 0.67678 0.59627 0.52422 C 0.97313 0.94488 0.91479 0.88323 0.85085 L 0.90432 0.81569 0.73158 0.65263 0.58046 Uc 0.98183 0.96106 0.93766 0.91191 0.8844 U 0.99481 0.98507 0.97118 0.95365 0.93291 Y 0.93633 0.87596 0.81718 0.76052 0.70699 V 0.96592 0.9314 0.89576 0.85936 0.82292 Vt 0.96594 0.93144 0.89583 0.85946 0.82304 Accuracy of the solution Equilibrium equation error (in log10 units) Max Mean -5.3396 -5.6612 -5.4924 -5.9614 -4.7854 -5.0195 -3.5812 -3.7903 -5.0962 -5.4858 -6.8940 -7.1197 -5.3354 -5.5530
