This is a collection of codes that solve a number of heterogeneous agent models in continuous time using finite difference methods

1. Huggett Model (from Achdou et al., 2014): Explanation of Algorithm

HJB equation, explicit method (Section 1.1): HJB_stateconstraint_explicit.m

HJB equation, implicit method (Section 1.2): HJB_stateconstraint_implicit.m

KFE Equation (Section 2, using matrix from HJB implicit method): huggett_partialeq.m

Plotting the asset supply function (Section 3.1): huggett_asset_supply.m

Finding the equilibrium interest rate (Section 3.2): huggett_equilibrium_iterate.m

HJB equation with diffusion, implicit method (section 4.1): HJB_diffusion_implicit.m

KFE Equation (Section 4.2, using HJB matrix): huggett_diffusion_partialeq.m

Transition Dynamics (Section 5): huggett_transition.m, huggett_initial.m, huggett_terminal.m

2. Aiyagari Model (from Achdou et al., 2014): Explanation of Algorithm

Stationary Equilibrium with Poisson Process: aiyagari_poisson_steadystate.m

Steady State Asset Supply Function with Poisson Process: aiyagari_poisson_asset_supply.m

"MIT Shock" with Poisson Income Process: aiyagari_poisson_MITshock.m

Stationary Eq. with Diffusion (Section 6.1, courtesy of Galo Nuno): aiyagari_diffusion_equilibrium.m
Julia version of code: aiyagari_diffusion_equilibrium.jl (download Juno for nice GUI)
C++ version of code: aiyagari_diffusion_equilibrium.cpp (instructions for Mac users, makefile)

Transition Dynamics with Diffusion (Section 6.2): aiyagari_diffusion_transition.m
Julia code for MIT Shock with Diffusion (courtesy of Matthieu Gomez): aiyagari_diffusion_MITshock.jl

Make movie of evolution of wealth distribution (Section 6.4): make_movie.m

Aiyagari Model with Fat-tailed Wealth Distribution (Section 8): fat_tail_partialeq.m, uses non-uniform grid as explained in Section 7.

3. Model with Two Assets and Nonconvex Adjustment Costs: Description of Model and Algorithm

Partial Equilibrium: two_asset_nonconvex.m
Subroutines: two_asset_nonconvex_cost.m, two_asset_nonconvex_FOC.m

4. Handling Non-Convexities I: Neoclassical Growth Model with Convex-Concave Production Function (Skiba, 1978). Description of Model and Algorithm

Finding the "Skiba point": HJB_NGM_skiba.m

5. Handling Non-Convexities II: Entrepreneurship and Financial Frictions. Description of Model and Algorithm

Stationary Equilibrium: entrepreneurs.m

6. Stopping Time Problem with Liquid and Illiquid Assets and Fixed Adjustment Costs: Description of Model and Algorithm

Partial Equilibrium: liquid_illiquid.m, Interpolation routine: lininterp1.m

7. Additional Codes: Explanation of Algorithm

No uncertainty, explicit method (Section 1.1): HJB_simple.m, HJB_no_uncertainty_explicit.m

No uncertainty, implicit method (Section 1.2): HJB_no_uncertainty_implicit.m

Neoclassical Growth Model, explicit method (Section 2.1): HJB_NGM.m

Neoclassical Growth Model, implicit method (Section 2.2): HJB_NGM_implicit.m

8. Matthieu Gomez's GitHub Repository with great Julia codes, including the Bansal-Yaron (2004) Long-Run Risk Model

9. Perturbation methods for heterogeneous agent models with aggregate shocks: Notes, Codes

Old codes for Huggett Model without using Matlab's sparse matrix routines (slower):