Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Every solver of Class 16 solves a nonlinear problem in every state on every iteration, a maximization or a root of the Euler equation. The endogenous gridpoint method of Carroll (2006) turns the problem around: fix the choice, and find the state in which it is optimal. For the consumption-savings model this needs no optimization and no root finding at all.

The idea on cake eating

Take the cake eating problem. The first order condition for ctc_t and the envelope theorem,

u′(ct)=βV′(Wt+1),V′(Wt)=βV′(Wt+1),u'(c_t) = \beta V'(W_{t+1}), \qquad V'(W_t) = \beta V'(W_{t+1}),

combine into V′(Wt)=u′(ct)V'(W_t) = u'(c_t) at every tt, and into the Euler equation

1ct=βct+1⇔ct=ct+1β\frac{1}{c_t} = \frac{\beta}{c_{t+1}} \quad\Leftrightarrow\quad c_t = \frac{c_{t+1}}{\beta}

Read it backwards: given what is left for the future, A=W−cA = W - c, and the policy for next period, the Euler equation gives today’s consumption in closed form, and the budget gives the cake size at which that consumption is optimal, W=A+cW = A + c.

Value function iterations and time iterations fix a grid on the state WW and search for the optimal cc at every point. What does the search cost?

The endogenous gridpoint method (EGM) fixes a grid on the post-decision state AA instead, computes cc directly, and lets the grid on the state come out of the computation, endogenously:

There is no maximization and no root finding, only function evaluations. And the Euler equation holds exactly at the endogenous grid points, so the method is as accurate as time iterations at a fraction of the cost.

  • The endogenous grid points WjW_j change from one iteration to the next. Is that not a problem?

  • Which step of the algorithm would need a root finder if the utility function was more complex than log⁡(c)\log(c)?

Consumption-savings with random returns (Phelps)

Cake eating with a return on savings is the model of Phelps (1962). The consumer has no income and invests all savings in an asset with a random return:

Vt(Mt)=max⁡0⩽c⩽Mt{u(c)+β E Vt+1(R~ (Mt−c))},u(c)=cρ−1ρV_t(M_t) = \max_{0 \leqslant c \leqslant M_t} \Big\{ u(c) + \beta\, \mathbb{E}\, V_{t+1}\big(\tilde R\, (M_t - c)\big) \Big\}, \qquad u(c) = \frac{c^\rho - 1}{\rho}

The solution is analytical Hakansson, 1970. With tt periods to go, the policy is linear in wealth:

cT−t(M)=M(∑i=0tKi)−1,K=(β E R~ρ)11−ρc_{T-t}(M) = M \Big( \sum_{i=0}^{t} K^i \Big)^{-1}, \qquad K = \big( \beta\, \mathbb{E}\, \tilde R^{\rho} \big)^{\frac{1}{1-\rho}}

and the value function is a power of wealth:

VT−t(M)=Mρρ(∑i=0tKi)1−ρ−1ρ∑i=0tβiV_{T-t}(M) = \frac{M^\rho}{\rho} \Big( \sum_{i=0}^{t} K^i \Big)^{1-\rho} - \frac{1}{\rho} \sum_{i=0}^{t} \beta^i

In the logarithmic case K→βK \to \beta, so cT−t(M)=M (1−β)/(1−βt+1)c_{T-t}(M) = M\,(1-\beta)/(1-\beta^{t+1}) and VT−t(M)=log⁡(M)∑i=0tβi+KtV_{T-t}(M) = \log(M) \sum_{i=0}^{t} \beta^i + K_t, with KtK_t a constant that depends on the primitives.

As t→∞t \to \infty the policy tends to c(M)=(1−β)Mc(M) = (1-\beta) M, the cake eating solution, whatever the return.

Why is the solution so simple?

  • Is this finite or infinite horizon problem?

  • How does the share of wealth consumed change as the end of the horizon approaches?

  • With log utility the policy does not depend on the distribution of R~\tilde R at all. Why?

EGM for the consumption-savings model (Deaton)

Adding income yy breaks the simple structure: next period wealth R~A+y\tilde R A + y is no longer proportional to savings, the borrowing constraint starts to bind for low wealth.

No closed form solution!

See Carroll & Kimball (1996) for the discussion of all special cases.

In the model of Deaton (1991) the Euler equation holds with an expectation over income, and the post-decision state is savings

A=M−c,A = M - c,
u′(c(M))=βR Ey u′(c(RA+y~))u'\big(c(M)\big) = \beta R\, \mathbb{E}_{y}\, u'\big(c(RA + \tilde{y})\big)

