This adds a first draft of the household problem solution with stochastic income shocks using EGM.
A few notes about the solution method and modeling choices:
At the end of life, the household solution boils down to 1 variable in 1 unknown to be solved numerically if solved forwards. That is, for each point in the capital and productivity grid, we make a guess of labor supply (which is known to be in the compact interval $[0, \tilde{l} ]$). We then infer consumption from labor using the labor supply Euler equation. Lastly, the bequests left at the end of life are solved using the end of life savings Euler equation. This implies a residual in the budget constraint, for which a root is solved numerically.
The rest of the life cycle, the household solution is a system of 2 equations in 2 unknowns to be solved numerically and using the endogenous grid method. This takes savings one period ahead and productivity as given, and for each point in the capital and productivity grid, we solve for current period consumption using the savings Euler equation and policy functions in the next period. Then, we make a guess of current period assets and labor supply, which implies a residual in the labor supply FOC and budget constraint, which is solved numerically. Using the solution, we interpolate across the asset grid to recover current period policy functions.
Currently, this solution keeps the Elliptical disutility of labor supply and CRRA bequest motive as they maintain their computational advantage since you don't have to check for binding constraints and resolve when some constraints are binding (borrowing constraint without CRRA bequest, labor supply endowment with Frisch disutility). This can be relaxed later.
There is still much to do. Current priorities as follows:
Finish writing tests for each of the new functions
Ensure tax functions are used correctly
Ensure dimensions are correct when on transition path vs steady state
After these are finished, we can move on to incorporating this solution into aggregates.py, SS.py and TPI.py.
@john-p-ryan In the updated to household.py, I am finding all uses of the tax module functions correct (other than the two issues noted above re labor productivity in the net taxes calculation.
This adds a first draft of the household problem solution with stochastic income shocks using EGM.
A few notes about the solution method and modeling choices:
There is still much to do. Current priorities as follows:
After these are finished, we can move on to incorporating this solution into
aggregates.py
,SS.py
andTPI.py
.