STO4 Competitive storage with price-band backed by public storage
This model is an extension of Miranda and Helmberger (1988) to include a capacity constraint on the public stock level (see also Gouel 2013).
Contents
Model's structure
Response variables Speculative storage (
), Increase in public stock level (
), Decrease in public stock level (
), Planned production (
) and Price (
).
State variable Availability (
) and Public stock (
).
Shock Productivity shocks (
).
Parameters Unit physical storage cost (
), Interest rate (
), Scale parameter for the production cost function (
), Inverse of supply elasticity (
), Demand price elasticity (
), Floor price (
), Ceiling price (
) and Capacity constraint on public stock (
).
Equilibrium equations





Transition equation


Writing the model
The model is defined in a Yaml file: sto4.yaml.
Create the model object
Mu = 1; sigma = 0.05; model = recsmodel('sto4.yaml',struct('Mu',Mu,'Sigma',sigma^2,'order',7));
Deterministic steady state (equal to first guess)
State variables:
A Sg
_ ___
1 0.4
Response variables:
S H P DSgp DSgm
_ _ _ ____ ____
0 1 1 0 0
Expectations variables:
EP EPe
__ ___
1 1
Sgbar = model.params(end-1);
Multiple steady states
In this model, there is no stock depreciation. This assumption implies that there are multiple steady states: as long as the steady-state price is between the floor and ceiling prices, any public stock level between 0 and
is a steady state. Actually, the steady-state response variables are unique, only the public stock level is indeterminate as we can see in the examples below:
[sss1,xss1] = recsSS(model,[1 0],model.xss);
Deterministic steady state (equal to first guess)
State variables:
A Sg
_ __
1 0
Response variables:
S H P DSgp DSgm
_ _ _ ____ ____
0 1 1 0 0
Expectations variables:
EP EPe
__ ___
1 1
[sss2,xss2] = recsSS(model,[1 0.2],model.xss);
Deterministic steady state (equal to first guess)
State variables:
A Sg
_ ___
1 0.2
Response variables:
S H P DSgp DSgm
_ _ _ ____ ____
0 1 1 0 0
Expectations variables:
EP EPe
__ ___
1 1
Define approximation space
[interp,s] = recsinterpinit(20,[0.74 0],[1.4 Sgbar]);
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,x] = recsSolveREE(interp,model,s);
Successive approximation
Major Minor Lipschitz Residual
0 0 1.50E-01 (Input point)
1 1 0.8672 6.27E-02
2 1 0.6394 2.84E-02
3 1 0.6901 8.93E-03
4 1 0.7305 2.41E-03
5 1 0.7453 6.14E-04
6 1 0.7509 1.53E-04
7 1 0.7528 3.78E-05
8 1 0.7535 9.32E-06
9 1 0.7537 2.30E-06
10 1 0.7540 5.67E-07
11 1 0.7598 1.40E-07
12 1 0.9398 3.24E-08
13 1 1.0000 0.00E+00
Solution found - Residual lower than absolute tolerance
Simulate the model
options.stat = 1; recsSimul(model,interp,repmat([1 0],1E3,1),200,[],options); subplot(3,3,1) xlabel('Availability') ylabel('Frequency') subplot(3,3,2) xlabel('Public stock') ylabel('Frequency') subplot(3,3,3) xlabel('Speculative storage') ylabel('Frequency') subplot(3,3,4) xlabel('Planned production') ylabel('Frequency') subplot(3,3,5) xlabel('Price') ylabel('Frequency') subplot(3,3,6) xlabel('Increase in public stock level') ylabel('Frequency') subplot(3,3,7) xlabel('Decrease in public stock level') ylabel('Frequency')
Statistics from simulated variables (excluding the first 20 observations):
Moments
Mean StdDev Skewness Kurtosis Min Max pLB pUB
_________ _________ _________ ________ _______ _______ ______ ______
A 1.004 0.050486 0.0050016 2.9912 0.78697 1.2316 NaN NaN
Sg 0.13528 0.1159 0.67697 2.4411 0 0.4 NaN NaN
S 0.0040365 0.0075183 3.7378 27.244 0 0.1444 35.415 0
H 0.99999 0.0039457 0.54691 6.3107 0.96172 1.0097 0 0
P 1.007 0.12142 2.1476 13.615 0.74116 2.8374 0 0
DSgp 0.0092738 0.019729 2.8634 12.165 0 0.20619 38.557 1.0844
DSgm 0.0089268 0.018965 2.7876 11.426 0 0.19424 26.427 9.2961
Correlation
A Sg S H P DSgp DSgm
_________ _________ ________ ________ ________ _________ ________
A 1 -0.052898 0.57932 -0.52389 -0.81646 0.71504 -0.69501
Sg -0.052898 1 -0.10746 -0.51905 -0.09671 -0.048125 0.15038
S 0.57932 -0.10746 1 -0.47524 -0.47195 0.28753 -0.24819
H -0.52389 -0.51905 -0.47524 1 0.58195 -0.36285 0.1295
P -0.81646 -0.09671 -0.47195 0.58195 1 -0.40827 0.42106
DSgp 0.71504 -0.048125 0.28753 -0.36285 -0.40827 1 -0.21875
DSgm -0.69501 0.15038 -0.24819 0.1295 0.42106 -0.21875 1
Autocorrelation
T1 T2 T3 T4 T5
________ __________ __________ _________ __________
A 0.041787 -0.02014 -0.015863 -0.02007 -0.016676
Sg 0.93562 0.87078 0.81071 0.75463 0.7032
S 0.16836 0.067865 0.049235 0.035641 0.030582
H 0.49457 0.37386 0.31506 0.26788 0.23226
P 0.079151 0.018209 0.015877 0.01248 0.0091157
DSgp 0.02324 -0.0068244 -0.0071192 -0.013707 -0.010108
DSgm 0.015919 -0.0061996 -0.0038683 -0.010361 -0.0059664