TeX 53.2%
Python 46.6%
1# WP18 — baseline configuration (Part B model, research/model_specification.md §B).2# Every parameter: value, unit, and provenance. "illustrative" = no verified Canadian/Québec3# source in research/literature_matrix.csv; "normalisation" = fixed by construction;4# "verified target" = a moment reported in a verified source (see calibration.py), used as a5# comparison, never as a fitted claim. Annual values are converted to the 5-year model period6# in src/model.py (conversion formulas recorded there and in results/data/parameters.csv).7#8# One model period = 5 years. Units of value: the average 5-year labour income of a working-age9# household at the median productivity state (E[z] = 1, mean age profile = 1) = 1.1011meta:12 name: baseline13 seed: 20261020 # numpy Generator seed for the dynasty panel (common random numbers)14 period_years: 51516demographics:17 J: 12 # ages 1..12 = 25-29 .. 80-84 (spec B.1)18 j_retire: 9 # first retirement age index (65-69)19 j_gift: 7 # parent gives the inter-vivos transfer; child enters at age 120 j_estate: 7 # child receives the parent's estate (J - j_gift + 2 = 7)2122preferences:23 beta_annual: 0.96 # illustrative (standard lifecycle value); per period = 0.96^524 gamma: 2.0 # CRRA curvature on the composite c^(1-alpha) s^alpha; illustrative25 alpha: 0.20 # housing-services share in the composite; illustrative (Statistics26 # Canada shelter share of spending is ~0.3 incl. utilities; we use27 # the lower value because owner services are gross of maintenance)28 chi: 0.0 # ownership utility premium (s = (1+chi) h); baseline 0 (spec B.2)29 nu: 2.0 # warm-glow weight (De Nardi 2004 form); illustrative, chosen so that mean gifts ~ 2 years of income30 x_shift: 1.0 # luxury shift of the warm glow (transfers are a luxury); illustrative (see calibration.py)3132income:33 rho_annual: 0.95 # annual AR(1) persistence of log productivity; illustrative (standard)34 sigma_annual: 0.15 # annual innovation s.d.; illustrative (standard)35 n_z: 5 # Rouwenhorst states36 # 5-year conversion (model.py): rho5 = rho^5; the unconditional variance of log z is kept equal37 # to the annual one, sigma5 = sqrt(var_u * (1 - rho5^2)), var_u = sigma^2/(1 - rho^2).38 age_profile: [0.70, 0.88, 1.02, 1.10, 1.15, 1.13, 1.06, 0.96] # ages 1..8 (25-64), mean = 1; illustrative hump39 replacement_rate: 0.50 # pension = rr * ybar_8 * z_last; illustrative40 rho_intergenerational: 0.0 # correlation of child z_1 with parent z at j_gift; 0 = equal-income design41 sigma_transitory: 0.03 # s.d. of a transitory, unanticipated i.i.d. income component per period (log), realised42 # before decisions; spreads the atoms of the cash distribution (zero-gift entrants,43 # hand-to-mouth renters) that otherwise make excess demand discontinuous; illustrative44 dep_premium_annual: 0.0 # excess annual real return on household deposits ("renter investment return"); 0 baseline4546housing:47 h_sizes: [1.0, 1.5, 2.25, 3.4] # owner-occupied sizes, units of housing (spec B.12)48 s_min: 0.30 # minimum rented size; illustrative (< h_min)49 s_max: 3.4 # maximum rented size = largest house50 m_annual: 0.01 # maintenance, share of value per year; illustrative (per period = 5x)51 kappa_b: 0.025 # buying cost, share of price; illustrative (Québec transfer duty + legal)52 kappa_s: 0.05 # selling cost, share of price; illustrative (brokerage)53 kappa_f: 0.01 # refinancing cost, share of house value; illustrative54 delta_H_annual: 0.01 # physical depreciation of the stocks per year; illustrative5556mortgage:57 N: 5 # amortisation, periods (25 years); Canadian standard (literature_review §7)58 theta: 0.20 # minimum down payment (max LTV 0.80); Canadian uninsured threshold; illustrative baseline59 psi: 0.39 # payment-to-income cap at the qualifying rate; illustrative (GDS-type cap)60 stress_annual: 0.02 # qualifying-rate add-on, annual (stress test); illustrative61 contract: frm # frm | term5 | arm — identical in the stationary equilibrium (spec B.5)62 spread_annual: 0.0 # mortgage spread over the deposit nominal rate; baseline 06364rates:65 r_annual: 0.02 # real rate per year; illustrative (small open economy, exogenous)66 pi_annual: 0.02 # steady-state CPI inflation per year; Bank of Canada 2% target (institutional)6768rental:69 phi: 0.05 # landlord operating wedge per period (share of value); illustrative70 sigma_seg: 1.0 # segmentation (1 = fully segmented stocks, 0 = one stock); spec B.671 eta_rent: 1.0 # rent indexation to a surprise (1 = full); baseline72 eta_wage: 1.0 # wage indexation to a surprise (1 = full); baseline7374supply:75 eps: 1.0 # long-run owner-occupied supply elasticity; ILLUSTRATIVE (no verified Canadian estimate; range 0.05-3)76 eps_r: 1.0 # rental supply elasticity; illustrative77 H_bar: null # scale; null = set by normalisation p* = 1 (calibration.py)78 Hr_bar: null # scale; null = set by normalisation p^r* = 179 p_ref: 1.0 # price normalisation8081government:82 tau_b: 0.0 # transfer tax on gifts and estates, rebated lump-sum to age-1 households8384grids:85 n_a: 50 # liquid assets, double-exponential spacing86 a_max: 15.0 # units of average 5-year income87 n_b: 20 # real mortgage balance per unit of house: [0, (1-theta) p_cap]88 p_cap_factor: 1.6 # balance grid covers prices up to p_cap_factor * p_ref89 n_x: 120 # cash-on-hand grid for the rent / buy / refinance branches90 x_max: 22.091 n_B: 11 # loan choices at origination, fractions of the LTV cap92 n_gift: 12 # gift choices at j_gift, fractions of cash (0 .. gift_frac_max)93 gift_frac_max: 0.694 K_estate: 5 # points of the estate lottery95 c_min: 0.01 # consumption floor (feasibility)9697simulation:98 n_dynasties: 96000 # dynasty slots (16 000 per phase); cross-section = 2 x n_dynasties99 burn_periods: 60 # 10 generations from an arbitrary initial condition (stationary; convergence checked in tests)100101equilibrium:102 tol_excess: 5.0e-4 # relative excess demand tolerance; MC noise in excess-demand differences is ~1e-3 for 0.5 % price moves, so the equilibrium price is pinned to about +/-0.05 %103 tol_lottery: 1.0e-3 # relative change of the estate lottery points104 max_outer: 10 # lottery / rebate fixed-point rounds105 damping: 0.7 # damping of the lottery / rebate update106107transition:108 T: 14 # periods (70 years); residual at T reported109 tol: 1.5e-3 # max relative excess demand along the path (single-period cross-sections of 192 000 households: noise floor ~1e-3)110 max_iter: 20111 jac_step: 0.01 # FD step in log price (averages the grid kinks)112 pi_surprise: 0.10 # unexpected cumulative CPI surprise in the shock period (10 % ~ 2 pp/yr over 5 yrs)113