Savings AA determine everything on the right-hand side:

So for a given policy c(⋅)c(\cdot), every value of AA gives one point of the updated policy as a parameterized curve (M(A),c(A))(M(A), c(A)) defined by

{c=(u′)−1(βR Ey u′(c(RA+y~)))M=A+c\begin{cases} c = (u')^{-1}\Big( \beta R\, \mathbb{E}_{y}\, u'\big(c(RA + \tilde{y})\big) \Big) \\[4pt] M = A + c \end{cases}

Let’s stop here for a moment..

Ok, back to consumption and savings..

Let AA be a parameter, and consider the parameterized curve (M,c)(M,c)

{c=(u′)−1(βR Ey u′(cˇ(RA+y~)))M=A+(u′)−1(βR Ey u′(cˇ(RA+y~)))\begin{cases} c = (u')^{-1}\Big( \beta R\, \mathbb{E}_{y}\, u'\big(\check{c}(RA + \tilde{y})\big) \Big) \\[4pt] M = A + (u')^{-1}\Big( \beta R\, \mathbb{E}_{y}\, u'\big(\check{c}(RA + \tilde{y})\big) \Big) \end{cases}

Here cˇ(⋅)\check{c}(\cdot) is the policy from the previous iteration of the backward induction or VFI, and is ``known’', approximated by interpolation on the previous iteration endogenous grid over MM.

With u(c)=log⁡cu(c) = \log c the inverse marginal utility is (u′)−1(x)=1/x(u')^{-1}(x) = 1/x

The expectation can be computed by quadrature, it is then a weighted sum over the income nodes.

The EGM iterations repeat the step, interpolating the points (Mj,cj)(M_j, c_j) into the policy for the next step, until the policy stops changing.

In a finite horizon model the same step runs backward in time. The last period policy is cT(M)=Mc_T(M) = M, and each EGM step returns the policy one period earlier. Starting the infinite horizon iterations from c0(M)=Mc_0(M) = M is the same backward induction, so iteration ii is the policy ii periods before the end.

The figure below shows the first iterations on a grid of only five points, starting from the policy c0(M)=Mc_0(M) = M, defined by two points: the consumer eats everything.

Source
<Figure size 1400x420 with 3 Axes>

Each iteration produces five points of the policy, and the points move: the grid on MM is a product of the iteration, while the grid on AA stays put.

Corner solutions

The EGM step uses the Euler equation, which holds only at interior solutions!

The constraint 0⩽c⩽M0 \leqslant c \leqslant M needs separate care.

So, to enforce the constraint, we simply ensure that the exogenous grid on AA satisfies A⩾0A \geqslant 0.

  • What does EGM step return for A=0A=0?

Many but unfortunately not all application are subject to the following theorem

The EGM step at A1=0A_1 = 0 gives the largest wealth at which saving nothing is optimal,

M1=(u′)−1(βR Ey u′(c(y~))),M_1 = (u')^{-1}\Big( \beta R\, \mathbb{E}_{y}\, u'\big(c(\tilde{y})\big) \Big),

and for every M<M1M < M_1 the consumer must also save nothing: the constraint binds and c(M)=Mc(M) = M.

In the code this is one extra point at the origin, (M,c)=(0,0)(M, c) = (0, 0): linear interpolation between it and (M1,c1)(M_1, c_1) is exactly the 45-degree segment c=Mc = M.

The kink of the policy is located exactly, at an endogenous grid point, and not smeared between two points of a fixed grid as with VFI or time iterations.

This greatly benefits the accuracy of EGM for all the cases where the wealth level in the data/simulation is near the kink of the policy function.

Source
<Figure size 1400x420 with 3 Axes>

With income, the consumer with little wealth eats all of it and waits for the next paycheck, and the policy has a kink where the constraint stops binding. Without the point at the origin, the interpolated policy below M1M_1 would be an extrapolation of the interior solution, and the consumer would be allowed to borrow.

  • Why does the grid on savings start at A=0A = 0, and what would a grid point A<0A < 0 mean?

  • The kink of the policy at M1M_1 moves from one iteration to the next. How do VFI and time iterations on a fixed grid represent such a kink?

Implementation and comparison

The EGM solver for the stochastic model is a few lines, fully vectorized: savings along the first axis, income nodes along the second, and the expectation as a product with the weights. It uses the model object and the tools of Class 16, from the module deaton.py.

Source

The policy is returned on the fixed state grid of the model, so all four solvers can be compared with the same Euler residuals.

The experiments below use the defaults of the model object of Class 16, unless stated otherwise:

discount factorβ=0.9\beta = 0.9
gross returnR=1.05R = 1.05
incomelog-normal, log⁡y~∼N(0,σ2)\log \tilde y \sim N(0, \sigma^2), σ=0.5\sigma = 0.5
utilityu(c)=log⁡cu(c) = \log c
state grid100 equally spaced points on (0,M‾](0, \overline{M}], M‾=10\overline{M} = 10
choice grid, discretized VFI250 shares of wealth on (0,1](0, 1]
savings grid, EGM100 equally spaced points on [0,M‾][0, \overline{M}]
quadrature10 Gauss–Hermite nodes, the default of deaton.py (quad='legendre' gives Gauss–Legendre on the CDF, as in Class 16)
tolerance10-4 for the convergence plots, 10-12 for the comparisons
grid sizes in the comparisons6 sizes from 50 to 500 points, equally spaced in logs, on the state grid, and the same number on the savings grid of EGM; the choice grid stays at 250
Phelps testno income, R=1.05R = 1.05

Convergence of the four solvers

The figure shows every iteration of the four solvers on the model of Class 16, from consuming everything to convergence at the tolerance 10-4, darker to lighter.

Source
<Figure size 1400x1000 with 4 Axes>

All four arrive at the same policy. VFI needs 63 iterations, at the rate β\beta of the contraction of the Bellman operator, time iterations and EGM about 26. An EGM iteration is also the cheapest: no optimizer and no root finder, only interpolation and arithmetic.

Accuracy and speed as the grid grows

Each solver now runs on 6 grids from 50 to 500 points with the tight tolerance 10-12, so that what we measure is the error of the grid and not of the stopping rule. The figure shows the Euler residuals and the run time on the model with income risk, σ=0.5\sigma = 0.5. A solver that does not reach the tolerance within 2000 iterations would be left out of the plot for that grid.

Source
<Figure size 1200x1000 with 2 Axes>

EGM is as accurate as time iterations, the most accurate of the earlier solvers, at a tiny fraction of the cost. All of the speed comes from replacing the search in every state by a closed-form inversion of the Euler equation.

How EGM compares to the analytical solution

The deterministic Phelps model with log utility, no income and a fixed return RR has the analytical policy c(M)=(1−β)Mc(M) = (1-\beta) M in the infinite horizon. The model object of Class 16 covers it once the income nodes are set to zero. The table reports the largest absolute difference between the EGM policy and the analytical one on the grid.

Source
 grid   max |c(M) - (1 - beta) M|
   50                    8.45e-12
   79                    8.45e-12
  126                    8.45e-12
  199                    8.45e-12
  315                    8.45e-12
  500                    8.45e-12

EGM reproduces the analytical policy to about 10-11 on every grid, the precision of the stopping rule, not of the grid. The policy is linear in wealth, and linear interpolation reproduces it without error.

The class of models EGM solves

EGM in this form solves problems with one continuous state, wealth MM, one continuous choice, consumption cc, and possibly exogenous states ss:

V(M,s)=max⁡0⩽c⩽M{u(c)+β E[V(M′,s′) ∣ s]},A=M−c,M′=f(A,s′,ξ~′)V(M, s) = \max_{0 \leqslant c \leqslant M} \Big\{ u(c) + \beta\, \mathbb{E}\big[ V(M', s') \,\big|\, s \big] \Big\}, \qquad A = M - c, \qquad M' = f(A, s', \tilde\xi')

with the following properties:

Under these properties the Euler equation can be inverted at any point AA of a grid, without root finding:

c=(u′)−1(β E[fA(A,s′,ξ~′)  u′(c(f(A,s′,ξ~′),s′)) ∣ s]),M=A+cc = (u')^{-1}\Big( \beta\, \mathbb{E}\big[ f_A(A, s', \tilde\xi')\; u'\big(c(f(A, s', \tilde\xi'), s')\big) \,\big|\, s \big] \Big), \qquad M = A + c

Additional state variables are fine if they evolve exogenously, or as functions of AA rather than of MM or cc. The class is small, but it includes many workhorse models of micro and macro economics, and within it EGM is by far the best available method.

The general theory of EGM:

Where it breaks:

  • Which features of the Rust bus engine model of Class 9 rule out EGM?

  • A model has wealth and human capital, both continuous. What happens to the endogenous grid?

Bout would it not be great if we could avoid root finding in multidimensional problems too?..

Interpolation on irregular grids

Even when the Euler equations can be inverted, a second problem remains, and it is the fundamental one. In one dimension the endogenous grid is just a sorted set of points, and interpolating on it is as easy as on a fixed grid. In several dimensions it is not a grid at all in the usual sense:

An endogenous grid in a two-dimensional model where the points come from a rectangular grid on the post-decision
states.

An endogenous grid in a two-dimensional model where the points come from a rectangular grid on the post-decision states.

The literature suggests several remedies:

PaperSuggested remedy
Barillas & Fernández-Villaverde (2007)avoid the irregular grid: EGM in one choice, value function iterations in the others
Brumm & Grill (2014)Delaunay triangulation of the endogenous points, linear interpolation within each triangle
Ludwig & Schön (2018)Delaunay interpolation and hybrid methods compared; the cost of the triangulation can offset the speed of EGM
White (2015)use the index structure inherited from the rectangular grid: locate the cell by a visibility walk, map it to the unit square, interpolate multilinearly
Druedahl & Jørgensen (2017)re-interpolate on a regular grid while performing the upper envelope step
Lujan (2026)interpolate in the index coordinates of the endogenous grid, with no triangulation
  • Why is locating the cell trivial on a rectangular grid, and what is its cost on an irregular one with nn points?

  • Which of the approaches still works if the endogenous points cross each other, so that neighboring cells overlap?

Several continuous choices without rootfinding: multidimensional EGM

A model of wealth and health, or of liquid and illiquid assets, has several continuous states and several continuous choices. EGM carries over without root finding when the problem is triangular Iskhakov, 2015Iskhakov, 2017: the Euler equations can be solved one at a time, each by an analytical inversion.

Take a triangular example in R3\mathbb{R}^3:

Vt(Mt)=max⁡c[u(c)+β E{Vt+1(Mt+1) ∣ Mt,c}]V_t(M_t)=\max_{c}\Big[u(c)+\beta\, \mathbb{E}\big\{V_{t+1}(M_{t+1})\,\big|\,M_t,c\big\}\Big]

The plan: apply the EGM ideas to discover the necessary assumptions on the fundamentals of the problem that make it possible, abstracting away from the budget constraint and other feasibility restrictions.

Post-decision states

We have already assumed that

Mt+1=f(At,R~)=f(g(Mt,ct),R~),M_{t+1} = f\big(A_t, \tilde R\big) = f\big(g(M_t, c_t), \tilde R\big),

which allows replacing the condition in the expectation in the Bellman equation:

E{Vt+1(Mt+1) ∣ Mt,ct}=E{Vt+1(Mt+1) ∣ At}\mathbb{E}\big\{V_{t+1}(M_{t+1})\,\big|\,M_t, c_t\big\} = \mathbb{E}\big\{V_{t+1}(M_{t+1})\,\big|\,A_t\big\}

The post-decision states AtA_t are sufficient statistics for (Mt,ct)(M_t, c_t).

The corrigendum Iskhakov, 2017 completes the condition: the partial derivatives of gg with respect to the choices must depend on the period tt variables only through the post-decision states, so that the Euler equations below can be evaluated at a point of the grid on AtA_t.

Bellman optimization, first order and envelope conditions

With the inter-temporal evolution written out by component, the Bellman equation is

Vt(Mt)=max⁡c[u(c)+β E{Vt+1(f1(At1,At2,At3,R~)f2(At1,At2,At3,R~)f3(At1,At2,At3,R~))∣At}]V_t(M_t)= \max_{c}\left[u(c)+\beta\, \mathbb{E} \left\{\left.V_{t+1}\begin{pmatrix} f^1(A_t^1,A_t^2,A_t^3,\tilde{R})\\ f^2(A_t^1,A_t^2,A_t^3,\tilde{R})\\ f^3(A_t^1,A_t^2,A_t^3,\tilde{R}) \end{pmatrix}\right|A_t\right\}\right]

The first order conditions are

u1′(c)+β E∑i=13∑j=13(Vt+1)i′ (fi)j′ (∂gj/∂c1)=0u2′(c)+β E∑i=13∑j=23(Vt+1)i′ (fi)j′ (∂gj/∂c2)=0u3′(c)+β E∑i=13(Vt+1)i′ (fi)3′ (∂g3/∂c3)=0\begin{aligned} u'_1(c) + \beta\, \mathbb{E} \sum_{i=1}^3 \sum_{j=1}^3 (V_{t+1})'_i\, (f^i)'_j\, (\partial g^j/\partial c^1) &= 0\\ u'_2(c) + \beta\, \mathbb{E} \sum_{i=1}^3 \sum_{j=2}^3 (V_{t+1})'_i\, (f^i)'_j\, (\partial g^j/\partial c^2) &= 0\\ u'_3(c) + \beta\, \mathbb{E} \sum_{i=1}^3 (V_{t+1})'_i\, (f^i)'_3\, (\partial g^3/\partial c^3) &= 0 \end{aligned}

and the envelope conditions are

(Vt)1′=β E∑i=13∑j=13(Vt+1)i′ (fi)j′ (∂gj/∂Mt1)(Vt)2′=β E∑i=13∑j=23(Vt+1)i′ (fi)j′ (∂gj/∂Mt2)(Vt)3′=β E∑i=13(Vt+1)i′ (fi)3′ (∂g3/∂Mt3)\begin{aligned} (V_t)'_1 &= \beta\, \mathbb{E} \sum_{i=1}^3 \sum_{j=1}^3 (V_{t+1})'_i\, (f^i)'_j\, (\partial g^j/\partial M_t^1)\\ (V_t)'_2 &= \beta\, \mathbb{E} \sum_{i=1}^3 \sum_{j=2}^3 (V_{t+1})'_i\, (f^i)'_j\, (\partial g^j/\partial M_t^2)\\ (V_t)'_3 &= \beta\, \mathbb{E} \sum_{i=1}^3 (V_{t+1})'_i\, (f^i)'_3\, (\partial g^3/\partial M_t^3) \end{aligned}

Combining these with the first order conditions, we have

u3′(ct)=−∂g3/∂c3∂g3/∂Mt3 (Vt)3′u2′(ct)−u3′(ct)=−∂g2/∂c2∂g2/∂Mt2[(Vt)2′−(Vt)3′]u1′(ct)−u2′(ct)=−∂g1/∂c1∂g1/∂Mt1[(Vt)1′−(Vt)2′]\begin{aligned} u'_3(c_t) &= - \frac{\partial g^3/\partial c^3}{\partial g^3/\partial M_t^3}\, (V_t)'_3\\ u'_2(c_t) - u'_3(c_t) &= - \frac{\partial g^2/\partial c^2}{\partial g^2/\partial M_t^2} \Big[(V_t)'_2 - (V_t)'_3\Big]\\ u'_1(c_t) - u'_2(c_t) &= - \frac{\partial g^1/\partial c^1}{\partial g^1/\partial M_t^1} \Big[(V_t)'_1 - (V_t)'_2\Big] \end{aligned}

The system of Euler equations

The partial derivatives of the value function (Vt)i′(V_t)'_i are now expressed as linear functions of the marginal utilities Lt[u′(ct)]\mathcal{L}_{t}[u'(c_t)], with coefficients given by the partial derivatives of the functions gi(∙)g^i(\bullet). In period t+1t+1 they give the system of Euler equations

u1′(ct1,ct2,ct3)=β E∑i=13∑j=13Lt+1[u′(ct+1)] (fi)j′ (∂gj/∂c1)u2′(ct1,ct2,ct3)=β E∑i=13∑j=23Lt+1[u′(ct+1)] (fi)j′ (∂gj/∂c2)u3′(ct1,ct2,ct3)=β E∑i=13Lt+1[u′(ct+1)] (fi)3′ (∂g3/∂c3)\begin{aligned} u'_1(c_t^1,c_t^2,c_t^3) &= \beta\, \mathbb{E} \sum_{i=1}^3 \sum_{j=1}^3 \mathcal{L}_{t+1}[u'(c_{t+1})]\, (f^i)'_j\, (\partial g^j/\partial c^1)\\ u'_2(c_t^1,c_t^2,c_t^3) &= \beta\, \mathbb{E} \sum_{i=1}^3 \sum_{j=2}^3 \mathcal{L}_{t+1}[u'(c_{t+1})]\, (f^i)'_j\, (\partial g^j/\partial c^2)\\ u'_3(c_t^1,c_t^2,c_t^3) &= \beta\, \mathbb{E} \sum_{i=1}^3 \mathcal{L}_{t+1}[u'(c_{t+1})]\, (f^i)'_3\, (\partial g^3/\partial c^3) \end{aligned}

Sufficient conditions for EGM to be applicable

The proof is constructive: follow the EGM step for a grid imposed over the post-decision state space.

None of the steps searches. What remains costly is what the method does not remove:

Interpolation and other multidimensional generalizations

The irregular endogenous grid, and the conditions under which the Euler system can be inverted at all, are what the literature on multidimensional EGM works on:

PaperIdea
Barillas & Fernández-Villaverde (2007)EGM in one choice, value function iterations in the rest
Hintermaier & Koeniger (2010)occasionally binding constraints among several endogenous states, via Kuhn–Tucker conditions
Brumm & Grill (2014), Ludwig & Schön (2018)Delaunay triangulation for interpolation on the irregular grid; its cost can offset the speed of EGM
White (2015)general theory, an invertibility condition, and interpolation that uses the order of the endogenous points
Iskhakov (2015)the class of triangular problems solvable without root finding
Druedahl & Jørgensen (2017)non-convexities and constraints, re-interpolating on a regular grid during an upper envelope step
Lujan (2026)a choice in several dimensions as a sequence of one-dimensional choices
Hallengreen et al. (2024)EGM when the inverse marginal utility has no closed form

Two of these ideas are worth seeing in detail.

  • Which conditions of the definition of a triangular problem does the sequential formulation satisfy by construction?

  • Which is cheaper in two dimensions: Delaunay triangulation of the endogenous grid, or a root finder in every point of a regular grid?

References
  1. Carroll, C. D. (2006). The method of endogenous gridpoints for solving dynamic stochastic optimization problems. Economics Letters, 91(3), 312–320. 10.1016/j.econlet.2005.09.013
  2. Phelps, E. S. (1962). The accumulation of risky capital: A sequential utility analysis. Econometrica, 30(4), 729–743. 10.2307/1909322
  3. Hakansson, N. H. (1970). Optimal investment and consumption strategies under risk for a class of utility functions. Econometrica, 38(5), 587–607. 10.2307/1912196
  4. Carroll, C. D., & Kimball, M. S. (1996). On the concavity of the consumption function. Econometrica, 64(4), 981–992. 10.2307/2171853
  5. Deaton, A. (1991). Saving and Liquidity Constraints. Econometrica, 59(5), 1221–1248. 10.2307/2938366
  6. White, M. N. (2015). The method of endogenous gridpoints in theory and practice. Journal of Economic Dynamics and Control, 60, 26–41. 10.1016/j.jedc.2015.08.001
  7. Druedahl, J., & Jørgensen, T. H. (2017). A general endogenous grid method for multi-dimensional models with non-convexities and constraints. Journal of Economic Dynamics and Control, 74, 87–107. 10.1016/j.jedc.2016.11.005
  8. Iskhakov, F. (2015). Multidimensional endogenous gridpoint method: Solving triangular dynamic stochastic optimization problems without root-finding operations. Economics Letters, 135, 72–76. 10.1016/j.econlet.2015.07.033
  9. Fella, G. (2014). A generalized endogenous grid method for non-smooth and non-concave problems. Review of Economic Dynamics, 17(2), 329–344. 10.1016/j.red.2013.07.001
  10. Iskhakov, F., Jørgensen, T., Rust, J., & Schjerning, B. (2017). The endogenous grid method for discrete-continuous dynamic choice models with (or without) taste shocks. Quantitative Economics, 8(2), 317–365. https://doi.org/10.3982/QE643
  11. Barillas, F., & Fernández-Villaverde, J. (2007). A generalization of the endogenous grid method. Journal of Economic Dynamics and Control, 31(8), 2698–2712. 10.1016/j.jedc.2006.08.005
  12. Brumm, J., & Grill, M. (2014). Computing equilibria in dynamic models with occasionally binding constraints. Journal of Economic Dynamics and Control, 38, 142–160. 10.1016/j.jedc.2013.09.007
  13. Ludwig, A., & Schön, M. (2018). Endogenous Grids in Higher Dimensions: Delaunay Interpolation and Hybrid Methods. Computational Economics, 51(3), 463–492. 10.1007/s10614-016-9611-2
  14. Lujan, A. (2026). The Sequential Endogenous Grid Method. Journal of Economic Dynamics and Control, 105442. 10.1016/j.jedc.2026.105442
  15. Iskhakov, F. (2017). Corrigendum to “Multidimensional endogenous gridpoint method: Solving triangular dynamic stochastic optimization problems without root-finding operations” [Econom. Lett. 135 (2015) 72–76]. Economics Letters, 150, 26. 10.1016/j.econlet.2016.11.002