TeX 53.2%
Python 46.6%
1# WP18 — experiment definitions (CLAUDE.md Phase 3, experiments 1-10).2# Each scenario = baseline.yaml + overrides (dotted keys). `kind` selects the solver:3# ss : stationary recursive competitive equilibrium (GE: p, p^r, estate lottery re-solved)4# ss_pe : household block + simulation at BASELINE prices (partial equilibrium, prices fixed)5# mit : perfect-foresight transition after an unanticipated shock (GE) + its PE counterpart6# static : temporary equilibria with static (steady-state) expectations (experiment 8, A6)7# Results are written to results/data/<group>/<name>.json ; every file carries the field8# "equilibrium": "GE" | "PE (prices fixed)" | "static expectations".910groups:1112 # ---- Experiment 1 & 2: baseline moments, profiles, equal-income paths ----------------------13 baseline:14 - {name: baseline, kind: ss, overrides: {}}1516 # ---- Experiment 3: down-payment constraint and entry threshold sweep ------------------------17 theta_sweep:18 - {name: theta_005, kind: ss, overrides: {mortgage.theta: 0.05}}19 - {name: theta_010, kind: ss, overrides: {mortgage.theta: 0.10}}20 - {name: theta_020, kind: ss, overrides: {mortgage.theta: 0.20}} # = baseline21 - {name: theta_030, kind: ss, overrides: {mortgage.theta: 0.30}}22 - {name: theta_040, kind: ss, overrides: {mortgage.theta: 0.40}}23 - {name: theta_005_pe, kind: ss_pe, overrides: {mortgage.theta: 0.05}}24 - {name: theta_040_pe, kind: ss_pe, overrides: {mortgage.theta: 0.40}}25 - {name: psi_030, kind: ss, overrides: {mortgage.psi: 0.30}}26 - {name: psi_050, kind: ss, overrides: {mortgage.psi: 0.50}}2728 # ---- Experiment 4: surprise inflation, contracts, persistence, rent indexation --------------29 inflation:30 - {name: frm_level, kind: mit, shock: {type: inflation, persistence: 1, contract: frm}}31 - {name: term5_level, kind: mit, shock: {type: inflation, persistence: 1, contract: term5}}32 - {name: arm_level, kind: mit, shock: {type: inflation, persistence: 1, contract: arm}}33 - {name: frm_persistent, kind: mit, shock: {type: inflation, persistence: 2, contract: frm}}34 - {name: term5_persistent, kind: mit, shock: {type: inflation, persistence: 2, contract: term5}}35 - {name: arm_persistent, kind: mit, shock: {type: inflation, persistence: 2, contract: arm}}36 - {name: frm_level_rigid_rents, kind: mit, shock: {type: inflation, persistence: 1, contract: frm}, overrides: {rental.eta_rent: 0.0}}37 - {name: frm_level_unindexed_wages, kind: mit, shock: {type: inflation, persistence: 1, contract: frm}, overrides: {rental.eta_wage: 0.0}}38 - {name: frm_persistent_taylor, kind: mit, shock: {type: inflation, persistence: 2, contract: frm, phi_r: 0.5}}39 - {name: term5_persistent_taylor, kind: mit, shock: {type: inflation, persistence: 2, contract: term5, phi_r: 0.5}}40 - {name: frm_level_fixed_supply, kind: mit, shock: {type: inflation, persistence: 1, contract: frm}, overrides: {supply.eps: 0.05, supply.eps_r: 0.05}}41 - {name: frm_level_noseg, kind: mit, shock: {type: inflation, persistence: 1, contract: frm}, overrides: {rental.sigma_seg: 0.0}}4243 # ---- Experiment 5: leverage / LTV and negative house-price shocks ---------------------------44 leverage:45 - {name: rate_shock_theta020, kind: mit, shock: {type: real_rate, dr_annual: 0.02, persistence: 4}}46 - {name: rate_shock_theta005, kind: mit, shock: {type: real_rate, dr_annual: 0.02, persistence: 4}, overrides: {mortgage.theta: 0.05}}47 - {name: rate_shock_theta040, kind: mit, shock: {type: real_rate, dr_annual: 0.02, persistence: 4}, overrides: {mortgage.theta: 0.40}}48 # negative price shocks are also evaluated as pure accounting on the baseline cross-section49 # (price_drop_accounting in simulation.py: -10 %, -20 %, -30 %) — PE, prices fixed after the drop.5051 # ---- Experiment 6: bequests on/off, transfer tax --------------------------------------------52 bequests:53 - {name: bequests_off, kind: ss, overrides: {preferences.nu: 0.0}}54 - {name: bequests_half, kind: ss, overrides: {preferences.nu: 1.5}}55 - {name: transfer_tax_020, kind: ss, overrides: {government.tau_b: 0.20}}56 - {name: transfer_tax_050, kind: ss, overrides: {government.tau_b: 0.50}}57 - {name: bequests_off_pe, kind: ss_pe, overrides: {preferences.nu: 0.0}}5859 # ---- Experiment 7: supply elasticity -------------------------------------------------------60 supply:61 - {name: eps_005, kind: ss, overrides: {supply.eps: 0.05, supply.eps_r: 0.05}}62 - {name: eps_025, kind: ss, overrides: {supply.eps: 0.25, supply.eps_r: 0.25}}63 - {name: eps_050, kind: ss, overrides: {supply.eps: 0.5, supply.eps_r: 0.5}}64 - {name: eps_200, kind: ss, overrides: {supply.eps: 2.0, supply.eps_r: 2.0}}65 - {name: eps_005_theta005, kind: ss, overrides: {supply.eps: 0.05, supply.eps_r: 0.05, mortgage.theta: 0.05}}66 - {name: eps_005_theta040, kind: ss, overrides: {supply.eps: 0.05, supply.eps_r: 0.05, mortgage.theta: 0.40}}67 - {name: eps_200_theta005, kind: ss, overrides: {supply.eps: 2.0, supply.eps_r: 2.0, mortgage.theta: 0.05}}68 - {name: eps_200_theta040, kind: ss, overrides: {supply.eps: 2.0, supply.eps_r: 2.0, mortgage.theta: 0.40}}69 - {name: noseg, kind: ss, overrides: {rental.sigma_seg: 0.0}}70 - {name: halfseg, kind: ss, overrides: {rental.sigma_seg: 0.5}}7172 # ---- Experiment 8: rates, rent growth, earnings risk, expectations -------------------------73 sensitivity:74 - {name: r_001, kind: ss, overrides: {rates.r_annual: 0.01}}75 - {name: r_003, kind: ss, overrides: {rates.r_annual: 0.03}}76 - {name: pi_000, kind: ss, overrides: {rates.pi_annual: 0.00}}77 - {name: pi_004, kind: ss, overrides: {rates.pi_annual: 0.04}}78 - {name: pi_004_pe, kind: ss_pe, overrides: {rates.pi_annual: 0.04}} # Proposition 3: tilt at fixed prices79 - {name: phi_002, kind: ss, overrides: {rental.phi: 0.02}}80 - {name: phi_008, kind: ss, overrides: {rental.phi: 0.08}}81 - {name: sigma_low, kind: ss, overrides: {income.sigma_annual: 0.10}}82 - {name: sigma_high, kind: ss, overrides: {income.sigma_annual: 0.20}}83 - {name: rho_g_040, kind: ss, overrides: {income.rho_intergenerational: 0.40}}84 - {name: dep_premium_002, kind: ss, overrides: {income.dep_premium_annual: 0.02}}85 - {name: frm_level_static, kind: static, shock: {type: inflation, persistence: 1, contract: frm}}86 - {name: rent_growth_pe, kind: rent_growth_pe, overrides: {}, shock: {g_rent_annual: 0.01}}8788 # ---- Experiment 10: robustness (see robustness.py for grid/tolerance/sample-size variants) --89 robustness:90 - {name: beta_094, kind: ss, overrides: {preferences.beta_annual: 0.94}}91 - {name: beta_098, kind: ss, overrides: {preferences.beta_annual: 0.98}}92 - {name: gamma_3, kind: ss, overrides: {preferences.gamma: 3.0}}93 - {name: alpha_025, kind: ss, overrides: {preferences.alpha: 0.25}}94 - {name: kappa_high, kind: ss, overrides: {housing.kappa_b: 0.05, housing.kappa_s: 0.08}}95 - {name: kappa_low, kind: ss, overrides: {housing.kappa_b: 0.01, housing.kappa_s: 0.02}}96 - {name: chi_005, kind: ss, overrides: {preferences.chi: 0.05}}97 - {name: grid_fine, kind: ss, overrides: {grids.n_a: 80, grids.n_b: 30, grids.n_x: 180, grids.n_B: 16}}98 - {name: grid_coarse, kind: ss, overrides: {grids.n_a: 30, grids.n_b: 12, grids.n_x: 80, grids.n_B: 8}}99 - {name: tol_tight, kind: ss, overrides: {equilibrium.tol_excess: 1.0e-5, equilibrium.tol_lottery: 1.0e-4}}100 - {name: sample_small, kind: ss, overrides: {simulation.n_dynasties: 24000}}101 - {name: sample_large, kind: ss, overrides: {simulation.n_dynasties: 240000}}102 - {name: seed_alt, kind: ss, overrides: {meta.seed: 7}}103