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).

Model's structure

Response variables Speculative storage ($S^{\mathrm{S}}$), Increase in public stock level ($\Delta S^{\mathrm{G}+}$), Decrease in public stock level ($\Delta S^{\mathrm{G}-}$), Planned production ($H$) and Price ($P$).

State variable Availability ($A$) and Public stock ($S^{\mathrm{G}}$).

Shock Productivity shocks ($\epsilon$).

Parameters Unit physical storage cost ($k$), Interest rate ($r$), Scale parameter for the production cost function ($h$), Inverse of supply elasticity ($\mu$), Demand price elasticity ($\alpha$), Floor price ($P^{\mathrm{F}}$), Ceiling price ($P^{\mathrm{c}}$) and Capacity constraint on public stock ($\bar{S}^{\mathrm{G}}$).

Equilibrium equations

$$S^{\mathrm{S}}_{t}: S^{\mathrm{S}}_{t}\ge 0 \quad \perp \quad P_{t}+k-\frac{\mathrm{E}_{t}\left(P_{t+1}\right)}{1+r}\ge 0,$$

$$H_{t}: \frac{1}{1+r}\mathrm{E}_{t}\left(P_{t+1}\epsilon_{t+1}\right)=h {H_{t}}^{\mu},$$

$$P_{t}: A_{t}+\Delta S^{\mathrm{G}-}_{t}={P_{t}}^{\alpha}+S^{\mathrm{S}}_{t}+\Delta S^{\mathrm{G}+}_{t},$$

$$\Delta S^{\mathrm{G}+}_{t}:0\le\Delta S^{\mathrm{G}+}_{t}\le\bar{S}^{\mathrm{G}}-S^{\mathrm{G}}_{t-1} \quad \perp \quad P_{t}-P^{\mathrm{F}},$$

$$\Delta S^{\mathrm{G}-}_{t}:0\le\Delta S^{\mathrm{G}-}_{t}\le S^{\mathrm{G}}_{t-1} \quad \perp \quad P^{\mathrm{c}}-P_{t}.$$

Transition equation

$$A_{t}: A_{t}=S^{\mathrm{S}}_{t-1}+H_{t-1}\epsilon_{t},$$

$$S^{\mathrm{G}}_{t}: S^{\mathrm{G}}_{t}= S^{\mathrm{G}}_{t}+\Delta S^{\mathrm{G}+}_{t}-\Delta S^{\mathrm{G}-}_{t}.$$

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:
		1	0.4	

 Response variables:
		0	1	1	0	0	

 Expectations variables:
		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 $\bar{S}^{\mathrm{G}}$ 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:
		1	0	

 Response variables:
		0	1	1	0	0	

 Expectations variables:
		1	1	

[sss2,xss2] = recsSS(model,[1 0.2],model.xss);
Deterministic steady state (equal to first guess)
 State variables:
		1	0.2	

 Response variables:
		0	1	1	0	0	

 Expectations variables:
		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));
Warning: Rank deficient, rank = 54, tol =  7.013205e-07.
Warning: Rank deficient, rank = 51, tol =  7.618225e-04.
Warning: Rank deficient, rank = 52, tol =  1.249466e-03.
Warning: Rank deficient, rank = 54, tol =  5.423639e-06.
Warning: Rank deficient, rank = 53, tol =  4.716893e-04.

Solve for rational expectations

[interp,x] = recsSolveREE(interp,model,s);
Successive approximation
  Major	 Minor	Residual
      0	     0	1.50E-01 (Input point)
      1	     1	6.27E-02
      2	     1	2.84E-02
      3	     1	8.93E-03
      4	     1	2.41E-03
      5	     1	6.14E-04
      6	     1	1.53E-04
      7	     1	3.78E-05
      8	     1	9.32E-06
      9	     1	2.30E-06
     10	     1	5.65E-07
     11	     1	1.40E-07
     12	     1	3.24E-08
     13	     1	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      Std. Dev. Skewness  Kurtosis  Min       Max       %LB       %UB
    1.0040    0.0505    0.0052    2.9909    0.7870    1.2316
    0.1353    0.1159    0.6772    2.4413         0    0.4000

  Columns 1 through 7

    0.0040    0.0075    3.7372   27.2365         0    0.1444   35.4183
    1.0000    0.0039    0.5470    6.3087    0.9617    1.0097         0
    1.0070    0.1214    2.1470   13.6103    0.7412    2.8374         0
    0.0093    0.0197    2.8631   12.1635         0    0.2062   38.5561
    0.0089    0.0190    2.7876   11.4255         0    0.1942   26.4339

  Column 8

         0
         0
         0
    1.0839
    9.2989

 Correlation
    1.0000   -0.0528    0.5793   -0.5240   -0.8165    0.7151   -0.6950
   -0.0528    1.0000   -0.1075   -0.5190   -0.0968   -0.0481    0.1503
    0.5793   -0.1075    1.0000   -0.4753   -0.4720    0.2875   -0.2482
   -0.5240   -0.5190   -0.4753    1.0000    0.5821   -0.3629    0.1296
   -0.8165   -0.0968   -0.4720    0.5821    1.0000   -0.4083    0.4210
    0.7151   -0.0481    0.2875   -0.3629   -0.4083    1.0000   -0.2188
   -0.6950    0.1503   -0.2482    0.1296    0.4210   -0.2188    1.0000

 Autocorrelation
    1         2         3         4         5
    0.0418   -0.0203   -0.0158   -0.0201   -0.0166
    0.9355    0.8706    0.8106    0.7545    0.7031

    0.1684    0.0678    0.0492    0.0356    0.0308
    0.4945    0.3737    0.3149    0.2679    0.2322
    0.0792    0.0180    0.0159    0.0124    0.0092
    0.0234   -0.0068   -0.0072   -0.0137   -0.0100
    0.0159   -0.0064   -0.0038   -0.0105   -0.0060

References

Gouel, C. (2013). Rules versus discretion in food storage policies. American Journal of Agricultural Economics, 95(4), 1029-1044.

Miranda, M. J. and Helmberger, P. G. (1988). The effects of commodity price stabilization programs. The American Economic Review, 78(1), 46-58.