Skip to content

Splitting one consumption good into two identical goods changes the steady state #1218

Description

@marcelolafleur

If a multi-good calibration is built from a single-good calibration and meant to be equivalent to it, it isn't — unless χⁿ and χᵇ are recalibrated. The reason is one term in the household conditions that is not adjusted.

OG-Core master (59ad58d), default parameters unchanged. Rows B, C, D differ only in how the single good is counted:

p̃ r w L B
A. one good (default) 1.00 0.06285 1.1779 0.3330 2.4590
B. two identical industries, one good 1.00 0.06285 1.1779 0.3330 2.4590
C. the good split into two equal shares 2.00 0.07560 1.1114 0.3647 2.3098
D. as C, χ quoted in the new unit (× 2^0.5) 2.00 0.06285 1.1779 0.3330 2.4590

Nothing real changes in C, yet r moves 127 bp and labor 9.5%. D has the same p̃ as C; the only difference is that χ was rescaled — and the economy is back to B.

Cause. At unit prices, Eq. (20) gives p̃ = ∏ αᵢ^(−αᵢ) — 1 for one good, 2 for two equal shares. So splitting the good halves the unit of composite consumption and doubles its price. In the labor condition, Eq. (36), those two variables sit on the left side only:

$$\underbrace{w_t e_{j,s}(1-\tau^{mtrx}_{s,t})}_{\times 1}\cdot\underbrace{\frac{1}{\textcolor{red}{p_t}}}_{\times \frac{1}{2}}\cdot\underbrace{(\textcolor{red}{c_{j,s,t}})^{-\sigma}}_{\times 2^{\sigma}} = \underbrace{e^{g_y(1-\sigma)}\chi^n_s\left(\frac{b}{\tilde l}\right)\left(\frac{n_{j,s,t}}{\tilde l}\right)^{\upsilon-1}\left[1-\left(\frac{n_{j,s,t}}{\tilde l}\right)^{\upsilon}\right]^{\frac{1-\upsilon}{\upsilon}}}_{\times 1}$$

$$2^{\sigma}\cdot\frac{1}{2} = 2^{\sigma-1} = 1.41 \qquad (\sigma = 1.5)$$

After the split, the left side of Eq. (36) is 1.41 times what it was, even though the household is doing exactly the same thing. The right side has no consumption and no price in it, so it is the same number as before. The two sides no longer match, so the household changes how much it works until they do. The same happens to the savings conditions, Eqs. (37) and (38), through χᵇ.

Why the right side does not adjust: χⁿ and χᵇ are numbers that were calibrated when the model had one good, so they are in "one-good" units. The code uses those same numbers no matter how many goods the model has.

Fix. Make the price of composite consumption equal 1 whenever all goods cost 1, for any number of goods. That is Eq. (20) without the division by αᵢ:

$$p_t = \prod_{i=1}^{I}\left([1+\tau^c_{i,t}] p_{i,t}\right)^{\alpha_i}$$

In code: remove / alpha_c at ogcore/aggregates.py lines 678 and 681. With one good this is exactly the current formula, so nothing that works today changes. With more goods, the unit of composite consumption no longer depends on how many goods there are, so the calibrated χ keep their meaning.

Reproduce. Row A is the baseline of examples/run_ogcore_example.py. For the other rows, replace the reform's og_spec.update({"cit_rate": [[0.35]]}) with:

# B: two identical industries, one good
og_spec.update({"M": 2, "gamma": [0.35, 0.35], "epsilon": [1.0, 1.0], "gamma_g": [0.0, 0.0],
                "I": 1, "io_matrix": [[0.5, 0.5]]})

# C: as B, the good split into two equal shares
og_spec.update({"M": 2, "gamma": [0.35, 0.35], "epsilon": [1.0, 1.0], "gamma_g": [0.0, 0.0],
                "I": 2, "alpha_c": [0.5, 0.5], "c_min": [0.0, 0.0], "io_matrix": [[1.0, 0.0], [0.0, 1.0]]})

# D: C, plus chi in the new unit
og_spec.update({"chi_n": (np.array(p.chi_n[0]) * 2**0.5).tolist(),
                "chi_b": (np.array(p.chi_b) * 2**0.5).tolist()})

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions