F5-conf-01 — Competitive equilibrium of a 2×2 Cobb–Douglas exchange economy
Question
Find the Walrasian equilibrium relative price p = p1/p2 (good 2 numeraire, p2 = 1) and the allocation for agents A and B with u_i = α_i ln x1 + (1−α_i) ln x2. Then verify market clearing and Walras' law, and check the closed-form price against a separate numerical root-finder.
Data and exclusions
data/endowments.csv(2 rows;n_input_rows): A = (8, 2), B = (4, 8).data/parameters.csv(4 rows): α_A = 0.4, α_B = 0.6 (alpha_A,alpha_B).- No rows were excluded (
out/exclusions.csv);n_analysed= 2 agents. - Data issue (
data_issues): the summary sheet givesaggregate_endowment_good1_recorded= 14, but the per-agent endowments add up to 12. For good 2 the two sources agree (10). The task calls the per-agent endowments the primary data, so market clearing usesaggregate_endowment_good1= 12 andaggregate_endowment_good2= 10. The value of 14 cannot be used consistently: each agent's wealth comes from their own endowment, so clearing against 14 would break Walras' law by p·(−2).
Method
- Demands: x1_i = α_i·w_i/p and x2_i = (1−α_i)·w_i, where w_i = p·e1_i + e2_i.
- Closed form: setting z1(p) = Σ x1_i − Σ e1_i = 0 gives p* = Σ α_i e2_i / Σ (1−α_i) e1_i = (0.4·2 + 0.6·8)/(0.6·8 + 0.4·4) = 5.6/6.4.
- Assumptions: α_i ∈ (0,1) and all endowments are strictly positive. These make every demand interior and every wealth positive, so the equilibrium exists and is unique. The price normalisation is p2 = 1.
- Numerical validation: Brent's method (
scipy.optimize.brentq) finds the root of the aggregate excess demand z1(p) directly on [1e-6, 1e6]. It does not evaluate the closed-form expression. There is a sign change at the bracket ends, and z1 is strictly decreasing in p, so the root is unique. - No randomness is used (
random_seed= null).
Results
- Equilibrium price:
price_ratio_p1_over_p2= 0.875 (stored as 0.8749999999999999). - Numerical root:
price_ratio_numerical= 0.875. The absolute difference from the closed form is 1.1e-16 (price_abs_diff_closed_vs_numerical). - Allocation:
- Agent A:
x1_A= 4.1143 (= 144/35),x2_A= 5.4. - Agent B:
x1_B= 7.8857 (= 276/35),x2_B= 4.6.
- Agent A:
- Market clearing holds:
excess_demand_good1= 0.0 andexcess_demand_good2= 0.0. - Walras' law holds:
walras_law_residual= 0.0 at equilibrium. Away from equilibrium the residual stays within floating-point error, with a maximum of 7.1e-15 over p ∈ [0.1, 10] (walras_law_residual_offeq_max_abs). - Feasibility:
feasibility= "complete".
Uncertainty
This is a deterministic theoretical calculation, so there is no sampling uncertainty. The only numerical error is floating-point rounding, of order 1e-16 (price_abs_diff_closed_vs_numerical, walras_law_residual_offeq_max_abs).
The main source of uncertainty is in the inputs: which aggregate endowment of good 1 is correct. If the per-agent endowments were wrong and the true total were 14, the equilibrium would be different. The data cannot tell us how the extra 2 units would be split between the agents.
Limitations and open issues
- The good-1 total in the summary sheet (14) contradicts the per-agent data (12). I resolved this in favour of the primary per-agent data, but the conflict is unresolved at its source.
- The closed form only holds for interior Cobb–Douglas solutions. Corner cases (α_i ∈ {0,1} or zero endowments) are outside its scope; the script checks for them and would stop if they occurred.
- The numerical check confirms the price for this one parameter set only. It does not test other parameter sets, and it does not test uniqueness beyond the monotonicity of z1.