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