# 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 gives `aggregate_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 uses `aggregate_endowment_good1` = 12 and `aggregate_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. - Market clearing holds: `excess_demand_good1` = 0.0 and `excess_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.