STO6SP Quarterly storage model with informational subperiods and annual inelastic supply
This model represents the market of a storable commodity that is produced once a year and stored for a year-long consumption. Supply is stochastic and inelastic. Contrary to STO6, there are informational shocks about the coming harvest that allows stocks to be adjusted before the full harvest is known.
Contents
Writing the model
The model is defined in 4 Yaml files: sto6SP1.yaml, sto6SP2.yaml, sto6SP3.yaml, and sto6SP4.yaml.
Create the model object
model = recsmodelsp({'sto6SP1.yaml' 'sto6SP2.yaml' 'sto6SP3.yaml' 'sto6SP4.yaml'}); model.shocks = cell(model.nperiods,1); model.bounds = cell(model.nperiods,2); params = num2cell(model.params); [k, delta, r, elastD, d] = params{:};
Define approximation space and shocks
clear('interp') sigma = [0.05 eps eps eps]; n = {50; 50; [50 5]; [50 5]}; smin = {2.8; 2.05; [1.35 -0.15]; [0.67 -0.21]}; smax = {6 ; 5.1 ; [3.9 0.15]; [2.72 0.21]}; for iperiod=1:model.nperiods % Shocks [model.shocks{iperiod}.e,model.shocks{iperiod}.w] = qnwnorm(5,0,sigma(iperiod)^2); model.shocks{iperiod}.funrand = @(nrep) randn(nrep,1)*sigma(iperiod); end % Interpolation structure interp.fspace = cellfun(@(N,SMIN,SMAX) fundefn('spli',N,SMIN,SMAX),n,smin,smax,... 'UniformOutput', false); interp.Phi = cellfun(@(FSPACE) funbasx(FSPACE),interp.fspace,... 'UniformOutput', false); interp.s = cellfun(@(FSPACE) gridmake(funnode(FSPACE)),interp.fspace,... 'UniformOutput', false); [model.ss.sss,model.ss.xss,model.ss.zss] = recsSSSP(model,{4; 3; [2 0]; [1 0]},... {[3 1]; [2 1]; [1 1]; [0 1]}); [s1,s2,s3,s4] = interp.s{:};
Deterministic steady state (different from first guess, max(|delta|)=0.0961408) State variables: A1 A2 A3 E3Prod A4 E4Prod __ ______ ______ __________ _______ __________ 4 2.9815 1.9756 1.4452e-19 0.98181 2.8904e-19 Response variables: S1 P1 S2 P2 S3 P3 S4 P4 ______ _______ ______ ______ _______ ______ __________ ______ 2.9964 0.98214 1.9854 1.0197 0.98671 1.0577 1.3361e-18 1.0961 Expectations variables: 1.02 1.058 1.096 0.9821
Bounds
for iperiod=1:model.nperiods [LB,UB] = eval(['model.functions(iperiod).b(s' int2str(iperiod) '(1,:),params);']); model.bounds(iperiod,:) = {LB UB}; end
Provide a simple first guess
x4 = [zeros(size(s4,1),1) (s4(:,1)/d).^(1/elastD)]; x3 = [s3(:,1)/2 ((s3(:,1)/2)/d).^(1/elastD)]; x2 = [s2(:,1)*2/3 ((s2(:,1)/3)/d).^(1/elastD)]; x1 = [s1(:,1)*3/4 ((s1(:,1)/4)/d).^(1/elastD)];
Solve for rational expectations
[interp,X] = recsSolveREESP(model,interp,{x1; x2; x3; x4});
Successive approximation Iter Residual 1 1.65E+01 2 2.49E+00 3 9.37E-01 4 3.33E-01 5 1.06E-01 6 2.99E-02 7 8.06E-03 8 2.21E-03 9 6.19E-04 10 1.75E-04 11 4.95E-05 12 1.41E-05 13 3.99E-06 14 1.13E-06 15 0.00E+00 Solution found - Residual lower than absolute tolerance
Compare STO6 and STO6SP when informational shocks are removed
if exist('Xcat','var') disp('Max absolute error in first subperiod storage and price (in log10)'); disp(log10(max(abs(Xcat(:,[1 5])-X{1})))); end
Introduced information shocks
sigma = [0.05/sqrt(3) eps 0.05/sqrt(3) 0.05/sqrt(3)]; for iperiod=1:model.nperiods % Shocks [model.shocks{iperiod}.e,model.shocks{iperiod}.w] = qnwnorm(5,0,sigma(iperiod)^2); model.shocks{iperiod}.funrand = @(nrep) randn(nrep,1)*sigma(iperiod); end [interp,X] = recsSolveREESP(model,interp,X); [ssim,xsim,esim,stat,fsim] = recsSimulSP(model,interp,repmat(4,1000,1),200);
Successive approximation Iter Residual 1 4.74E-01 2 8.75E-02 3 3.68E-02 4 1.66E-02 5 6.33E-03 6 2.93E-03 7 1.30E-03 8 3.96E-04 9 9.84E-05 10 2.22E-05 11 4.79E-06 12 1.00E-06 13 0.00E+00 Solution found - Residual lower than absolute tolerance Statistics from simulated variables (excluding the first 20 observations): Moments Mean StdDev Skewness Kurtosis Min Max pLB pUB __________ ________ __________ ________ ________ _______ ______ ___ A1 4.0357 0.19163 0.06465 2.9878 3.2041 4.8393 NaN NaN A2 3.0171 0.15235 0.24829 3.1312 2.3922 3.713 NaN NaN A3 2.011 0.11496 0.5569 3.5013 1.5876 2.604 NaN NaN E3Prod 5.4327e-05 0.028824 -0.010354 3.0155 -0.12376 0.1235 NaN NaN A4 1.017 0.080443 1.1514 4.662 0.79025 1.5146 NaN NaN E4Prod 7.3159e-05 0.040745 -0.0014506 2.9953 -0.18843 0.18086 NaN NaN S1 3.0321 0.15311 0.24829 3.1312 2.4041 3.7315 0 0 P1 1.0066 0.21537 1.2864 5.3842 0.59948 3.0522 0 0 S2 2.0211 0.11554 0.5569 3.5013 1.5955 2.617 0 0 P2 1.0444 0.21805 1.2863 5.384 0.63226 3.1154 0 0 S3 1.022 0.080844 1.1514 4.662 0.79419 1.5221 0 0 P3 1.0825 0.22712 1.114 4.9948 0.58569 3.1812 0 0 S4 0.035603 0.054246 2.1135 7.9023 0 0.45079 30.347 0 P4 1.1208 0.24161 0.95138 4.4806 0.58498 3.2488 0 0 Correlation A1 A2 A3 E3Prod A4 E4Prod S1 P1 S2 P2 S3 P3 S4 P4 _________ _________ _________ __________ _________ __________ _________ __________ _________ __________ _________ ________ ________ ________ A1 1 0.99899 0.993 0.0024029 0.95869 0.0019429 0.99899 -0.95003 0.993 -0.95002 0.95869 -0.92397 0.75093 -0.87923 A2 0.99899 1 0.99731 0.0023972 0.969 0.0018378 1 -0.9359 0.99731 -0.93589 0.969 -0.91024 0.77226 -0.8661 A3 0.993 0.99731 1 0.0023819 0.98161 0.0016637 0.99731 -0.90876 1 -0.90874 0.98161 -0.88385 0.80368 -0.84089 E3Prod 0.0024029 0.0023972 0.0023819 1 -0.11245 0.70601 0.0023972 -0.0019278 0.0023819 -0.0019207 -0.11245 -0.20571 -0.29709 -0.18088 A4 0.95869 0.969 0.98161 -0.11245 1 -0.079773 0.969 -0.83724 0.98161 -0.83721 1 -0.78345 0.8922 -0.74626 E4Prod 0.0019429 0.0018378 0.0016637 0.70601 -0.079773 1 0.0018378 -0.0020694 0.0016637 -0.0020625 -0.079773 -0.14606 -0.34886 -0.31266 S1 0.99899 1 0.99731 0.0023972 0.969 0.0018378 1 -0.9359 0.99731 -0.93589 0.969 -0.91024 0.77226 -0.8661 P1 -0.95003 -0.9359 -0.90876 -0.0019278 -0.83724 -0.0020694 -0.9359 1 -0.90876 1 -0.83724 0.9725 -0.57003 0.92613 S2 0.993 0.99731 1 0.0023819 0.98161 0.0016637 0.99731 -0.90876 1 -0.90874 0.98161 -0.88385 0.80368 -0.84089 P2 -0.95002 -0.93589 -0.90874 -0.0019207 -0.83721 -0.0020625 -0.93589 1 -0.90874 1 -0.83721 0.9725 -0.56999 0.92613 S3 0.95869 0.969 0.98161 -0.11245 1 -0.079773 0.969 -0.83724 0.98161 -0.83721 1 -0.78345 0.8922 -0.74626 P3 -0.92397 -0.91024 -0.88385 -0.20571 -0.78345 -0.14606 -0.91024 0.9725 -0.88385 0.9725 -0.78345 1 -0.4711 0.94984 S4 0.75093 0.77226 0.80368 -0.29709 0.8922 -0.34886 0.77226 -0.57003 0.80368 -0.56999 0.8922 -0.4711 1 -0.37586 P4 -0.87923 -0.8661 -0.84089 -0.18088 -0.74626 -0.31266 -0.8661 0.92613 -0.84089 0.92613 -0.74626 0.94984 -0.37586 1 Autocorrelation T1 T2 T3 T4 T5 __________ __________ ___________ __________ __________ A1 0.20153 0.032782 0.00042194 -0.011956 -0.0074951 A2 0.20676 0.034361 0.00044046 -0.012175 -0.0076794 A3 0.21394 0.03655 0.00037985 -0.012522 -0.0079722 E3Prod -0.0040931 -0.0078807 -0.0050107 -0.0063428 -0.0047748 A4 0.16634 0.028203 -0.0014939 -0.012323 -0.0076489 E4Prod -0.0036683 -0.0073908 -0.0055611 -0.0073471 -0.0060193 S1 0.20676 0.034361 0.00044046 -0.012175 -0.0076794 P1 0.15238 0.018343 -0.00087912 -0.010131 -0.0064648 S2 0.21394 0.03655 0.00037985 -0.012522 -0.0079722 P2 0.15236 0.01833 -0.00088855 -0.010136 -0.0064651 S3 0.16634 0.028203 -0.0014939 -0.012323 -0.0076489 P3 0.23653 0.035239 0.0010105 -0.010435 -0.0081844 S4 0.00693 -0.0015752 -0.0066936 -0.010341 -0.0091342 P4 0.34143 0.046942 0.0011096 -0.0097003 -0.0088653
