# 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]
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 rise : np.ndarray see description above fall : np.ndarray see description above