SPB Git

spb/wp29_uqo

Public

# F5-conf-01 — Competitive equilibrium of a 2×2 Cobb–Douglas exchange economy

# Question

Find the Walrasian equilibrium of a pure exchange economy. Agents A and B have utilities u_i = α_i ln x1 + (1−α_i) ln x2 and given endowments. Good 2 is the numeraire (p2 = 1). We report the closed-form relative price p = p1/p2, the equilibrium allocation, the aggregate excess demand for good 1, and the Walras' law residual. We then check the closed-form price against an independent numerical root of the excess-demand function.

# Data and exclusions

  • data/endowments.csv has 2 rows (n_input_rows): A = (8, 2) and B = (4, 8). data/parameters.csv has 4 rows: α_A = 0.4, α_B = 0.6, plus two summary-sheet aggregates. SHA-256 hashes and the full audit are in out/state/data_audit.md.
  • No values are missing and no rows are duplicated. All endowments are strictly positive and both α are in (0,1). No agent was excluded: 2 read, 0 removed, n_analysed = 2 (out/exclusions.csv).
  • Data issue (data_issues): the summary sheet records an aggregate endowment of good 1 of 14. The individual endowments sum to 8 + 4 = 12. Good 2 is consistent: the sheet says 10 and the endowments sum to 10.
    • Each agent's budget comes from its own endowment, so the only aggregate consistent with those budgets is their sum. I therefore used aggregate_endowment_good1 = 12 and aggregate_endowment_good2 = 10. The value of 14 is used only in the sensitivity check below.

# Method

  • Assumptions:
    • Agents are price-takers.
    • Prices are normalised so that p2 = 1.
    • 0 < α_i < 1 and endowments are strictly positive. This makes income positive at every p > 0, so Cobb–Douglas demands are interior: x1_i = α_i m_i / p and x2_i = (1−α_i) m_i, where m_i = p·e1_i + e2_i.
  • Closed form: setting Σ x1_i = Σ e1_i gives p = Σ α_i e2_i / Σ (1−α_i) e1_i = 5.6 / 6.4. By Walras' law, the market for good 2 then clears automatically.
  • Numerical check (also the baseline): Brent's method (scipy.optimize.brentq) solves z1(p) = Σ x1_i(p) − E1 = 0 on [1e-6, 1e6], using only the demand functions and never the closed-form expression. z1 is strictly decreasing in p, so the root is unique.
  • Reproducibility: out/analysis.py regenerates out/results.json. It uses no randomness (random_seed = null).

# Results

  • Equilibrium price: price_ratio_p1_over_p2 = 0.875 (exactly 7/8). The numerical root is price_ratio_numerical = 0.875; the two differ by 1.1e-16 (abs_diff_closed_form_vs_numerical).
  • Allocation:
    • A gets x1_A = 4.1143 (= 144/35) and x2_A = 5.4.
    • B gets x1_B = 7.8857 and x2_B = 4.6.
    • So A sells 3.886 units of good 1 for 3.4 units of good 2, and B makes the opposite trade.
  • Market clearing: excess_demand_good1 = 0.0, excess_demand_good2 = 0.0, and walras_law_residual = 0.0 in floating point. Further checks are in out/state/checks.md: budgets bind, MRS_A = MRS_B = p, and exact rational arithmetic agrees.
  • Sensitivity to the summary-sheet aggregate: suppose market clearing used E1 = 14 while budgets still come from the individual endowments. Good 1 would then clear at p = 0.667 (sensitivity_price_clearing_good1_with_sheet_E1). But excess demand for good 2 would be −1.333 (sensitivity_excess_demand_good2_with_sheet_E1) and the Walras residual −1.333 (sensitivity_walras_residual_with_sheet_E1). That is not a consistent equilibrium, which supports using 12.

# Uncertainty

The inputs are theoretical parameters, not sampled data, so there is no statistical uncertainty and no standard errors or confidence intervals. The only uncertainty is numerical. The closed form and the root-finder agree to within machine precision (~1e-16), and the residuals are exactly zero in floating point. The open question is which input is correct: the outcome depends on treating endowments.csv as authoritative over the summary-sheet aggregate.

# Limitations and open issues

  • The summary-sheet aggregate for good 1 (14) contradicts the individual endowments (12). I resolved this in favour of the individual endowments because they are the primary data and are the only choice consistent with Walras' law. If the individual endowments were the mistaken input instead, the equilibrium would differ, and the data cannot tell us which input is wrong.
  • The numerical check confirms only the root of z1 for these parameter values, on the bracket [1e-6, 1e6]. It is not a general proof. Uniqueness here follows analytically from the gross-substitutes property of Cobb–Douglas demands.
  • The closed form holds only under the stated assumptions (interior solution, strictly positive endowments, p2 = 1). Corner cases (α ∈ {0,1}, or zero endowments) are out of scope.
Files · main
Menu

Theme