HARK.dcegm

Functions for working with the discrete-continuous EGM (DCEGM) algorithm as described in “The endogenous grid method for discrete-continuous dynamic choice models with (or without) taste shocks” by Iskhakov et al. (2016) [https://doi.org/10.3982/QE643 and ijrsDCEGM2017 in our Zotero]

Functions

calcMultilineEnvelope(M, C, V_T, commonM) Do the envelope step of the DCEGM algorithm.
calcSegments(x, v) Find index vectors rise and fall such that rise holds the indeces i such that x[i+1]>x[i] and fall holds indeces j such that either - x[j+1] < x[j] or, - x[j]>x[j-1] and v[j]<v[j-1].
main()
HARK.dcegm.calcMultilineEnvelope(M, C, V_T, commonM)

Do the envelope step of the DCEGM algorithm. Takes in market ressources, consumption levels, and inverse values from the EGM step. These represent (m, c) pairs that solve the necessary first order conditions. This function calculates the optimal (m, c, v_t) pairs on the commonM grid.

Parameters:
M : np.array

market ressources from EGM step

C : np.array

consumption from EGM step

V_T : np.array

transformed values at the EGM grid

commonM : np.array

common grid to do upper envelope calculations on

HARK.dcegm.calcSegments(x, v)

Find index vectors rise and fall such that rise holds the indeces i such that x[i+1]>x[i] and fall holds indeces j such that either - x[j+1] < x[j] or, - x[j]>x[j-1] and v[j]<v[j-1].

The vectors are essential to the DCEGM algorithm, as they definite the relevant intervals to be used to construct the upper envelope of potential solutions to the (necessary) first order conditions.

Parameters:
x : np.ndarray

array of points where v is evaluated

v : np.ndarray

array of values of some function of x

Returns:
rise : np.ndarray

see description above

fall : np.ndarray

see description above