Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HH solution first draft #990

Open
wants to merge 2 commits into
base: stochastic_income
Choose a base branch
from

Conversation

john-p-ryan
Copy link

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:

  1. 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.
  2. 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.
  3. 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:

  1. Finish writing tests for each of the new functions
  2. Ensure tax functions are used correctly
  3. 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.

BC_error (array_like): residuals of the household budget constraint"""
c = c_from_n(n, b, p_tilde, r, w, factor, e, z, chi_n, etr_params, mtrx_params, t, j, p, method)
b_splus1 = b_from_c_EOL(c, p_tilde, j, p.sigma, p)
net_tax = tax.net_taxes(r, w, b, n, bq, factor, tr, ubi, theta, t, j, False, method, e, etr_params, p)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be e*z in the arguments to the tax.net_taxes() call?

HH_error (array_like): residuals of the household budget constraint and labor supply Euler equation"""
b = x[0]
n = x[1]
net_tax = tax.net_taxes(r, w, b, n, bq, factor, tr, ubi, theta, t, j, False, method, e, etr_params, p)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be e*z in the arguments to the tax.net_taxes() call?

@jdebacker
Copy link
Member

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants