2 Sectors RBC with Costly Capital Reallocation - Occbin

Dear All,

I am trying to replicate on Dynare the (cobb-douglas) model introduced by Ramey&Shapiro(1998).

The model is a 2 sectors RBC model with government purchases and costly capital reallocation. It is summarized in the following short pdf:
ramey_shapiro1998.pdf (178.5 KB)

The shock consists of extra persistent government purchases from sector 2 (i.e. it simulates the effects of a military build-up). The social planner in the model can build up the capital stock in sector 2 by either:

  • Giving up consumption of good 2 (standard Euler equation - consumption saving trade-off).
  • Shifting capital from sector 1 to sector 2. However shifting capital is costly (extra depreciation \gamma = 0.50).

Denoting by R_1 the amount of capital shifted from sector 1 to sector 2, we must have that R_1 \ge 0, which represents my occasionally binding constraint. In Dynare I write:

occbin_constraints;
name ‘shift’; bind r1 > 0;
end;

I intend to solve the model in perfect foresight, starting from a steady state where R_1 = 0, which represents the binding regime M1, to use the same notation in Guerrieri&Iacoviello(2015).

In response to the shock (dG_2>0), I expect to observe some capital shifted from sector 1 to sector 2 (this is what happens in the original paper). In this case, R_1>0, which represents the “relax-regime” M2.

My Problem: Even if my code runs without errors, capital is never shifted, i.e. R_1 =0 in all the periods of the occbin simulation. Assuming I correctly specified the model (I obtain the same steady state reported in the paper), there must be something incorrect in the way I coded up the occasionally binding constraint.

My code is available here:
RS98_occbin.mod (3.8 KB)

Any help or advice would be extremely appreciated. Thanks in advance.
Edoardo

The baseline regime is relax-one. Your model will start there. But your condition is

r1=0;

So in that regime, you impose r1 to never increase.

1 Like

Dear Johannes,
thanks for your prompt reply. I appreciate your help.
Unfortunately, I still can’t figure out how to fix my issue.

Here is my reasoning:
The FOC of the Lagrangean with respect to R_{1,t} (sales of capital from sector 1 to 2) are:
\lambda_{1,t} \cdot (1 + MPK_{1,t}) = \psi + \lambda_{2,t} \cdot (1-\gamma)
where \lambda_{i,t} is the marginal utility of consumption of good i, \psi is the Lagrange multiplier of the non-negativity constraint and MPK_{1,t} is the marginal product of capital in sector 1.

As you point out, my baseline regime is a relax-one, where my model is in steady-state. In this case I have that R_{1,t} = 0 and \psi>0. On the contrary, outside of steady state, we might enter the bind-regime, where R_{1,t} > 0 and \psi=0. Therefore, in Dynare:

occbin_constraints;
name ‘shift’; bind psi < 0; relax r1 < 0;
end;

and in the model block I write:

% 11)
[name=‘FOC of R1’]
lambda1 * (1+mpk1) = lambda2 * (1-GAMMA) + psi;
% 12)
[name=‘Shift Capital from 1 to 2’, bind = ‘shift’]
psi = 0;
[name=‘Shift Capital from 1 to 2’, relax = ‘shift’]
r1 = 0;

this follows what suggested in the Dynare manual:
Note that the baseline regime denotes the steady state of the model where the economy will settle in the long-run without shocks. For that matter, it may be one where e.g. a borrowing constraint is binding. In that type of setup, the bind -condition is used to specify the condition when this borrowing constraint becomes non-binding so that the alternative regime is entered.

Nonetheless, using this type of occbin and model-block, still returns a solution where R_{1,t} never increases above zero.
Do you have any suggestion of how I should specify the occbin-block and the model-block?

Thanks in advance for your help,
Edo

As a follow-up for future users who might find this useful.

It turns out that the code written in my previous post in response to Johannes comment, is correct and works fine. The reason why capital is not shifted is because the value of the fixed cost \gamma was too high, i.e. \gamma=0.5. As you lower \gamma, you start seeing capital shifted from sector 1 to sector 2, i.e. R_1>0.

Thanks @jpfeifer for steering me towards the solution to my problem.

Best,
Edoardo

1 Like