SPB Git forge

spb/wp18_uqo

Public
6commits 1branches 0releases
5.4 MBsize
maindefault branch
yesterdaylast push
TeX 53.2% Python 46.6%
6.1 KB · 35 lines latex
Raw Blame History
1% ============================================================================2% WP18 — Appendix B: numerical algorithm, grids, tolerances and diagnostics3% ============================================================================4\section{Numerical algorithm and diagnostics}5\label{app:computation}6\setcounter{table}{0}\setcounter{figure}{0}78\subsection{Algorithm}910The stationary equilibrium is computed as follows. (1) Given prices $(p,\tilde p_r)$, the rent from \eqref{eq:rent}, the nominal rate, the estate lottery and the rebate, solve the household problem backward from $J$ to $1$: for each age, compute the values of the cash-only branches (rent, buy, refinance, sell-and-rent, move) on the cash-on-hand grid, with the loan chosen among eleven fractions of the binding origination constraint and the house size by comparison of the stored size-specific values, and the value of staying on the full state grid; next-period liquid assets are chosen by exhaustive search on the asset grid followed by a golden-section refinement; the gift at $j_g$ is chosen among twelve fractions of cash; the estate at $J$ is the terminal wealth. (2) Simulate the dynasty panel with common random numbers: \NDynasties{} slots, each holding a parent and a child whose phases are equidistributed, for ten generations of burn-in and six recorded periods, with the gift and the estate transmitted within the slot. (3) Compute excess demands in the two markets, the conditional means of the simulated estates by quintile (the lottery) and the transfer-tax revenue (the rebate). (4) Clear the rental market in $\tilde p_r$ by the Illinois regula falsi inside a regula falsi on $p$ for the owner-occupied market, then update the lottery and the rebate with damping 0.7 and repeat until the relative excess demands are below $5\times10^{-4}$ and the lottery changes by less than $10^{-3}$. The supply scales $\bar H$, $\bar H_r$ are set once, at the baseline, so that $p^* = \tilde p^*_r = 1$ (\SupplyScaleOwner{} and \SupplyScaleRental{} units).1112A transition after an unanticipated shock at $t = 0$ is computed by shooting in the sequence space: guess the log price paths $(\log p_t,\log\tilde p_{r,t})_{t<T}$ with $T = 14$, solve the household problem backward from the stationary terminal values with the time-varying prices, rates and contracts, simulate forward from the stationary cross-section with the realised shock, update the stocks by \eqref{eq:supply}, evaluate the excess demands at every date, and update the paths by Broyden steps from a finite-difference Jacobian (step 0.01 in log price, $2(T-1)$ columns computed in parallel) with periodic refresh; for large shocks a damped t\^atonnement pre-phase precedes the first Jacobian. The tolerance is $1.5\times10^{-3}$ on the maximum relative excess demand along the path; runs that stall at the Monte-Carlo noise floor above this value are labelled with their residual in every table. Partial-equilibrium counterparts repeat the forward simulation with prices fixed at the stationary values. The static-expectations variant solves temporary equilibria period by period with stationary continuation values.1314\subsection{Parameters, grids, tolerances and run times}1516\input{tables/tab02_parameters}171819Grids: liquid assets, 50 points with double-exponential spacing on $[0,15]$; cash on hand, 120 points on $[0,22]$; mortgage balance per unit of house, 20 points on $[0,(1-\theta)p_{\max}]$ with $p_{\max} = 1.6$; four house sizes; five remaining-payment counts; five productivity states; eleven loan fractions; twelve gift fractions; a five-point estate lottery; a consumption floor of 0.01. Units are the average five-year labour income. The baseline stationary equilibrium takes \BaselineSeconds{} seconds, other stationary equilibria 45--300 seconds, a transition 2.5--8 minutes with the Jacobian on eight processes, and the full pipeline \SimulateMinutesOne{} minutes on 18 cores: \NScenariosSS{} stationary general equilibria (\NScenariosSSConverged{} within tolerance; the 24{,}000-dynasty variant stopped at the noise floor), five partial-equilibrium re-solutions, three multiplicity scans, \NTransitions{} transition experiments (\NTransitionsConverged{} within tolerance) and the welfare computations.2021\subsection{Diagnostics}2223\input{tables/tab04_convergence}2425\begin{figure}[htbp]26\centering27\includegraphics[width=\textwidth]{fig12_solver_diagnostics.pdf}28\caption{Solver diagnostics: absolute excess demand after each lottery round in the baseline (a), mean Bellman residuals by scenario (b), and percentage deviations of the key statistics from the baseline under the numerical variants (c). Source: \texttt{results/data/baseline/summary.json}, \texttt{diagnostics.json}, \texttt{grid\_sensitivity.csv}.}29\label{fig:diagnostics}30\end{figure}3132Table~\ref{tab:convergence} and Figure~\ref{fig:diagnostics} report the market-clearing residuals, the lottery convergence, the Bellman residuals at off-grid states, the forced-sale and clipped-policy shares and the numerical variants. Table~\ref{tab:robustness} lists the economic and numerical robustness runs with their equilibrium statistics and run times. Two events during the computation are recorded because they changed the design. A first full run revealed a genuine discontinuity in the rental excess demand, a jump of 1.5\% of rental demand between two adjacent prices in the near-fixed-supply, 5\%-down-payment scenario, caused by atoms of the cash distribution: entrants without a gift and liquidity-constrained renters at the same productivity state hold exactly the same cash and switch tenure together. The remedy was the small unanticipated transitory income component of Section~\ref{sec:computation}, after which the excess-demand functions were continuous and the roots bracketed; the budget identities were re-tested with the realised income. And the cold-start shooting of the real-rate shock under a 5\% down payment diverged (initial residual 0.17); a warm start from the 20\% path and an 80-step damped t\^atonnement followed by a fresh Jacobian brought the residual to $\RateFiveMaxRes$, where Broyden steps were again rejected, so that run is reported as not converged.3334\input{tables/tab09_robustness}35