STO2 Competitive storage with floor-price backed by public storage

This model is close to one of the models presented in Wright and Williams (1988).

Model's structure

Response variables Speculative storage ($S^{\mathrm{S}}$), Public storage ($S^{\mathrm{G}}$), Planned production ($H$) and Price ($P$).

State variable Availability ($A$).

Shock Productivity shocks ($\epsilon$).

Parameters Unit physical storage cost ($k$), Depreciation share ($\delta$), 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}}$) 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{1-\delta}{1+r}\mathrm{E}_{t}\left(P_{t+1}\right)\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}={P_{t}}^{\alpha}+S^{\mathrm{S}}_{t}+S^{\mathrm{G}}_{t},$$

$$S^{\mathrm{G}}_{t}: 0\le S^{\mathrm{G}}_{t}\le \bar{S}^{\mathrm{G}} \quad \perp \quad P_t - P^{\mathrm{F}}.$$

Transition equation

$$A_{t}: A_{t}=\left(1-\delta\right)\left(S^{\mathrm{S}}_{t-1}+S^{\mathrm{G}}_{t-1}\right)+H_{t-1}\epsilon_{t}.$$

Writing the model

The model is defined in a Yaml file: sto2.yaml.

Create the model object

Mu                = 1;
sigma             = 0.05;
model = recsmodel('sto2.yaml',struct('Mu',Mu,'Sigma',sigma^2,'order',7));
Deterministic steady state (different from first guess, max(|delta|)=0.392101)
 State variables:
      A   
    ______

    1.3921

 Response variables:
        S           H       P        Sg   
    __________    _____    ____    _______

    6.0863e-15    1.004    1.02    0.39605

 Expectations variables:
     EP     EPe 
    ____    ____

    1.02    1.02

Define approximation space

[interp,s] = recsinterpinit(50,0.7,2);

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	         	 3.02E-02 (Input point)
      1	     1	  1.0269	 1.39E-02
      2	     1	  0.9062	 8.27E-03
      3	     1	  0.9942	 1.07E-03
      4	     1	  1.0897	 5.32E-04
      5	     1	  0.7831	 1.17E-04
      6	     1	  0.8366	 1.91E-05
      7	     1	  0.8449	 2.97E-06
      8	     1	  0.8459	 4.57E-07
      9	     1	  0.8460	 7.04E-08
     10	     1	  1.0000	 0.00E+00
Solution found - Residual lower than absolute tolerance

Plot storage and price rules

subplot(2,1,1)
plot(s,x(:,[1 4]))
leg = legend('Private stock','Public stock');
set(leg,'Location','NorthWest')
set(leg,'Box','off')
xlabel('Availability')
ylabel('Stock')
subplot(2,1,2)
plot(s,x(:,3))
xlabel('Availability')
ylabel('Price')

References

Wright, B. D. and Williams, J. C. (1988). The incidence of market-stabilising price support schemes. The Economic Journal, 98(393), 1183-1198.