STO1 Competitive storage model
This model is a standard competitive storage model with supply reaction. Its setting is close to Wright and Williams (1982).
Contents
Model's structure
Response variables Storage (), Planned production () and Price ().
State variable Availability ().
Shock Productivity shocks ().
Parameters Unit physical storage cost (), Depreciation share (), Interest rate (), Scale parameter for the production cost function (), Inverse of supply elasticity () and Demand price elasticity ().
Equilibrium equations
Transition equation
Writing the model
The model is defined in a Yaml file: sto1.yaml.
Create the model object
Mu = 1; sigma = 0.05;
model = recsmodel('sto1.yaml',struct('Mu',Mu,'Sigma',sigma^2,'order',7));
Deterministic steady state (equal to first guess) State variables: A _ 1 Response variables: S H P _ _ _ 0 1 1 Expectations variables: EP EPe __ ___ 1 1
Define approximation space
[interp,s] = recsinterpinit(40,model.sss*0.7,model.sss*1.5);
Find a first guess through the perfect foresight solution
interp = recsFirstGuess(interp,model,s,model.sss,model.xss,struct('T',5));
Solve for rational expectations
interp = recsSolveREE(interp,model);
Successive approximation Major Minor Lipschitz Residual 0 0 7.18E-02 (Input point) 1 1 0.7774 4.27E-02 2 1 0.6246 2.88E-02 3 1 0.5941 1.22E-02 4 1 0.6840 3.88E-03 5 1 0.7230 1.08E-03 6 1 0.7359 2.84E-04 7 1 0.7394 7.41E-05 8 1 0.7408 1.92E-05 9 1 0.7412 4.97E-06 10 1 0.7412 1.29E-06 11 1 0.7412 3.33E-07 12 1 0.7432 8.58E-08 13 1 0.8677 1.86E-08 14 1 1.0000 0.00E+00 Solution found - Residual lower than absolute tolerance
Plot the decision rules
recsDecisionRules(model,interp,[],[],[],struct('simulmethod','solve')); subplot(2,2,1) xlabel('Availability') ylabel('Storage') subplot(2,2,2) xlabel('Availability') ylabel('Planned production') subplot(2,2,3) xlabel('Availability') ylabel('Price')
Simulate the model
[ssim,~,~,stat] = recsSimul(model,interp,model.sss(ones(1000,1),:),200); subplot(2,2,1) xlabel('Availability') ylabel('Frequency') subplot(2,2,2) xlabel('Storage') ylabel('Frequency') subplot(2,2,3) xlabel('Planned production') ylabel('Frequency') subplot(2,2,4) xlabel('Price') ylabel('Frequency')
Statistics from simulated variables (excluding the first 20 observations): Moments Mean StdDev Skewness Kurtosis Min Max pLB pUB ________ _________ ________ ________ _______ _______ ______ ___ A 1.0162 0.051825 0.019719 2.9954 0.79312 1.2528 NaN NaN S 0.015508 0.021954 1.6549 5.5816 0 0.17869 23.972 0 H 1.001 0.0080711 -1.4145 4.3785 0.9553 1.0072 0 0 P 1.0164 0.20256 1.8699 7.7434 0.69929 3.1864 0 0 Correlation A S H P ________ ________ ________ _______ A 1 0.86642 -0.87774 -0.9043 S 0.86642 1 -0.99794 -0.578 H -0.87774 -0.99794 1 0.59579 P -0.9043 -0.578 0.59579 1 Autocorrelation T1 T2 T3 T4 T5 _______ ________ _________ __________ __________ A 0.21258 0.041476 0.005918 -0.0079829 -0.0089553 S 0.24111 0.051096 0.0054768 -0.0092697 -0.010646 H 0.23996 0.050647 0.0056397 -0.0090575 -0.010316 P 0.11904 0.016731 0.002795 -0.0061893 -0.0071728
Assess solution accuracy
recsAccuracy(model,interp,ssim);
Accuracy of the solution Equilibrium equation error (in log10 units) Max Mean -2.2986 -3.1471 -2.7699 -3.7235 -3.3881 -4.3433