diff --git a/Documentation/CHANGELOG.md b/Documentation/CHANGELOG.md index 53e53eb8f..a9f53ac19 100644 --- a/Documentation/CHANGELOG.md +++ b/Documentation/CHANGELOG.md @@ -8,6 +8,18 @@ For more information on HARK, see [our Github organization](https://github.com/e ## Changes +### 0.15.1 (in development) + +Release Date: TBD + +#### Major Changes + +none yet + +#### Minor Changes + +- Adds example of integration of HARK with SSJ toolkit. [#1447](https://github.com/econ-ark/HARK/pull/1447) + ### 0.15.0 Release Date: June 4, 2024 @@ -16,7 +28,7 @@ Note: Due to major changes on this release, you may need to adjust how AgentType This release drops support for Python 3.8 and 3.9, consistent with SPEC 0, and adds support for Python 3.11 and 3.12. We expect that all HARK features still work with the older versions, but they are no longer part of our testing regimen. -### Major Changes +#### Major Changes - Drop official support for Python 3.8 and 3.9, add support for 3.11 and 3.12. [#1415](https://github.com/econ-ark/HARK/pull/1415) - Replace object-oriented solvers with single function versions. [#1394](https://github.com/econ-ark/HARK/pull/1394) @@ -28,7 +40,7 @@ This release drops support for Python 3.8 and 3.9, consistent with SPEC 0, and a - Such constructed inputs can use alternate parameterizations / formats by changing the `constructor` function and providing its arguments in `parameters`. - Move `HARK.datasets` to `HARK.Calibration` for better organization of data and calibration tools. [#1430](https://github.com/econ-ark/HARK/pull/1430) -### Minor Changes +#### Minor Changes - Add option to pass pre-built grid to `LinearFast`. [#1388](https://github.com/econ-ark/HARK/pull/1388) - Moves calculation of stable points out of ConsIndShock solver, into method called by post_solve [#1349](https://github.com/econ-ark/HARK/pull/1349) diff --git a/HARK/Calibration/Income/IncomeProcesses.py b/HARK/Calibration/Income/IncomeProcesses.py index 82fd021e1..1221207b4 100644 --- a/HARK/Calibration/Income/IncomeProcesses.py +++ b/HARK/Calibration/Income/IncomeProcesses.py @@ -122,6 +122,61 @@ def __init__(self, sigma, UnempPrb, IncUnemp, n_approx, seed=0): super().__init__(pmv=dstn_approx.pmv, atoms=dstn_approx.atoms, seed=seed) +class MixtureTranIncShk_HANK(DiscreteDistribution): + """ + A one-period distribution for transitory income shocks that are a mixture + between a log-normal and a single-value unemployment shock. This version + has additional parameters that makes it useful for HANK models. + + Parameters + ---------- + sigma : float + Standard deviation of the log-shock. + UnempPrb : float + Probability of the "unemployment" shock. + IncUnemp : float + Income shock in the "unemployment" state. + n_approx : int + Number of points to use in the discrete approximation. + tax_rate : float + Flat tax rate on labor income. + labor : float + Intensive margin labor supply. + wage : float + Wage rate scaling factor. + seed : int, optional + Random seed. The default is 0. + Returns + ------- + TranShkDstn : DiscreteDistribution + Transitory income shock distribution. + """ + + def __init__( + self, + sigma, + UnempPrb, + IncUnemp, + n_approx, + wage, + labor, + tax_rate, + seed=0, + ): + dstn_approx = MeanOneLogNormal(sigma).discretize( + n_approx if sigma > 0.0 else 1, method="equiprobable", tail_N=0 + ) + + if UnempPrb > 0.0: + dstn_approx = add_discrete_outcome_constant_mean( + dstn_approx, p=UnempPrb, x=IncUnemp + ) + # Rescale the transitory shock values to account for new features + TranShkMean_temp = (1.0 - tax_rate) * labor * wage + dstn_approx.atoms *= TranShkMean_temp + super().__init__(pmv=dstn_approx.pmv, atoms=dstn_approx.atoms, seed=seed) + + class BufferStockIncShkDstn(DiscreteDistributionLabeled): """ A one-period distribution object for the joint distribution of income @@ -178,7 +233,6 @@ def __init__( IncUnemp=IncUnemp, n_approx=n_approx_Tran, ) - joint_dstn = combine_indep_dstns(perm_dstn, tran_dstn) super().__init__( @@ -190,6 +244,85 @@ def __init__( ) +class IncShkDstn_HANK(DiscreteDistributionLabeled): + """ + A one-period distribution object for the joint distribution of income + shocks (permanent and transitory), as modeled in the Buffer Stock Theory + paper: + - Lognormal, discretized permanent income shocks. + - Transitory shocks that are a mixture of: + - A lognormal distribution in normal times. + - An "unemployment" shock. + + This version has additional features that make it particularly useful for HANK models. + + Parameters + ---------- + sigma_Perm : float + Standard deviation of the log- permanent shock. + sigma_Tran : float + Standard deviation of the log- transitory shock. + n_approx_Perm : int + Number of points to use in the discrete approximation of the permanent shock. + n_approx_Tran : int + Number of points to use in the discrete approximation of the transitory shock. + UnempPrb : float + Probability of the "unemployment" shock. + IncUnemp : float + Income shock in the "unemployment" state. + tax_rate : float + Flat tax rate on labor income. + labor : float + Intensive margin labor supply. + wage : float + Wage rate scaling factor. + neutral_measure : Bool, optional + Whether to use Harmenberg's permanent-income-neutral measure. The default is False. + seed : int, optional + Random seed. The default is 0. + Returns + ------- + IncShkDstn : DiscreteDistribution + Income shock distribution. + """ + + def __init__( + self, + sigma_Perm, + sigma_Tran, + n_approx_Perm, + n_approx_Tran, + UnempPrb, + IncUnemp, + tax_rate, + labor, + wage, + neutral_measure=False, + seed=0, + ): + perm_dstn = LognormPermIncShk( + sigma=sigma_Perm, n_approx=n_approx_Perm, neutral_measure=neutral_measure + ) + tran_dstn = MixtureTranIncShk_HANK( + sigma=sigma_Tran, + UnempPrb=UnempPrb, + IncUnemp=IncUnemp, + n_approx=n_approx_Tran, + wage=wage, + labor=labor, + tax_rate=tax_rate, + ) + joint_dstn = combine_indep_dstns(perm_dstn, tran_dstn) + + super().__init__( + name="HANK", + var_names=["PermShk", "TranShk"], + pmv=joint_dstn.pmv, + atoms=joint_dstn.atoms, + seed=seed, + ) + + ############################################################################### @@ -307,6 +440,143 @@ def construct_lognormal_income_process_unemployment( return IncShkDstn +def construct_HANK_lognormal_income_process_unemployment( + T_cycle, + PermShkStd, + PermShkCount, + TranShkStd, + TranShkCount, + T_retire, + UnempPrb, + IncUnemp, + UnempPrbRet, + IncUnempRet, + tax_rate, + labor, + wage, + RNG, + neutral_measure=False, +): + """ + Generates a list of discrete approximations to the income process for each + life period, from end of life to beginning of life. Permanent shocks are mean + one lognormally distributed with standard deviation PermShkStd[t] during the + working life, and degenerate at 1 in the retirement period. Transitory shocks + are mean one lognormally distributed with a point mass at IncUnemp with + probability UnempPrb while working; they are mean one with a point mass at + IncUnempRet with probability UnempPrbRet. Retirement occurs after t=T_retire + periods of working. + + This version of the function incorporates additional flexibility with respect + to transitory income (continuous labor supply, wage rate, tax rate) and thus + is useful in HANK models (hence the name!). + + Note 1: All time in this function runs forward, from t=0 to t=T + + Note 2: All parameters are passed as attributes of the input parameters. + + Parameters (passed as attributes of the input parameters) + ---------- + PermShkStd : [float] + List of standard deviations in log permanent income uncertainty during + the agent's life. + PermShkCount : int + The number of approximation points to be used in the discrete approxima- + tion to the permanent income shock distribution. + TranShkStd : [float] + List of standard deviations in log transitory income uncertainty during + the agent's life. + TranShkCount : int + The number of approximation points to be used in the discrete approxima- + tion to the permanent income shock distribution. + UnempPrb : float or [float] + The probability of becoming unemployed during the working period. + UnempPrbRet : float or None + The probability of not receiving typical retirement income when retired. + T_retire : int + The index value for the final working period in the agent's life. + If T_retire <= 0 then there is no retirement. + IncUnemp : float or [float] + Transitory income received when unemployed. + IncUnempRet : float or None + Transitory income received while "unemployed" when retired. + tax_rate : [float] + List of flat tax rates on labor income, age-varying. + labor : [float] + List of intensive margin labor supply, age-varying. + wage : [float] + List of wage rate scaling factors, age-varying. + T_cycle : int + Total number of non-terminal periods in the consumer's sequence of periods. + + Returns + ------- + IncShkDstn : [distribution.Distribution] + A list with T_cycle elements, each of which is a + discrete approximation to the income process in a period. + PermShkDstn : [[distribution.Distributiony]] + A list with T_cycle elements, each of which + a discrete approximation to the permanent income shocks. + TranShkDstn : [[distribution.Distribution]] + A list with T_cycle elements, each of which + a discrete approximation to the transitory income shocks. + """ + if T_retire > 0: + normal_length = T_retire + retire_length = T_cycle - T_retire + else: + normal_length = T_cycle + retire_length = 0 + + if all( + [ + isinstance(x, (float, int)) or (x is None) + for x in [UnempPrb, IncUnemp, UnempPrbRet, IncUnempRet] + ] + ): + UnempPrb_list = [UnempPrb] * normal_length + [UnempPrbRet] * retire_length + IncUnemp_list = [IncUnemp] * normal_length + [IncUnempRet] * retire_length + + elif all([isinstance(x, list) for x in [UnempPrb, IncUnemp]]): + UnempPrb_list = UnempPrb + IncUnemp_list = IncUnemp + + else: + raise Exception( + "Unemployment must be specified either using floats for UnempPrb," + + "IncUnemp, UnempPrbRet, and IncUnempRet, in which case the " + + "unemployment probability and income change only with retirement, or " + + "using lists of length T_cycle for UnempPrb and IncUnemp, specifying " + + "each feature at every age." + ) + + PermShkCount_list = [PermShkCount] * normal_length + [1] * retire_length + TranShkCount_list = [TranShkCount] * normal_length + [1] * retire_length + neutral_measure_list = [neutral_measure] * len(PermShkCount_list) + + IncShkDstn = IndexDistribution( + engine=IncShkDstn_HANK, + conditional={ + "sigma_Perm": PermShkStd, + "sigma_Tran": TranShkStd, + "n_approx_Perm": PermShkCount_list, + "n_approx_Tran": TranShkCount_list, + "neutral_measure": neutral_measure_list, + "UnempPrb": UnempPrb_list, + "IncUnemp": IncUnemp_list, + "wage": wage, + "tax_rate": tax_rate, + "labor": labor, + }, + RNG=RNG, + ) + + return IncShkDstn + + +############################################################################### + + def get_PermShkDstn_from_IncShkDstn(IncShkDstn, RNG): PermShkDstn = [ this.make_univariate(0, seed=RNG.integers(0, 2**31 - 1)) for this in IncShkDstn diff --git a/HARK/ConsumptionSaving/ConsIndShockModel.py b/HARK/ConsumptionSaving/ConsIndShockModel.py index 7d6a84a1d..b61da4929 100644 --- a/HARK/ConsumptionSaving/ConsIndShockModel.py +++ b/HARK/ConsumptionSaving/ConsIndShockModel.py @@ -57,15 +57,7 @@ CRRAutilityPP, UtilityFuncCRRA, ) -from HARK.utilities import ( - make_assets_grid, - gen_tran_matrix_1D, - gen_tran_matrix_2D, - jump_to_grid_1D, - jump_to_grid_2D, - make_grid_exp_mult, -) -from scipy import sparse as sp +from HARK.utilities import make_assets_grid from scipy.optimize import newton from HARK import ( @@ -2058,684 +2050,6 @@ def get_shocks(self): self.shocks["PermShk"] = PermShkNow self.shocks["TranShk"] = TranShkNow - def define_distribution_grid( - self, - dist_mGrid=None, - dist_pGrid=None, - m_density=0, - num_pointsM=None, - timestonest=None, - num_pointsP=55, - max_p_fac=30.0, - ): - """ - Defines the grid on which the distribution is defined. Stores the grid of market resources and permanent income as attributes of self. - Grid for normalized market resources and permanent income may be prespecified - as dist_mGrid and dist_pGrid, respectively. If not then default grid is computed based off given parameters. - - Parameters - ---------- - dist_mGrid : np.array - Prespecified grid for distribution over normalized market resources - - dist_pGrid : np.array - Prespecified grid for distribution over permanent income. - - m_density: float - Density of normalized market resources grid. Default value is mdensity = 0. - Only affects grid of market resources if dist_mGrid=None. - - num_pointsM: float - Number of gridpoints for market resources grid. - - num_pointsP: float - Number of gridpoints for permanent income. - This grid will be exponentiated by the function make_grid_exp_mult. - - max_p_fac : float - Factor that scales the maximum value of permanent income grid. - Larger values increases the maximum value of permanent income grid. - - Returns - ------- - None - """ - - # If true Use Harmenberg 2021's Neutral Measure. For more information, see https://econ-ark.org/materials/harmenberg-aggregation?launch - if not hasattr(self, "neutral_measure"): - self.neutral_measure = False - - if num_pointsM is None: - m_points = self.mCount - else: - m_points = num_pointsM - - if not isinstance(timestonest, int): - timestonest = self.mFac - else: - timestonest = timestonest - - if self.cycles == 0: - if not hasattr(dist_mGrid, "__len__"): - mGrid = make_grid_exp_mult( - ming=self.mMin, - maxg=self.mMax, - ng=m_points, - timestonest=timestonest, - ) # Generate Market resources grid given density and number of points - - for i in range(m_density): - m_shifted = np.delete(mGrid, -1) - m_shifted = np.insert(m_shifted, 0, 1.00000000e-04) - dist_betw_pts = mGrid - m_shifted - dist_betw_pts_half = dist_betw_pts / 2 - new_A_grid = m_shifted + dist_betw_pts_half - mGrid = np.concatenate((mGrid, new_A_grid)) - mGrid = np.sort(mGrid) - - self.dist_mGrid = mGrid - - else: - # If grid of market resources prespecified then use as mgrid - self.dist_mGrid = dist_mGrid - - if not hasattr(dist_pGrid, "__len__"): - num_points = num_pointsP # Number of permanent income gridpoints - # Dist_pGrid is taken to cover most of the ergodic distribution - # set variance of permanent income shocks - p_variance = self.PermShkStd[0] ** 2 - # Maximum Permanent income value - max_p = max_p_fac * (p_variance / (1 - self.LivPrb[0])) ** 0.5 - one_sided_grid = make_grid_exp_mult( - 1.05 + 1e-3, np.exp(max_p), num_points, 3 - ) - self.dist_pGrid = np.append( - np.append(1.0 / np.fliplr([one_sided_grid])[0], np.ones(1)), - one_sided_grid, - ) # Compute permanent income grid - else: - # If grid of permanent income prespecified then use it as pgrid - self.dist_pGrid = dist_pGrid - - if ( - self.neutral_measure is True - ): # If true Use Harmenberg 2021's Neutral Measure. For more information, see https://econ-ark.org/materials/harmenberg-aggregation?launch - self.dist_pGrid = np.array([1]) - - elif self.cycles > 1: - raise Exception( - "define_distribution_grid requires cycles = 0 or cycles = 1" - ) - - elif self.T_cycle != 0: - if num_pointsM is None: - m_points = self.mCount - else: - m_points = num_pointsM - - if not hasattr(dist_mGrid, "__len__"): - mGrid = make_grid_exp_mult( - ming=self.mMin, - maxg=self.mMax, - ng=m_points, - timestonest=timestonest, - ) # Generate Market resources grid given density and number of points - - for i in range(m_density): - m_shifted = np.delete(mGrid, -1) - m_shifted = np.insert(m_shifted, 0, 1.00000000e-04) - dist_betw_pts = mGrid - m_shifted - dist_betw_pts_half = dist_betw_pts / 2 - new_A_grid = m_shifted + dist_betw_pts_half - mGrid = np.concatenate((mGrid, new_A_grid)) - mGrid = np.sort(mGrid) - - self.dist_mGrid = mGrid - - else: - # If grid of market resources prespecified then use as mgrid - self.dist_mGrid = dist_mGrid - - if not hasattr(dist_pGrid, "__len__"): - self.dist_pGrid = [] # list of grids of permanent income - - for i in range(self.T_cycle): - num_points = num_pointsP - # Dist_pGrid is taken to cover most of the ergodic distribution - # set variance of permanent income shocks this period - p_variance = self.PermShkStd[i] ** 2 - # Consider probability of staying alive this period - max_p = max_p_fac * (p_variance / (1 - self.LivPrb[i])) ** 0.5 - one_sided_grid = make_grid_exp_mult( - 1.05 + 1e-3, np.exp(max_p), num_points, 2 - ) - - # Compute permanent income grid this period. Grid of permanent income may differ dependent on PermShkStd - dist_pGrid = np.append( - np.append(1.0 / np.fliplr([one_sided_grid])[0], np.ones(1)), - one_sided_grid, - ) - self.dist_pGrid.append(dist_pGrid) - - else: - # If grid of permanent income prespecified then use as pgrid - self.dist_pGrid = dist_pGrid - - if ( - self.neutral_measure is True - ): # If true Use Harmenberg 2021's Neutral Measure. For more information, see https://econ-ark.org/materials/harmenberg-aggregation?launch - self.dist_pGrid = self.T_cycle * [np.array([1])] - - def calc_transition_matrix(self, shk_dstn=None): - """ - Calculates how the distribution of agents across market resources - transitions from one period to the next. If finite horizon problem, then calculates - a list of transition matrices, consumption and asset policy grids for each period of the problem. - The transition matrix/matrices and consumption and asset policy grid(s) are stored as attributes of self. - - - Parameters - ---------- - shk_dstn: list - list of income shock distributions. Each Income Shock Distribution should be a DiscreteDistribution Object (see Distribution.py) - Returns - ------- - None - - """ - - if self.cycles == 0: # Infinite Horizon Problem - if not hasattr(shk_dstn, "pmv"): - shk_dstn = self.IncShkDstn - - dist_mGrid = self.dist_mGrid # Grid of market resources - dist_pGrid = self.dist_pGrid # Grid of permanent incomes - # assets next period - aNext = dist_mGrid - self.solution[0].cFunc(dist_mGrid) - - self.aPol_Grid = aNext # Steady State Asset Policy Grid - # Steady State Consumption Policy Grid - self.cPol_Grid = self.solution[0].cFunc(dist_mGrid) - - # Obtain shock values and shock probabilities from income distribution - # Bank Balances next period (Interest rate * assets) - bNext = self.Rfree * aNext - shk_prbs = shk_dstn[0].pmv # Probability of shocks - tran_shks = shk_dstn[0].atoms[1] # Transitory shocks - perm_shks = shk_dstn[0].atoms[0] # Permanent shocks - LivPrb = self.LivPrb[0] # Update probability of staying alive - - # New borns have this distribution (assumes start with no assets and permanent income=1) - NewBornDist = jump_to_grid_2D( - tran_shks, np.ones_like(tran_shks), shk_prbs, dist_mGrid, dist_pGrid - ) - - if len(dist_pGrid) == 1: - NewBornDist = jump_to_grid_1D( - np.ones_like(tran_shks), shk_prbs, dist_mGrid - ) - # Compute Transition Matrix given shocks and grids. - self.tran_matrix = gen_tran_matrix_1D( - dist_mGrid, - bNext, - shk_prbs, - perm_shks, - tran_shks, - LivPrb, - NewBornDist, - ) - - else: - NewBornDist = jump_to_grid_2D( - np.ones_like(tran_shks), - np.ones_like(tran_shks), - shk_prbs, - dist_mGrid, - dist_pGrid, - ) - - # Generate Transition Matrix - # Compute Transition Matrix given shocks and grids. - self.tran_matrix = gen_tran_matrix_2D( - dist_mGrid, - dist_pGrid, - bNext, - shk_prbs, - perm_shks, - tran_shks, - LivPrb, - NewBornDist, - ) - - elif self.cycles > 1: - raise Exception("calc_transition_matrix requires cycles = 0 or cycles = 1") - - elif self.T_cycle != 0: # finite horizon problem - if not hasattr(shk_dstn, "pmv"): - shk_dstn = self.IncShkDstn - - self.cPol_Grid = [] - # List of consumption policy grids for each period in T_cycle - self.aPol_Grid = [] - # List of asset policy grids for each period in T_cycle - self.tran_matrix = [] # List of transition matrices - - dist_mGrid = self.dist_mGrid - - for k in range(self.T_cycle): - if type(self.dist_pGrid) == list: - # Permanent income grid this period - dist_pGrid = self.dist_pGrid[k] - else: - dist_pGrid = ( - self.dist_pGrid - ) # If here then use prespecified permanent income grid - - # Consumption policy grid in period k - Cnow = self.solution[k].cFunc(dist_mGrid) - self.cPol_Grid.append(Cnow) # Add to list - - aNext = dist_mGrid - Cnow # Asset policy grid in period k - self.aPol_Grid.append(aNext) # Add to list - - if type(self.Rfree) == list: - bNext = self.Rfree[k] * aNext - else: - bNext = self.Rfree * aNext - - # Obtain shocks and shock probabilities from income distribution this period - shk_prbs = shk_dstn[k].pmv # Probability of shocks this period - # Transitory shocks this period - tran_shks = shk_dstn[k].atoms[1] - # Permanent shocks this period - perm_shks = shk_dstn[k].atoms[0] - # Update probability of staying alive this period - LivPrb = self.LivPrb[k] - - if len(dist_pGrid) == 1: - # New borns have this distribution (assumes start with no assets and permanent income=1) - NewBornDist = jump_to_grid_1D( - np.ones_like(tran_shks), shk_prbs, dist_mGrid - ) - # Compute Transition Matrix given shocks and grids. - TranMatrix_M = gen_tran_matrix_1D( - dist_mGrid, - bNext, - shk_prbs, - perm_shks, - tran_shks, - LivPrb, - NewBornDist, - ) - self.tran_matrix.append(TranMatrix_M) - - else: - NewBornDist = jump_to_grid_2D( - np.ones_like(tran_shks), - np.ones_like(tran_shks), - shk_prbs, - dist_mGrid, - dist_pGrid, - ) - # Compute Transition Matrix given shocks and grids. - TranMatrix = gen_tran_matrix_2D( - dist_mGrid, - dist_pGrid, - bNext, - shk_prbs, - perm_shks, - tran_shks, - LivPrb, - NewBornDist, - ) - self.tran_matrix.append(TranMatrix) - - def calc_ergodic_dist(self, transition_matrix=None): - """ - Calculates the ergodic distribution across normalized market resources and - permanent income as the eigenvector associated with the eigenvalue 1. - The distribution is stored as attributes of self both as a vector and as a reshaped array with the ij'th element representing - the probability of being at the i'th point on the mGrid and the j'th - point on the pGrid. - - Parameters - ---------- - transition_matrix: List - list with one transition matrix whose ergordic distribution is to be solved - Returns - ------- - None - """ - - if not isinstance(transition_matrix, list): - transition_matrix = [self.tran_matrix] - - eigen, ergodic_distr = sp.linalg.eigs( - transition_matrix[0], v0=np.ones(len(transition_matrix[0])), k=1, which="LM" - ) # Solve for ergodic distribution - ergodic_distr = ergodic_distr.real / np.sum(ergodic_distr.real) - - self.vec_erg_dstn = ergodic_distr # distribution as a vector - # distribution reshaped into len(mgrid) by len(pgrid) array - self.erg_dstn = ergodic_distr.reshape( - (len(self.dist_mGrid), len(self.dist_pGrid)) - ) - - def compute_steady_state(self): - # Compute steady state to perturb around - self.cycles = 0 - self.solve() - - # Use Harmenberg Measure - self.neutral_measure = True - self.update_income_process() - - # Non stochastic simuation - self.define_distribution_grid() - self.calc_transition_matrix() - - self.c_ss = self.cPol_Grid # Normalized Consumption Policy grid - self.a_ss = self.aPol_Grid # Normalized Asset Policy grid - - self.calc_ergodic_dist() # Calculate ergodic distribution - # Steady State Distribution as a vector (m*p x 1) where m is the number of gridpoints on the market resources grid - ss_dstn = self.vec_erg_dstn - - self.A_ss = np.dot(self.a_ss, ss_dstn)[0] - self.C_ss = np.dot(self.c_ss, ss_dstn)[0] - - return self.A_ss, self.C_ss - - def calc_jacobian(self, shk_param, T): - """ - Calculates the Jacobians of aggregate consumption and aggregate assets. - Parameters that can be shocked are LivPrb, PermShkStd,TranShkStd, DiscFac, - UnempPrb, Rfree, IncUnemp, and DiscFac. - - Parameters: - ----------- - - shk_param: string - name of variable to be shocked - - T: int - dimension of Jacobian Matrix. Jacobian Matrix is a TxT square Matrix - - - Returns - ---------- - CJAC: numpy.array - TxT Jacobian Matrix of Aggregate Consumption with respect to shk_param - - AJAC: numpy.array - TxT Jacobian Matrix of Aggregate Assets with respect to shk_param - - """ - - # Set up finite Horizon dictionary - params = deepcopy(self.__dict__["parameters"]) - params["T_cycle"] = T # Dimension of Jacobian Matrix - - # Specify a dictionary of lists because problem we are solving is - # technically finite horizon so variables can be time varying (see - # section on fake news algorithm in - # https://onlinelibrary.wiley.com/doi/abs/10.3982/ECTA17434 ) - params["LivPrb"] = params["T_cycle"] * [self.LivPrb[0]] - params["PermGroFac"] = params["T_cycle"] * [self.PermGroFac[0]] - params["PermShkStd"] = params["T_cycle"] * [self.PermShkStd[0]] - params["TranShkStd"] = params["T_cycle"] * [self.TranShkStd[0]] - params["Rfree"] = params["T_cycle"] * [self.Rfree] - params["UnempPrb"] = params["T_cycle"] * [self.UnempPrb] - params["IncUnemp"] = params["T_cycle"] * [self.IncUnemp] - - # Create instance of a finite horizon agent - FinHorizonAgent = IndShockConsumerType(**params) - FinHorizonAgent.cycles = 1 # required - - # delete Rfree from time invariant list since it varies overtime - FinHorizonAgent.del_from_time_inv("Rfree") - # Add Rfree to time varying list to be able to introduce time varying interest rates - FinHorizonAgent.add_to_time_vary("Rfree") - - # Set Terminal Solution as Steady State Consumption Function - FinHorizonAgent.solution_terminal = deepcopy(self.solution[0]) - - dx = 0.0001 # Size of perturbation - # Period in which the change in the interest rate occurs (second to last period) - i = params["T_cycle"] - 1 - - FinHorizonAgent.IncShkDstn = params["T_cycle"] * [self.IncShkDstn[0]] - - # If parameter is in time invariant list then add it to time vary list - FinHorizonAgent.del_from_time_inv(shk_param) - FinHorizonAgent.add_to_time_vary(shk_param) - - # this condition is because some attributes are specified as lists while other as floats - if type(getattr(self, shk_param)) == list: - perturbed_list = ( - (i) * [getattr(self, shk_param)[0]] - + [getattr(self, shk_param)[0] + dx] - + (params["T_cycle"] - i - 1) * [getattr(self, shk_param)[0]] - ) # Sequence of interest rates the agent faces - else: - perturbed_list = ( - (i) * [getattr(self, shk_param)] - + [getattr(self, shk_param) + dx] - + (params["T_cycle"] - i - 1) * [getattr(self, shk_param)] - ) # Sequence of interest rates the agent faces - setattr(FinHorizonAgent, shk_param, perturbed_list) - self.parameters[shk_param] = perturbed_list - - # Update income process if perturbed parameter enters the income shock distribution - FinHorizonAgent.update_income_process() - - # Solve - FinHorizonAgent.solve(run_presolve=False) - - # Use Harmenberg Neutral Measure - FinHorizonAgent.neutral_measure = True - FinHorizonAgent.update_income_process() - - # Calculate Transition Matrices - FinHorizonAgent.define_distribution_grid() - FinHorizonAgent.calc_transition_matrix() - - # Normalized consumption Policy Grids across time - c_t = FinHorizonAgent.cPol_Grid - a_t = FinHorizonAgent.aPol_Grid - - # Append steady state policy grid into list of policy grids as HARK does not provide the initial policy - c_t.append(self.c_ss) - a_t.append(self.a_ss) - - # Fake News Algorithm begins below ( To find fake news algorithm See page 2388 of https://onlinelibrary.wiley.com/doi/abs/10.3982/ECTA17434 ) - - ########## - # STEP 1 # of fake news algorithm, As in the paper for Curly Y and Curly D. Here the policies are over assets and consumption so we denote them as curly C and curly D. - ########## - a_ss = self.aPol_Grid # steady state Asset Policy - c_ss = self.cPol_Grid # steady state Consumption Policy - tranmat_ss = self.tran_matrix # Steady State Transition Matrix - - # List of asset policies grids where households expect the shock to occur in the second to last Period - a_t = FinHorizonAgent.aPol_Grid - # add steady state assets to list as it does not get appended in calc_transition_matrix method - a_t.append(self.a_ss) - - # List of consumption policies grids where households expect the shock to occur in the second to last Period - c_t = FinHorizonAgent.cPol_Grid - # add steady state consumption to list as it does not get appended in calc_transition_matrix method - c_t.append(self.c_ss) - - da0_s = [] # Deviation of asset policy from steady state policy - dc0_s = [] # Deviation of Consumption policy from steady state policy - for i in range(T): - da0_s.append(a_t[T - i] - a_ss) - dc0_s.append(c_t[T - i] - c_ss) - - da0_s = np.array(da0_s) - dc0_s = np.array(dc0_s) - - # Steady state distribution of market resources (permanent income weighted distribution) - D_ss = self.vec_erg_dstn.T[0] - dA0_s = [] - dC0_s = [] - for i in range(T): - dA0_s.append(np.dot(da0_s[i], D_ss)) - dC0_s.append(np.dot(dc0_s[i], D_ss)) - - dA0_s = np.array(dA0_s) - # This is equivalent to the curly Y scalar detailed in the first step of the algorithm - A_curl_s = dA0_s / dx - - dC0_s = np.array(dC0_s) - C_curl_s = dC0_s / dx - - # List of computed transition matrices for each period - tranmat_t = FinHorizonAgent.tran_matrix - tranmat_t.append(tranmat_ss) - - # List of change in transition matrix relative to the steady state transition matrix - dlambda0_s = [] - for i in range(T): - dlambda0_s.append(tranmat_t[T - i] - tranmat_ss) - - dlambda0_s = np.array(dlambda0_s) - - dD0_s = [] - for i in range(T): - dD0_s.append(np.dot(dlambda0_s[i], D_ss)) - - dD0_s = np.array(dD0_s) - D_curl_s = dD0_s / dx # Curly D in the sequence space jacobian - - ######## - # STEP2 # of fake news algorithm - ######## - - # Expectation Vectors - exp_vecs_a = [] - exp_vecs_c = [] - - # First expectation vector is the steady state policy - exp_vec_a = a_ss - exp_vec_c = c_ss - for i in range(T): - exp_vecs_a.append(exp_vec_a) - exp_vec_a = np.dot(tranmat_ss.T, exp_vec_a) - - exp_vecs_c.append(exp_vec_c) - exp_vec_c = np.dot(tranmat_ss.T, exp_vec_c) - - # Turn expectation vectors into arrays - exp_vecs_a = np.array(exp_vecs_a) - exp_vecs_c = np.array(exp_vecs_c) - - ######### - # STEP3 # of the algorithm. In particular equation 26 of the published paper. - ######### - # Fake news matrices - Curl_F_A = np.zeros((T, T)) # Fake news matrix for assets - Curl_F_C = np.zeros((T, T)) # Fake news matrix for consumption - - # First row of Fake News Matrix - Curl_F_A[0] = A_curl_s - Curl_F_C[0] = C_curl_s - - for i in range(T - 1): - for j in range(T): - Curl_F_A[i + 1][j] = np.dot(exp_vecs_a[i], D_curl_s[j]) - Curl_F_C[i + 1][j] = np.dot(exp_vecs_c[i], D_curl_s[j]) - - ######## - # STEP4 # of the algorithm - ######## - - # Function to compute jacobian matrix from fake news matrix - def J_from_F(F): - J = F.copy() - for t in range(1, F.shape[0]): - J[1:, t] += J[:-1, t - 1] - return J - - J_A = J_from_F(Curl_F_A) - J_C = J_from_F(Curl_F_C) - - ######## - # Additional step due to compute Zeroth Column of the Jacobian - ######## - - params = deepcopy(self.__dict__["parameters"]) - params["T_cycle"] = 2 # Dimension of Jacobian Matrix - - params["LivPrb"] = params["T_cycle"] * [self.LivPrb[0]] - params["PermGroFac"] = params["T_cycle"] * [self.PermGroFac[0]] - params["PermShkStd"] = params["T_cycle"] * [self.PermShkStd[0]] - params["TranShkStd"] = params["T_cycle"] * [self.TranShkStd[0]] - params["Rfree"] = params["T_cycle"] * [self.Rfree] - params["UnempPrb"] = params["T_cycle"] * [self.UnempPrb] - params["IncUnemp"] = params["T_cycle"] * [self.IncUnemp] - params["IncShkDstn"] = params["T_cycle"] * [self.IncShkDstn[0]] - params["cFunc_terminal_"] = deepcopy(self.solution[0].cFunc) - - # Create instance of a finite horizon agent for calculation of zeroth - ZerothColAgent = IndShockConsumerType(**params) - ZerothColAgent.cycles = 1 # required - - # If parameter is in time invariant list then add it to time vary list - ZerothColAgent.del_from_time_inv(shk_param) - ZerothColAgent.add_to_time_vary(shk_param) - - # Update income process if perturbed parameter enters the income shock distribution - ZerothColAgent.update_income_process() - - # Solve - ZerothColAgent.solve() - - # this condition is because some attributes are specified as lists while other as floats - if type(getattr(self, shk_param)) == list: - perturbed_list = [getattr(self, shk_param)[0] + dx] + ( - params["T_cycle"] - 1 - ) * [ - getattr(self, shk_param)[0] - ] # Sequence of interest rates the agent faces - else: - perturbed_list = [getattr(self, shk_param) + dx] + ( - params["T_cycle"] - 1 - ) * [getattr(self, shk_param)] - # Sequence of interest rates the agent - - setattr(ZerothColAgent, shk_param, perturbed_list) # Set attribute to agent - self.parameters[shk_param] = perturbed_list - - # Use Harmenberg Neutral Measure - ZerothColAgent.neutral_measure = True - ZerothColAgent.update_income_process() - - # Calculate Transition Matrices - ZerothColAgent.define_distribution_grid() - ZerothColAgent.calc_transition_matrix() - - tranmat_t_zeroth_col = ZerothColAgent.tran_matrix - dstn_t_zeroth_col = self.vec_erg_dstn.T[0] - - C_t_no_sim = np.zeros(T) - A_t_no_sim = np.zeros(T) - - for i in range(T): - if i == 0: - dstn_t_zeroth_col = np.dot(tranmat_t_zeroth_col[i], dstn_t_zeroth_col) - else: - dstn_t_zeroth_col = np.dot(tranmat_ss, dstn_t_zeroth_col) - - C_t_no_sim[i] = np.dot(self.cPol_Grid, dstn_t_zeroth_col) - A_t_no_sim[i] = np.dot(self.aPol_Grid, dstn_t_zeroth_col) - - J_A.T[0] = (A_t_no_sim - self.A_ss) / dx - J_C.T[0] = (C_t_no_sim - self.C_ss) / dx - - return J_C, J_A - def make_euler_error_func(self, mMax=100, approx_inc_dstn=True): """ Creates a "normalized Euler error" function for this instance, mapping diff --git a/HARK/ConsumptionSaving/ConsNewKeynesianModel.py b/HARK/ConsumptionSaving/ConsNewKeynesianModel.py new file mode 100644 index 000000000..605b26f26 --- /dev/null +++ b/HARK/ConsumptionSaving/ConsNewKeynesianModel.py @@ -0,0 +1,798 @@ +""" +This file has a slightly modified and extended version of ConsIndShock that is +meant to be used in heterogeneous agents new Keynesian (HANK) models. The micro- +economic model is identical, but additional primitive parameters have been added +to the specification of the income process. These parameters would have no inde- +pendent meaning in a "micro only" setting, but with dynamic equilibrium elements +(as in HANK models), they can have meaning. +""" + +from copy import deepcopy +import numpy as np +from scipy import sparse as sp + +from HARK.ConsumptionSaving.ConsIndShockModel import ( + IndShockConsumerType, + make_basic_CRRA_solution_terminal, +) + +from HARK.Calibration.Income.IncomeProcesses import ( + construct_HANK_lognormal_income_process_unemployment, + get_PermShkDstn_from_IncShkDstn, + get_TranShkDstn_from_IncShkDstn, +) + +from HARK.utilities import ( + gen_tran_matrix_1D, + gen_tran_matrix_2D, + jump_to_grid_1D, + jump_to_grid_2D, + make_grid_exp_mult, + make_assets_grid, +) + +# Make a dictionary of constructors for the idiosyncratic income shocks model +newkeynesian_constructor_dict = { + "IncShkDstn": construct_HANK_lognormal_income_process_unemployment, + "PermShkDstn": get_PermShkDstn_from_IncShkDstn, + "TranShkDstn": get_TranShkDstn_from_IncShkDstn, + "aXtraGrid": make_assets_grid, + "solution_terminal": make_basic_CRRA_solution_terminal, +} + +# Default parameters to make IncShkDstn using construct_lognormal_income_process_unemployment +default_IncShkDstn_params = { + "PermShkStd": [0.1], # Standard deviation of log permanent income shocks + "PermShkCount": 7, # Number of points in discrete approximation to permanent income shocks + "TranShkStd": [0.1], # Standard deviation of log transitory income shocks + "TranShkCount": 7, # Number of points in discrete approximation to transitory income shocks + "UnempPrb": 0.05, # Probability of unemployment while working + "IncUnemp": 0.3, # Unemployment benefits replacement rate while working + "T_retire": 0, # Period of retirement (0 --> no retirement) + "UnempPrbRet": 0.005, # Probability of "unemployment" while retired + "IncUnempRet": 0.0, # "Unemployment" benefits when retired + "tax_rate": [0.0], # Flat tax rate on labor income NEW FOR HANK + "labor": [1.0], # Intensive margin labor supply NEW FOR HANK + "wage": [1.0], # Wage rate scaling factor NEW FOR HANK +} + +# Default parameters to make aXtraGrid using make_assets_grid +default_aXtraGrid_params = { + "aXtraMin": 0.001, # Minimum end-of-period "assets above minimum" value + "aXtraMax": 20, # Maximum end-of-period "assets above minimum" value + "aXtraNestFac": 3, # Exponential nesting factor for aXtraGrid + "aXtraCount": 48, # Number of points in the grid of "assets above minimum" + "aXtraExtra": None, # Additional other values to add in grid (optional) +} + +# Make a dictionary to specify an idiosyncratic income shocks consumer type +init_newkeynesian = { + # BASIC HARK PARAMETERS REQUIRED TO SOLVE THE MODEL + "cycles": 1, # Finite, non-cyclic model + "T_cycle": 1, # Number of periods in the cycle for this agent type + "constructors": newkeynesian_constructor_dict, # See dictionary above + # PRIMITIVE RAW PARAMETERS REQUIRED TO SOLVE THE MODEL + "CRRA": 2.0, # Coefficient of relative risk aversion + "Rfree": 1.03, # Interest factor on retained assets + "DiscFac": 0.96, # Intertemporal discount factor + "LivPrb": [0.98], # Survival probability after each period + "PermGroFac": [1.01], # Permanent income growth factor + "BoroCnstArt": 0.0, # Artificial borrowing constraint + "vFuncBool": False, # Whether to calculate the value function during solution + "CubicBool": False, # Whether to use cubic spline interpolation when True + # (Uses linear spline interpolation for cFunc when False) + # PARAMETERS REQUIRED TO SIMULATE THE MODEL + "AgentCount": 10000, # Number of agents of this type + "T_age": None, # Age after which simulated agents are automatically killed + "aNrmInitMean": 0.0, # Mean of log initial assets + "aNrmInitStd": 1.0, # Standard deviation of log initial assets + "pLvlInitMean": 0.0, # Mean of log initial permanent income + "pLvlInitStd": 0.0, # Standard deviation of log initial permanent income + "PermGroFacAgg": 1.0, # Aggregate permanent income growth factor + # (The portion of PermGroFac attributable to aggregate productivity growth) + "NewbornTransShk": False, # Whether Newborns have transitory shock + # ADDITIONAL OPTIONAL PARAMETERS + "PerfMITShk": False, # Do Perfect Foresight MIT Shock + # (Forces Newborns to follow solution path of the agent they replaced if True) + "neutral_measure": False, # Whether to use permanent income neutral measure (see Harmenberg 2021) +} +init_newkeynesian.update(default_IncShkDstn_params) +init_newkeynesian.update(default_aXtraGrid_params) + + +class NewKeynesianConsumerType(IndShockConsumerType): + """ + A slight extension of IndShockConsumerType that permits individual labor supply, + the wage rate, and the labor income tax rate to enter the income shock process. + """ + + def __init__(self, verbose=1, quiet=False, **kwds): + params = init_newkeynesian.copy() + params.update(kwds) + + # Run the basic initializer + super().__init__(verbose=verbose, quiet=quiet, **params) + + def define_distribution_grid( + self, + dist_mGrid=None, + dist_pGrid=None, + m_density=0, + num_pointsM=None, + timestonest=None, + num_pointsP=55, + max_p_fac=30.0, + ): + """ + Defines the grid on which the distribution is defined. Stores the grid of market resources and permanent income as attributes of self. + Grid for normalized market resources and permanent income may be prespecified + as dist_mGrid and dist_pGrid, respectively. If not then default grid is computed based off given parameters. + + Parameters + ---------- + dist_mGrid : np.array + Prespecified grid for distribution over normalized market resources + + dist_pGrid : np.array + Prespecified grid for distribution over permanent income. + + m_density: float + Density of normalized market resources grid. Default value is mdensity = 0. + Only affects grid of market resources if dist_mGrid=None. + + num_pointsM: float + Number of gridpoints for market resources grid. + + num_pointsP: float + Number of gridpoints for permanent income. + This grid will be exponentiated by the function make_grid_exp_mult. + + max_p_fac : float + Factor that scales the maximum value of permanent income grid. + Larger values increases the maximum value of permanent income grid. + + Returns + ------- + None + """ + + # If true Use Harmenberg 2021's Neutral Measure. For more information, see https://econ-ark.org/materials/harmenberg-aggregation?launch + if not hasattr(self, "neutral_measure"): + self.neutral_measure = False + + if num_pointsM is None: + m_points = self.mCount + else: + m_points = num_pointsM + + if not isinstance(timestonest, int): + timestonest = self.mFac + else: + timestonest = timestonest + + if self.cycles == 0: + if not hasattr(dist_mGrid, "__len__"): + mGrid = make_grid_exp_mult( + ming=self.mMin, + maxg=self.mMax, + ng=m_points, + timestonest=timestonest, + ) # Generate Market resources grid given density and number of points + + for i in range(m_density): + m_shifted = np.delete(mGrid, -1) + m_shifted = np.insert(m_shifted, 0, 1.00000000e-04) + dist_betw_pts = mGrid - m_shifted + dist_betw_pts_half = dist_betw_pts / 2 + new_A_grid = m_shifted + dist_betw_pts_half + mGrid = np.concatenate((mGrid, new_A_grid)) + mGrid = np.sort(mGrid) + + self.dist_mGrid = mGrid + + else: + # If grid of market resources prespecified then use as mgrid + self.dist_mGrid = dist_mGrid + + if not hasattr(dist_pGrid, "__len__"): + num_points = num_pointsP # Number of permanent income gridpoints + # Dist_pGrid is taken to cover most of the ergodic distribution + # set variance of permanent income shocks + p_variance = self.PermShkStd[0] ** 2 + # Maximum Permanent income value + max_p = max_p_fac * (p_variance / (1 - self.LivPrb[0])) ** 0.5 + one_sided_grid = make_grid_exp_mult( + 1.05 + 1e-3, np.exp(max_p), num_points, 3 + ) + self.dist_pGrid = np.append( + np.append(1.0 / np.fliplr([one_sided_grid])[0], np.ones(1)), + one_sided_grid, + ) # Compute permanent income grid + else: + # If grid of permanent income prespecified then use it as pgrid + self.dist_pGrid = dist_pGrid + + if ( + self.neutral_measure is True + ): # If true Use Harmenberg 2021's Neutral Measure. For more information, see https://econ-ark.org/materials/harmenberg-aggregation?launch + self.dist_pGrid = np.array([1]) + + elif self.cycles > 1: + raise Exception( + "define_distribution_grid requires cycles = 0 or cycles = 1" + ) + + elif self.T_cycle != 0: + if num_pointsM is None: + m_points = self.mCount + else: + m_points = num_pointsM + + if not hasattr(dist_mGrid, "__len__"): + mGrid = make_grid_exp_mult( + ming=self.mMin, + maxg=self.mMax, + ng=m_points, + timestonest=timestonest, + ) # Generate Market resources grid given density and number of points + + for i in range(m_density): + m_shifted = np.delete(mGrid, -1) + m_shifted = np.insert(m_shifted, 0, 1.00000000e-04) + dist_betw_pts = mGrid - m_shifted + dist_betw_pts_half = dist_betw_pts / 2 + new_A_grid = m_shifted + dist_betw_pts_half + mGrid = np.concatenate((mGrid, new_A_grid)) + mGrid = np.sort(mGrid) + + self.dist_mGrid = mGrid + + else: + # If grid of market resources prespecified then use as mgrid + self.dist_mGrid = dist_mGrid + + if not hasattr(dist_pGrid, "__len__"): + self.dist_pGrid = [] # list of grids of permanent income + + for i in range(self.T_cycle): + num_points = num_pointsP + # Dist_pGrid is taken to cover most of the ergodic distribution + # set variance of permanent income shocks this period + p_variance = self.PermShkStd[i] ** 2 + # Consider probability of staying alive this period + max_p = max_p_fac * (p_variance / (1 - self.LivPrb[i])) ** 0.5 + one_sided_grid = make_grid_exp_mult( + 1.05 + 1e-3, np.exp(max_p), num_points, 2 + ) + + # Compute permanent income grid this period. Grid of permanent income may differ dependent on PermShkStd + dist_pGrid = np.append( + np.append(1.0 / np.fliplr([one_sided_grid])[0], np.ones(1)), + one_sided_grid, + ) + self.dist_pGrid.append(dist_pGrid) + + else: + # If grid of permanent income prespecified then use as pgrid + self.dist_pGrid = dist_pGrid + + if ( + self.neutral_measure is True + ): # If true Use Harmenberg 2021's Neutral Measure. For more information, see https://econ-ark.org/materials/harmenberg-aggregation?launch + self.dist_pGrid = self.T_cycle * [np.array([1])] + + def calc_transition_matrix(self, shk_dstn=None): + """ + Calculates how the distribution of agents across market resources + transitions from one period to the next. If finite horizon problem, then calculates + a list of transition matrices, consumption and asset policy grids for each period of the problem. + The transition matrix/matrices and consumption and asset policy grid(s) are stored as attributes of self. + + + Parameters + ---------- + shk_dstn: list + list of income shock distributions. Each Income Shock Distribution should be a DiscreteDistribution Object (see Distribution.py) + Returns + ------- + None + + """ + + if self.cycles == 0: # Infinite Horizon Problem + if not hasattr(shk_dstn, "pmv"): + shk_dstn = self.IncShkDstn + + dist_mGrid = self.dist_mGrid # Grid of market resources + dist_pGrid = self.dist_pGrid # Grid of permanent incomes + # assets next period + aNext = dist_mGrid - self.solution[0].cFunc(dist_mGrid) + + self.aPol_Grid = aNext # Steady State Asset Policy Grid + # Steady State Consumption Policy Grid + self.cPol_Grid = self.solution[0].cFunc(dist_mGrid) + + # Obtain shock values and shock probabilities from income distribution + # Bank Balances next period (Interest rate * assets) + bNext = self.Rfree * aNext + shk_prbs = shk_dstn[0].pmv # Probability of shocks + tran_shks = shk_dstn[0].atoms[1] # Transitory shocks + perm_shks = shk_dstn[0].atoms[0] # Permanent shocks + LivPrb = self.LivPrb[0] # Update probability of staying alive + + # New borns have this distribution (assumes start with no assets and permanent income=1) + NewBornDist = jump_to_grid_2D( + tran_shks, np.ones_like(tran_shks), shk_prbs, dist_mGrid, dist_pGrid + ) + + if len(dist_pGrid) == 1: + NewBornDist = jump_to_grid_1D( + np.ones_like(tran_shks), shk_prbs, dist_mGrid + ) + # Compute Transition Matrix given shocks and grids. + self.tran_matrix = gen_tran_matrix_1D( + dist_mGrid, + bNext, + shk_prbs, + perm_shks, + tran_shks, + LivPrb, + NewBornDist, + ) + + else: + NewBornDist = jump_to_grid_2D( + np.ones_like(tran_shks), + np.ones_like(tran_shks), + shk_prbs, + dist_mGrid, + dist_pGrid, + ) + + # Generate Transition Matrix + # Compute Transition Matrix given shocks and grids. + self.tran_matrix = gen_tran_matrix_2D( + dist_mGrid, + dist_pGrid, + bNext, + shk_prbs, + perm_shks, + tran_shks, + LivPrb, + NewBornDist, + ) + + elif self.cycles > 1: + raise Exception("calc_transition_matrix requires cycles = 0 or cycles = 1") + + elif self.T_cycle != 0: # finite horizon problem + if not hasattr(shk_dstn, "pmv"): + shk_dstn = self.IncShkDstn + + self.cPol_Grid = [] + # List of consumption policy grids for each period in T_cycle + self.aPol_Grid = [] + # List of asset policy grids for each period in T_cycle + self.tran_matrix = [] # List of transition matrices + + dist_mGrid = self.dist_mGrid + + for k in range(self.T_cycle): + if type(self.dist_pGrid) == list: + # Permanent income grid this period + dist_pGrid = self.dist_pGrid[k] + else: + dist_pGrid = ( + self.dist_pGrid + ) # If here then use prespecified permanent income grid + + # Consumption policy grid in period k + Cnow = self.solution[k].cFunc(dist_mGrid) + self.cPol_Grid.append(Cnow) # Add to list + + aNext = dist_mGrid - Cnow # Asset policy grid in period k + self.aPol_Grid.append(aNext) # Add to list + + if type(self.Rfree) == list: + bNext = self.Rfree[k] * aNext + else: + bNext = self.Rfree * aNext + + # Obtain shocks and shock probabilities from income distribution this period + shk_prbs = shk_dstn[k].pmv # Probability of shocks this period + # Transitory shocks this period + tran_shks = shk_dstn[k].atoms[1] + # Permanent shocks this period + perm_shks = shk_dstn[k].atoms[0] + # Update probability of staying alive this period + LivPrb = self.LivPrb[k] + + if len(dist_pGrid) == 1: + # New borns have this distribution (assumes start with no assets and permanent income=1) + NewBornDist = jump_to_grid_1D( + np.ones_like(tran_shks), shk_prbs, dist_mGrid + ) + # Compute Transition Matrix given shocks and grids. + TranMatrix_M = gen_tran_matrix_1D( + dist_mGrid, + bNext, + shk_prbs, + perm_shks, + tran_shks, + LivPrb, + NewBornDist, + ) + self.tran_matrix.append(TranMatrix_M) + + else: + NewBornDist = jump_to_grid_2D( + np.ones_like(tran_shks), + np.ones_like(tran_shks), + shk_prbs, + dist_mGrid, + dist_pGrid, + ) + # Compute Transition Matrix given shocks and grids. + TranMatrix = gen_tran_matrix_2D( + dist_mGrid, + dist_pGrid, + bNext, + shk_prbs, + perm_shks, + tran_shks, + LivPrb, + NewBornDist, + ) + self.tran_matrix.append(TranMatrix) + + def calc_ergodic_dist(self, transition_matrix=None): + """ + Calculates the ergodic distribution across normalized market resources and + permanent income as the eigenvector associated with the eigenvalue 1. + The distribution is stored as attributes of self both as a vector and as a reshaped array with the ij'th element representing + the probability of being at the i'th point on the mGrid and the j'th + point on the pGrid. + + Parameters + ---------- + transition_matrix: List + list with one transition matrix whose ergordic distribution is to be solved + Returns + ------- + None + """ + + if not isinstance(transition_matrix, list): + transition_matrix = [self.tran_matrix] + + eigen, ergodic_distr = sp.linalg.eigs( + transition_matrix[0], v0=np.ones(len(transition_matrix[0])), k=1, which="LM" + ) # Solve for ergodic distribution + ergodic_distr = ergodic_distr.real / np.sum(ergodic_distr.real) + + self.vec_erg_dstn = ergodic_distr # distribution as a vector + # distribution reshaped into len(mgrid) by len(pgrid) array + self.erg_dstn = ergodic_distr.reshape( + (len(self.dist_mGrid), len(self.dist_pGrid)) + ) + + def compute_steady_state(self): + # Compute steady state to perturb around + self.cycles = 0 + self.solve() + + # Use Harmenberg Measure + self.neutral_measure = True + self.update_income_process() + + # Non stochastic simuation + self.define_distribution_grid() + self.calc_transition_matrix() + + self.c_ss = self.cPol_Grid # Normalized Consumption Policy grid + self.a_ss = self.aPol_Grid # Normalized Asset Policy grid + + self.calc_ergodic_dist() # Calculate ergodic distribution + # Steady State Distribution as a vector (m*p x 1) where m is the number of gridpoints on the market resources grid + ss_dstn = self.vec_erg_dstn + + self.A_ss = np.dot(self.a_ss, ss_dstn)[0] + self.C_ss = np.dot(self.c_ss, ss_dstn)[0] + + return self.A_ss, self.C_ss + + def calc_jacobian(self, shk_param, T): + """ + Calculates the Jacobians of aggregate consumption and aggregate assets. + Parameters that can be shocked are LivPrb, PermShkStd,TranShkStd, DiscFac, + UnempPrb, Rfree, IncUnemp, and DiscFac. + + Parameters: + ----------- + + shk_param: string + name of variable to be shocked + + T: int + dimension of Jacobian Matrix. Jacobian Matrix is a TxT square Matrix + + + Returns + ---------- + CJAC: numpy.array + TxT Jacobian Matrix of Aggregate Consumption with respect to shk_param + + AJAC: numpy.array + TxT Jacobian Matrix of Aggregate Assets with respect to shk_param + + """ + + # Set up finite Horizon dictionary + params = deepcopy(self.__dict__["parameters"]) + params["T_cycle"] = T # Dimension of Jacobian Matrix + + # Specify a dictionary of lists because problem we are solving is + # technically finite horizon so variables can be time varying (see + # section on fake news algorithm in + # https://onlinelibrary.wiley.com/doi/abs/10.3982/ECTA17434 ) + params["LivPrb"] = params["T_cycle"] * [self.LivPrb[0]] + params["PermGroFac"] = params["T_cycle"] * [self.PermGroFac[0]] + params["PermShkStd"] = params["T_cycle"] * [self.PermShkStd[0]] + params["TranShkStd"] = params["T_cycle"] * [self.TranShkStd[0]] + params["Rfree"] = params["T_cycle"] * [self.Rfree] + params["UnempPrb"] = params["T_cycle"] * [self.UnempPrb] + params["IncUnemp"] = params["T_cycle"] * [self.IncUnemp] + params["wage"] = params["T_cycle"] * [self.wage[0]] + params["labor"] = params["T_cycle"] * [self.labor[0]] + params["tax_rate"] = params["T_cycle"] * [self.tax_rate[0]] + params["cycles"] = 1 # "finite horizon", sort of + + # Create instance of a finite horizon agent + FinHorizonAgent = NewKeynesianConsumerType(**params) + + # delete Rfree from time invariant list since it varies overtime + FinHorizonAgent.del_from_time_inv("Rfree") + # Add Rfree to time varying list to be able to introduce time varying interest rates + FinHorizonAgent.add_to_time_vary("Rfree") + + # Set Terminal Solution as Steady State Solution + FinHorizonAgent.solution_terminal = deepcopy(self.solution[0]) + + dx = 0.0001 # Size of perturbation + # Period in which the change in the interest rate occurs (second to last period) + i = params["T_cycle"] - 1 + + FinHorizonAgent.IncShkDstn = params["T_cycle"] * [self.IncShkDstn[0]] + + # If parameter is in time invariant list then add it to time vary list + FinHorizonAgent.del_from_time_inv(shk_param) + FinHorizonAgent.add_to_time_vary(shk_param) + + # this condition is because some attributes are specified as lists while other as floats + if type(getattr(self, shk_param)) == list: + perturbed_list = ( + (i) * [getattr(self, shk_param)[0]] + + [getattr(self, shk_param)[0] + dx] + + (params["T_cycle"] - i - 1) * [getattr(self, shk_param)[0]] + ) # Sequence of interest rates the agent faces + else: + perturbed_list = ( + (i) * [getattr(self, shk_param)] + + [getattr(self, shk_param) + dx] + + (params["T_cycle"] - i - 1) * [getattr(self, shk_param)] + ) # Sequence of interest rates the agent faces + setattr(FinHorizonAgent, shk_param, perturbed_list) + self.parameters[shk_param] = perturbed_list + + # Update income process if perturbed parameter enters the income shock distribution + FinHorizonAgent.update_income_process() + + # Solve the "finite horizon" model, but don't re-solve the terminal period! + FinHorizonAgent.solve(presolve=False) + + # Use Harmenberg Neutral Measure + FinHorizonAgent.neutral_measure = True + FinHorizonAgent.update_income_process() + + # Calculate Transition Matrices + FinHorizonAgent.define_distribution_grid() + FinHorizonAgent.calc_transition_matrix() + + # Normalized consumption Policy Grids across time + c_t = FinHorizonAgent.cPol_Grid + a_t = FinHorizonAgent.aPol_Grid + + # Append steady state policy grid into list of policy grids as HARK does not provide the initial policy + c_t.append(self.c_ss) + a_t.append(self.a_ss) + + # Fake News Algorithm begins below ( To find fake news algorithm See page 2388 of https://onlinelibrary.wiley.com/doi/abs/10.3982/ECTA17434 ) + + ########## + # STEP 1 # of fake news algorithm, As in the paper for Curly Y and Curly D. Here the policies are over assets and consumption so we denote them as curly C and curly D. + ########## + a_ss = self.aPol_Grid # steady state Asset Policy + c_ss = self.cPol_Grid # steady state Consumption Policy + tranmat_ss = self.tran_matrix # Steady State Transition Matrix + + # List of asset policies grids where households expect the shock to occur in the second to last Period + a_t = FinHorizonAgent.aPol_Grid + # add steady state assets to list as it does not get appended in calc_transition_matrix method + a_t.append(self.a_ss) + + # List of consumption policies grids where households expect the shock to occur in the second to last Period + c_t = FinHorizonAgent.cPol_Grid + # add steady state consumption to list as it does not get appended in calc_transition_matrix method + c_t.append(self.c_ss) + + da0_s = [] # Deviation of asset policy from steady state policy + dc0_s = [] # Deviation of Consumption policy from steady state policy + for i in range(T): + da0_s.append(a_t[T - i] - a_ss) + dc0_s.append(c_t[T - i] - c_ss) + + da0_s = np.array(da0_s) + dc0_s = np.array(dc0_s) + + # Steady state distribution of market resources (permanent income weighted distribution) + D_ss = self.vec_erg_dstn.T[0] + dA0_s = [] + dC0_s = [] + for i in range(T): + dA0_s.append(np.dot(da0_s[i], D_ss)) + dC0_s.append(np.dot(dc0_s[i], D_ss)) + + dA0_s = np.array(dA0_s) + # This is equivalent to the curly Y scalar detailed in the first step of the algorithm + A_curl_s = dA0_s / dx + + dC0_s = np.array(dC0_s) + C_curl_s = dC0_s / dx + + # List of computed transition matrices for each period + tranmat_t = FinHorizonAgent.tran_matrix + tranmat_t.append(tranmat_ss) + + # List of change in transition matrix relative to the steady state transition matrix + dlambda0_s = [] + for i in range(T): + dlambda0_s.append(tranmat_t[T - i] - tranmat_ss) + + dlambda0_s = np.array(dlambda0_s) + + dD0_s = [] + for i in range(T): + dD0_s.append(np.dot(dlambda0_s[i], D_ss)) + + dD0_s = np.array(dD0_s) + D_curl_s = dD0_s / dx # Curly D in the sequence space jacobian + + ######## + # STEP2 # of fake news algorithm + ######## + + # Expectation Vectors + exp_vecs_a = [] + exp_vecs_c = [] + + # First expectation vector is the steady state policy + exp_vec_a = a_ss + exp_vec_c = c_ss + for i in range(T): + exp_vecs_a.append(exp_vec_a) + exp_vec_a = np.dot(tranmat_ss.T, exp_vec_a) + + exp_vecs_c.append(exp_vec_c) + exp_vec_c = np.dot(tranmat_ss.T, exp_vec_c) + + # Turn expectation vectors into arrays + exp_vecs_a = np.array(exp_vecs_a) + exp_vecs_c = np.array(exp_vecs_c) + + ######### + # STEP3 # of the algorithm. In particular equation 26 of the published paper. + ######### + # Fake news matrices + Curl_F_A = np.zeros((T, T)) # Fake news matrix for assets + Curl_F_C = np.zeros((T, T)) # Fake news matrix for consumption + + # First row of Fake News Matrix + Curl_F_A[0] = A_curl_s + Curl_F_C[0] = C_curl_s + + for i in range(T - 1): + for j in range(T): + Curl_F_A[i + 1][j] = np.dot(exp_vecs_a[i], D_curl_s[j]) + Curl_F_C[i + 1][j] = np.dot(exp_vecs_c[i], D_curl_s[j]) + + ######## + # STEP4 # of the algorithm + ######## + + # Function to compute jacobian matrix from fake news matrix + def J_from_F(F): + J = F.copy() + for t in range(1, F.shape[0]): + J[1:, t] += J[:-1, t - 1] + return J + + J_A = J_from_F(Curl_F_A) + J_C = J_from_F(Curl_F_C) + + ######## + # Additional step due to compute Zeroth Column of the Jacobian + ######## + + params = deepcopy(self.__dict__["parameters"]) + params["T_cycle"] = 2 # Just need one transition matrix + params["LivPrb"] = params["T_cycle"] * [self.LivPrb[0]] + params["PermGroFac"] = params["T_cycle"] * [self.PermGroFac[0]] + params["PermShkStd"] = params["T_cycle"] * [self.PermShkStd[0]] + params["TranShkStd"] = params["T_cycle"] * [self.TranShkStd[0]] + params["Rfree"] = params["T_cycle"] * [self.Rfree] + params["UnempPrb"] = params["T_cycle"] * [self.UnempPrb] + params["IncUnemp"] = params["T_cycle"] * [self.IncUnemp] + params["IncShkDstn"] = params["T_cycle"] * [self.IncShkDstn[0]] + params["wage"] = params["T_cycle"] * [self.wage[0]] + params["labor"] = params["T_cycle"] * [self.labor[0]] + params["tax_rate"] = params["T_cycle"] * [self.tax_rate[0]] + params["cycles"] = 1 # Now it's "finite" horizon while things are changing + + # Create instance of a finite horizon agent for calculation of zeroth + ZerothColAgent = NewKeynesianConsumerType(**params) + ZerothColAgent.solution_terminal = deepcopy(self.solution[0]) + + # If parameter is in time invariant list then add it to time vary list + ZerothColAgent.del_from_time_inv(shk_param) + ZerothColAgent.add_to_time_vary(shk_param) + + # Update income process if perturbed parameter enters the income shock distribution + ZerothColAgent.update_income_process() + + # Solve the "finite horizon" problem, but *don't* re-solve the "terminal period", + # because we're using the long run solution as the "terminal" solution here! + ZerothColAgent.solve(presolve=False) + + # this condition is because some attributes are specified as lists while other as floats + if type(getattr(self, shk_param)) == list: + perturbed_list = [getattr(self, shk_param)[0] + dx] + ( + params["T_cycle"] - 1 + ) * [ + getattr(self, shk_param)[0] + ] # Sequence of interest rates the agent faces + else: + perturbed_list = [getattr(self, shk_param) + dx] + ( + params["T_cycle"] - 1 + ) * [getattr(self, shk_param)] + # Sequence of interest rates the agent + + setattr(ZerothColAgent, shk_param, perturbed_list) # Set attribute to agent + self.parameters[shk_param] = perturbed_list + + # Use Harmenberg Neutral Measure + ZerothColAgent.neutral_measure = True + ZerothColAgent.update_income_process() + + # Calculate Transition Matrices + ZerothColAgent.define_distribution_grid() + ZerothColAgent.calc_transition_matrix() + + tranmat_t_zeroth_col = ZerothColAgent.tran_matrix + dstn_t_zeroth_col = self.vec_erg_dstn.T[0] + + C_t_no_sim = np.zeros(T) + A_t_no_sim = np.zeros(T) + + for i in range(T): + if i == 0: + dstn_t_zeroth_col = np.dot(tranmat_t_zeroth_col[i], dstn_t_zeroth_col) + else: + dstn_t_zeroth_col = np.dot(tranmat_ss, dstn_t_zeroth_col) + + C_t_no_sim[i] = np.dot(self.cPol_Grid, dstn_t_zeroth_col) + A_t_no_sim[i] = np.dot(self.aPol_Grid, dstn_t_zeroth_col) + + J_A.T[0] = (A_t_no_sim - self.A_ss) / dx + J_C.T[0] = (C_t_no_sim - self.C_ss) / dx + + return J_C, J_A diff --git a/HARK/ConsumptionSaving/tests/test_ConsNewKeynesianModel.py b/HARK/ConsumptionSaving/tests/test_ConsNewKeynesianModel.py new file mode 100644 index 000000000..10a75e2c5 --- /dev/null +++ b/HARK/ConsumptionSaving/tests/test_ConsNewKeynesianModel.py @@ -0,0 +1,101 @@ +import unittest + +import numpy as np + +from HARK.ConsumptionSaving.ConsNewKeynesianModel import NewKeynesianConsumerType +from HARK.tests import HARK_PRECISION + +jacobian_test_dict = { + # Parameters shared with the perfect foresight model + "CRRA": 2, # Coefficient of relative risk aversion + "Rfree": 1.04**0.25, # Interest factor on assets + "DiscFac": 0.9735, # Intertemporal discount factor + "LivPrb": [0.99375], # Survival probability + "PermGroFac": [1.00], # Permanent income growth factor + # Parameters that specify the income distribution over the lifecycle + "PermShkStd": [ + 0.06 + ], # [(0.01*4/11)**0.5], # Standard deviation of log permanent shocks to income + "PermShkCount": 5, # Number of points in discrete approximation to permanent income shocks + "TranShkStd": [0.3], # Standard deviation of log transitory shocks to income + "TranShkCount": 5, # Number of points in discrete approximation to transitory income shocks + "UnempPrb": 0.07, # Probability of unemployment while working + "IncUnemp": 0.3, # Unemployment benefits replacement rate + "UnempPrbRet": 0.0005, # Probability of "unemployment" while retired + "IncUnempRet": 0.0, # "Unemployment" benefits when retired + "T_retire": 0, # Period of retirement (0 --> no retirement) + # Parameters for constructing the "assets above minimum" grid + "aXtraMin": 0.001, # Minimum end-of-period "assets above minimum" value + "aXtraMax": 20, # Maximum end-of-period "assets above minimum" value + "aXtraCount": 48, # Number of points in the base grid of "assets above minimum" + "aXtraNestFac": 3, # Exponential nesting factor when constructing "assets above minimum" grid + "aXtraExtra": None, # Additional values to add to aXtraGrid + # A few other parameters + "BoroCnstArt": 0.0, # Artificial borrowing constraint; imposed minimum level of end-of period assets + "vFuncBool": True, # Whether to calculate the value function during solution + "CubicBool": False, # Preference shocks currently only compatible with linear cFunc + "T_cycle": 1, # Number of periods in the cycle for this agent type + # Parameters only used in simulation + "AgentCount": 500, # Number of agents of this type + "T_sim": 100, # Number of periods to simulate + "aNrmInitMean": np.log(1.3) - (0.5**2) / 2, # Mean of log initial assets + "aNrmInitStd": 0.5, # Standard deviation of log initial assets + "pLvlInitMean": 0, # Mean of log initial permanent income + "pLvlInitStd": 0, # Standard deviation of log initial permanent income + "PermGroFacAgg": 1.0, # Aggregate permanent income growth factor + "T_age": None, # Age after which simulated agents are automatically killed + # Parameters for Transition Matrix Simulation + "mMin": 0.001, + "mMax": 20, + "mCount": 48, + "mFac": 3, +} + + +# %% Test Transition Matrix Methods + + +class test_Transition_Matrix_Methods(unittest.TestCase): + def test_calc_tran_matrix(self): + example1 = NewKeynesianConsumerType(**jacobian_test_dict) + example1.cycles = 0 + example1.solve() + + example1.define_distribution_grid() + p = example1.dist_pGrid # Grid of permanent income levels + + example1.calc_transition_matrix() + c = example1.cPol_Grid # Normalized Consumption Policy Grid + asset = example1.aPol_Grid # Normalized Asset Policy Grid + + example1.calc_ergodic_dist() + vecDstn = example1.vec_erg_dstn + # Distribution of market resources and permanent income as a vector (m*p)x1 vector where + + # Compute Aggregate Consumption and Aggregate Assets + gridc = np.zeros((len(c), len(p))) + grida = np.zeros((len(asset), len(p))) + + for j in range(len(p)): + gridc[:, j] = p[j] * c # unnormalized Consumption policy grid + grida[:, j] = p[j] * asset # unnormalized Asset policy grid + + AggC = np.dot(gridc.flatten(), vecDstn) # Aggregate Consumption + AggA = np.dot(grida.flatten(), vecDstn) # Aggregate Assets + + self.assertAlmostEqual(AggA[0], 1.19513, places=4) + self.assertAlmostEqual(AggC[0], 1.00417, places=4) + + +# %% Test Heterogenous Agent Jacobian Methods + + +class test_Jacobian_methods(unittest.TestCase): + def test_calc_jacobian(self): + Agent = NewKeynesianConsumerType(**jacobian_test_dict) + Agent.compute_steady_state() + CJAC_Perm, AJAC_Perm = Agent.calc_jacobian("PermShkStd", 50) + + self.assertAlmostEqual(CJAC_Perm.T[30][29], -0.06120, places=HARK_PRECISION) + self.assertAlmostEqual(CJAC_Perm.T[30][30], 0.05307, places=HARK_PRECISION) + self.assertAlmostEqual(CJAC_Perm.T[30][31], 0.04674, places=HARK_PRECISION) diff --git a/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py b/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py index 1b8113add..7f8e0a421 100644 --- a/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py +++ b/HARK/ConsumptionSaving/tests/test_IndShockConsumerType.py @@ -836,54 +836,3 @@ def test_compare_t_age_t_cycle_premature_death(self): # (the exception from before should not happen # because we are killing agents before T_cycle) self.assertTrue(np.all(hist["t_age"] == hist["t_cycle"])) - - -# %% Test Transition Matrix Methods - - -class test_Transition_Matrix_Methods(unittest.TestCase): - def test_calc_tran_matrix(self): - example1 = IndShockConsumerType(**dict_harmenberg) - example1.cycles = 0 - example1.solve() - - example1.define_distribution_grid() - p = example1.dist_pGrid # Grid of permanent income levels - - example1.calc_transition_matrix() - c = example1.cPol_Grid # Normalized Consumption Policy Grid - asset = example1.aPol_Grid # Normalized Asset Policy Grid - - example1.calc_ergodic_dist() - vecDstn = example1.vec_erg_dstn - # Distribution of market resources and permanent income as a vector (m*p)x1 vector where - - # Compute Aggregate Consumption and Aggregate Assets - gridc = np.zeros((len(c), len(p))) - grida = np.zeros((len(asset), len(p))) - - for j in range(len(p)): - gridc[:, j] = p[j] * c # unnormalized Consumption policy grid - grida[:, j] = p[j] * asset # unnormalized Asset policy grid - - AggC = np.dot(gridc.flatten(), vecDstn) # Aggregate Consumption - AggA = np.dot(grida.flatten(), vecDstn) # Aggregate Assets - - self.assertAlmostEqual(AggA[0], 1.19513, places=4) - self.assertAlmostEqual(AggC[0], 1.00417, places=4) - - -# %% Test Heterogenous Agent Jacobian Methods - - -class test_Jacobian_methods(unittest.TestCase): - def test_calc_jacobian(self): - Agent = IndShockConsumerType(**dict_harmenberg) - - Agent.compute_steady_state() - - CJAC_Perm, AJAC_Perm = Agent.calc_jacobian("PermShkStd", 50) - - self.assertAlmostEqual(CJAC_Perm.T[30][29], -0.06120, places=HARK_PRECISION) - self.assertAlmostEqual(CJAC_Perm.T[30][30], 0.05307, places=HARK_PRECISION) - self.assertAlmostEqual(CJAC_Perm.T[30][31], 0.04674, places=HARK_PRECISION) diff --git a/HARK/core.py b/HARK/core.py index 4d96241e2..42435b070 100644 --- a/HARK/core.py +++ b/HARK/core.py @@ -717,7 +717,7 @@ def unpack(self, parameter): self.__dict__[parameter].append(solution_t.__dict__[parameter]) self.add_to_time_vary(parameter) - def solve(self, verbose=False, run_presolve=True): + def solve(self, verbose=False, presolve=True): """ Solve the model for this instance of an agent type by backward induction. Loops through the sequence of one period problems, passing the solution @@ -727,7 +727,7 @@ def solve(self, verbose=False, run_presolve=True): ---------- verbose : bool, optional If True, solution progress is printed to screen. Default False. - run_presolve : bool, optional + presolve : bool, optional If True (default), the pre_solve method is run before solving. Returns @@ -741,7 +741,7 @@ def solve(self, verbose=False, run_presolve=True): with np.errstate( divide="ignore", over="ignore", under="ignore", invalid="ignore" ): - if run_presolve: + if presolve: self.pre_solve() # Do pre-solution stuff self.solution = solve_agent( self, verbose diff --git a/examples/ConsIndShockModel/IndShockConsumerType_Jacobian_Example.ipynb b/examples/ConsIndShockModel/IndShockConsumerType_Jacobian_Example.ipynb deleted file mode 100644 index cc0df25a2..000000000 --- a/examples/ConsIndShockModel/IndShockConsumerType_Jacobian_Example.ipynb +++ /dev/null @@ -1,417 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4ec2c3a0", - "metadata": {}, - "source": [ - "# Computing Heterogenous Agent Jacobians in HARK\n", - "\n", - "By William Du\n", - "\n", - "This notebook illustrates how to compute Heterogenous Agent Jacobian matrices in HARK.\n", - "\n", - "These matrices are a fundamental building building block to solving Heterogenous Agent New Keynesian Models with the sequence space jacobian methodology. For more information, see [Auclert, Rognlie, Bardoszy, and Straub (2021)](https://onlinelibrary.wiley.com/doi/abs/10.3982/ECTA17434)\n", - "\n", - "For the IndShockConsumerType, Jacobians of Consumption and Saving can be computed with respect to the following parameters:\n", - "LivPrb, PermShkStd,TranShkStd,UnempPrb, Rfree, IncUnemp." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "37ca5c3e", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "from HARK.ConsumptionSaving.ConsIndShockModel import IndShockConsumerType\n", - "\n", - "\n", - "import time\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "id": "1a6459df", - "metadata": {}, - "source": [ - "## Create Agent" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c49cf2b0", - "metadata": {}, - "outputs": [], - "source": [ - "# Dictionary for Agent\n", - "\n", - "Dict = {\n", - " # Solving Parameters\n", - " \"aXtraMax\": 1000,\n", - " \"aXtraCount\": 200,\n", - " # Transition Matrix Simulations Parameters\n", - " \"mMax\": 10000,\n", - " \"mMin\": 1e-6,\n", - " \"mCount\": 300,\n", - " \"mFac\": 3,\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "aff29a01", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "Agent = IndShockConsumerType(**Dict)" - ] - }, - { - "cell_type": "markdown", - "id": "88715dab", - "metadata": {}, - "source": [ - "## Compute Steady State" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "70f04d67", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "GPFRaw = 0.984539 \n", - "GPFNrm = 0.993777 \n", - "GPFAggLivPrb = 0.964848 \n", - "Thorn = APF = 0.994384 \n", - "PermGroFacAdj = 1.000611 \n", - "uInvEpShkuInv = 0.990704 \n", - "VAF = 0.932054 \n", - "WRPF = 0.213705 \n", - "DiscFacGPFNrmMax = 0.972061 \n", - "DiscFacGPFAggLivPrbMax = 1.010600 \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Seconds to compute steady state 8.209359407424927\n" - ] - } - ], - "source": [ - "start = time.time()\n", - "Agent.compute_steady_state()\n", - "print(\"Seconds to compute steady state\", time.time() - start)" - ] - }, - { - "cell_type": "markdown", - "id": "6e11268d", - "metadata": {}, - "source": [ - "## Compute Jacobians\n", - "\n", - "Shocks possible: LivPrb, PermShkStd,TranShkStd, DiscFac,UnempPrb, Rfree, IncUnemp" - ] - }, - { - "cell_type": "markdown", - "id": "21b1f860", - "metadata": {}, - "source": [ - "### Shock to Standard Deviation to Permanent Income Shocks" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e8ec958b", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Seconds to calculate Jacobian 9.14733076095581\n" - ] - } - ], - "source": [ - "start = time.time()\n", - "\n", - "CJAC_Perm, AJAC_Perm = Agent.calc_jacobian(\"PermShkStd\", 300)\n", - "\n", - "print(\"Seconds to calculate Jacobian\", time.time() - start)" - ] - }, - { - "cell_type": "markdown", - "id": "bc78e4b8", - "metadata": {}, - "source": [ - "#### Consumption Jacobians" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "979e3529", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "data": { - "image/png": "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vv/+e/G9pUuXCgA6PN5991239ysIgvDjjz8K11xzjaBWq4XLLrtMePbZZ3t8/DU1NQIAoaampsfbEhERkW+4+/dbJgiC4Lv45b+MRiOio6NRU1MDjUbj68MhIiIiN7j795vjKURERNTnMAARERFRn8MARERERH0OAxARERH1OQxARERE1OcwABEREVGfwwBEREREfQ4DEBEREfU5DEBERETU5zAAERERUZ/DAERERER9DgMQERER9Tkhvj4Af2W/R6zRaPTxkRAREZG77H+3u7vXOwNQJ2prawEAycnJPj4SIiIi6qna2lpER0d3+rlM6C4i9VFWqxVnz55FVFQUZDKZx/ZrNBqRnJyMU6dOQaPReGy/wYrny308Vz3D8+U+niv38Vz1jBTnSxAE1NbWIikpCXJ55zN9WAHqhFwux4ABAyTbv0aj4T+OHuD5ch/PVc/wfLmP58p9PFc94+nz1VXlx46ToImIiKjPYQAiIiKiPocByMvUajWWLl0KtVrt60MJCDxf7uO56hmeL/fxXLmP56pnfHm+OAmaiIiI+hxWgIiIiKjPYQAiIiKiPocBiIiIiPocBiAiIiLqcxiAvGzFihVISUlBaGgoMjIysHv3bl8fks8tW7YMMpnM6TF8+HDx86amJtx7773o378/IiMjMWvWLFRUVPjwiL1r27Zt+O1vf4ukpCTIZDJs2LDB6XNBEPDkk08iMTERYWFhyMrKwtGjR53aVFVVYd68edBoNNBqtcjNzUVdXZ0Xv4V3dHeu7rjjjg6/azk5OU5t+sq5KigowNVXX42oqCjEx8dj5syZKC0tdWrjzr+9srIy3HDDDQgPD0d8fDweeughWCwWb34VyblzriZPntzhd+uuu+5yatMXzhUAvPnmmxg9erR4ccPMzEz8/e9/Fz/3l98rBiAvWrduHfLz87F06VLs27cPY8aMQXZ2NiorK319aD535ZVXory8XHz88MMP4meLFi3CV199hfXr12Pr1q04e/YsbrrpJh8erXfV19djzJgxWLFihcvPn3/+ebz22mtYuXIldu3ahYiICGRnZ6OpqUlsM2/ePBw+fBiFhYXYuHEjtm3bhoULF3rrK3hNd+cKAHJycpx+1/72t785fd5XztXWrVtx7733YufOnSgsLITZbMb06dNRX18vtunu315LSwtuuOEGNDc3Y8eOHXj//ffx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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(CJAC_Perm.T[0])\n", - "plt.plot(CJAC_Perm.T[10])\n", - "plt.plot(CJAC_Perm.T[30])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5a02ac39", - "metadata": {}, - "source": [ - "#### Asset Jacobians" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "201fbc06", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(AJAC_Perm.T[0])\n", - "plt.plot(AJAC_Perm.T[10])\n", - "plt.plot(AJAC_Perm.T[30])\n", - "plt.plot(AJAC_Perm.T[60])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5ae3a774", - "metadata": {}, - "source": [ - "## Shock to Real Interest Rate" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "318efe19", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "CJAC_Rfree, AJAC_Rfree = Agent.calc_jacobian(\"Rfree\", 300)" - ] - }, - { - "cell_type": "markdown", - "id": "f172f736", - "metadata": {}, - "source": [ - "#### Consumption Jacobians" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "20ae8342", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "data": { - "image/png": "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9YrtjTrrrLMwfvx4LFiwAHv27MG0adOsHmZRnX766diyZQv6+vrw5JNP4rrrrsNLL71U7GGdgNNGGdTX18Plcp3QUd3V1YXm5uYijcq+ampqcNppp2H37t1obm5GIBBAb29v3DG8dtD//ul+r5qbm09oCg+FQujp6Rnz12/q1Kmor6/H7t27AYzNa7VkyRI8++yzePHFFzFx4kT99Wz+3TU3Nyf93dO+dzJKdb2SaW9vB4C436+xcr28Xi9OOeUUzJs3DytWrMCsWbPws5/9zHa/VwwvGXi9XsybNw9r1qzRX1MUBWvWrEFHR0cRR2ZPg4OD2LNnD8aPH4958+bB4/HEXbtdu3Zh//79Y/7aTZkyBc3NzXHXpr+/Hxs2bNCvTUdHB3p7e7F582b9mBdeeAGKouj/z3Wsev/993Hs2DGMHz8ewNi6VkIILFmyBE899RReeOEFTJkyJe772fy76+jowNtvvx0X+FavXo2qqirMmDHDmr+IRTJdr2S2bNkCAHG/X2PleiVSFAV+v99+v1eGtv+epP7whz8In88nHnnkEbF9+3Zx0003iZqamriO6rHq9ttvF2vXrhV79+4Vr776qli4cKGor68XR44cEUII8dWvflVMmjRJvPDCC+L1118XHR0doqOjo8ijtsbAwIB48803xZtvvikAiPvuu0+8+eab4r333hNCCHHPPfeImpoa8ec//1m89dZb4tJLLxVTpkwRIyMj+nssXrxYzJkzR2zYsEG88sor4tRTTxVXX311sf5Kpkl3rQYGBsT//t//W6xfv17s3btXPP/882Lu3Lni1FNPFaOjo/p7jJVrdfPNN4vq6mqxdu1acfjwYf1reHhYPybTv7tQKCRmzpwpLrroIrFlyxaxatUq0dDQIO68885i/JVMlel67d69W3z/+98Xr7/+uti7d6/485//LKZOnSouvPBC/T3GyvW64447xEsvvST27t0r3nrrLXHHHXcISZLEP/7xDyGEvX6vGF6y9POf/1xMmjRJeL1ece6554rXXnut2EOyhSuvvFKMHz9eeL1eMWHCBHHllVeK3bt3698fGRkRt9xyi6itrRVlZWXiU5/6lDh8+HARR2ydF198UQA44eu6664TQqjLpf/93/9dNDU1CZ/PJxYsWCB27doV9x7Hjh0TV199taioqBBVVVXi+uuvFwMDA0X425gr3bUaHh4WF110kWhoaBAej0dMnjxZ3HjjjSf8j4excq2SXScA4r/+67/0Y7L5d7dv3z5x8cUXi9LSUlFfXy9uv/12EQwGLf7bmC/T9dq/f7+48MILRV1dnfD5fOKUU04R3/rWt0RfX1/c+4yF6/WlL31JTJ48WXi9XtHQ0CAWLFigBxch7PV7JQkhhLG1HCIiIiLzsOeFiIiIHIXhhYiIiByF4YWIiIgcheGFiIiIHIXhhYiIiByF4YWIiIgcheGFiIiIHIXhhYiIiByF4YWIiIgcheGFiIiIHIXhhYiIiByF4YWIiIgc5f8H21XyrHtmTJUAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(CJAC_Rfree.T[0])\n", - "plt.plot(CJAC_Rfree.T[10])\n", - "plt.plot(CJAC_Rfree.T[30])\n", - "plt.plot(CJAC_Rfree.T[60])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "22187e1b", - "metadata": {}, - "source": [ - "#### Asset Jacobians" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "344473d0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABauklEQVR4nO3de5xVdb0//tda+z53YJgbDFfxgigoBE2m2XGSzDC7nDhqaZyOHQ3Ow6Q6iSVonRPmOXo8FcU3y/T8TiXpSS010jAwEzVA8o4i4CAwMwww95l9W5/fH2t91r7M3nv22te12a/n4zGPGfZ1sRrbL96f9+e9FCGEABEREVGRqMU+ACIiIipvDCNERERUVAwjREREVFQMI0RERFRUDCNERERUVAwjREREVFQMI0RERFRUDCNERERUVM5iH0A6NE3D4cOHUV1dDUVRin04RERElAYhBAYGBtDS0gJVTV7/KIkwcvjwYbS2thb7MIiIiCgDBw8exNSpU5PeXxJhpLq6GoD+l6mpqSny0RAREVE6+vv70draan6OJ1MSYUQuzdTU1DCMEBERlZjxWizYwEpERERFxTBCRERERcUwQkREREXFMEJERERFxTBCRERERcUwQkREREXFMEJERERFxTBCRERERcUwQkREREXFMEJERERFxTBCRERERWU5jDzzzDNYtmwZWlpaoCgKHnnkkXGfs3XrVpx77rnweDw45ZRTcN9992VwqERERHQyshxGhoaGMH/+fGzYsCGtx+/fvx+XXnopPvzhD2P37t34yle+gn/6p3/CH/7wB8sHS8CxkWP42Ss/Q89IT7EPJW0iHMbx++/H6OuvF/tQiIjIhixftfeSSy7BJZdckvbjN27ciJkzZ+LOO+8EAJxxxhl49tln8V//9V9YunSp1bcve79+69f40e4fYTg0jH8551+KfThpGd6xE13rb0fFokWY/r//X7EPh4iIbCbvPSPbt29He3t7zG1Lly7F9u3bkz7H7/ejv78/5suWtHDB33IwMAgAGAgMFPy9M6UN6scaHiidYyYiosLJexjp7OxEY2NjzG2NjY3o7+/HyMhIwuesX78etbW15ldra2u+D9O6534IfG8GcOTlgr5tSAsBAIJasKDvmw0RDBnfS+eYiYiocGy5m2bNmjXo6+szvw4ePFjsQxpr/zOAvx84tKOgbxsWejUm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1taG3t5e7Ny503zM008/DU3TzP+zLGfvvfcejh07hubmZgDldb6EEFi1ahUefvhhPP3005g5c2bM/en8t9fW1oZXXnklJsA99dRTqKmpwdy5cwvzFymA8c5VIrt37waAmN+tcjhXyWiaBr/fb6/fq5y1wpaYBx54QHg8HnHfffeJ119/XXzpS18SdXV1MR3D5eirX/2q2Lp1q9i/f7/4y1/+Itrb20V9fb3o7u4WQghx3XXXiWnTpomnn35a7NixQ7S1tYm2trYiH3VhDAwMiJdeekm89NJLAoC46667xEsvvSTeffddIYQQt99+u6irqxOPPvqoePnll8UnPvEJMXPmTDEyMmK+xkc/+lFxzjnniBdeeEE8++yzYs6cOeKKK64o1l8pr1Kdr4GBAfG1r31NbN++Xezfv1/88Y9/FOeee66YM2eOGB0dNV+jXM7X9ddfL2pra8XWrVvFkSNHzK/h4WHzMeP9txcKhcS8efPExRdfLHbv3i02b94sJk+eLNasWVOMv1LejHeu9u7dK7797W+LHTt2iP3794tHH31UzJo1S1xwwQXma5TLuRJCiJtuukls27ZN7N+/X7z88svipptuEoqiiCeffFIIYZ/fq7INI0II8YMf/EBMmzZNuN1usXjxYvH8888X+5CKbvny5aK5uVm43W4xZcoUsXz5crF3717z/pGREfHlL39ZTJgwQVRUVIhPfvKT4siRI0U84sL505/+JACM+brmmmuEEPr23ltuuUU0NjYKj8cjLrroIrFnz56Y1zh27Ji44oorRFVVlaipqRErVqwQAwMDRfjb5F+q8zU8PCwuvvhiMXnyZOFyucT06dPFtddeO+YfA+VyvhKdJwDi5z//ufmYdP7bO3DggLjkkkuEz+cT9fX14qtf/aoIBoMF/tvk13jnqqOjQ1xwwQVi4sSJwuPxiFNOOUV8/etfF319fTGvUw7nSggh/vEf/1FMnz5duN1uMXnyZHHRRReZQUQI+/xeKUIIkbs6CxEREZE1ZdkzQkRERPbBMEJERERFxTBCRERERcUwQkREREXFMEJERERFxTBCRERERcUwQkREREXFMEJERERFxTBCRERERcUwQkREREXFMEJERERFxTBCRERERfX/A6lalO1Kmw2jAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(AJAC_Rfree.T[0])\n", - "plt.plot(AJAC_Rfree.T[10])\n", - "plt.plot(AJAC_Rfree.T[30])\n", - "plt.plot(AJAC_Rfree.T[60])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "ed5937a4", - "metadata": {}, - "source": [ - "## Shock to Unemployment Probability" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "943bb3c2", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "CJAC_UnempPrb, AJAC_UnempPrb = Agent.calc_jacobian(\"UnempPrb\", 300)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b423bcb7", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(CJAC_UnempPrb.T[0])\n", - "plt.plot(CJAC_UnempPrb.T[10])\n", - "plt.plot(CJAC_UnempPrb.T[30])\n", - "plt.plot(CJAC_UnempPrb.T[60])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d5399ce7", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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TJ8+Xf++kf/2Ghoa4v7902470yR6reJZsWIFAMT83Sqm18rtdmPevHlYunQp2tvbsWTJEnz/+9/Pq79XRRlG3G43li5diu3bt+vfUxQF27dvR0tLi41Xln+GhoZw4MABTJ06FUuXLoXL5Yp53fbv34+Ojo6if91mz56NhoaGmNdmYGAAL7zwgv7atLS0oK+vD7t27dLv8/TTT0NRFP3/WRazo0eP4uTJk5g6dSqA4nq9hBBYv349Hn30UTz99NOYPXt2zO1G/ttraWnBvn37YgLcU089hcrKSixcuDA3v0gOpHqt4tmzZw8AxPzdKobXKhFFUeDz+fLr75Vlo7AF5qGHHhIej0c88MAD4o033hCf/vSnRXV1dczEcDH60pe+JHbs2CEOHjwo/vrXv4rW1lZRV1cnTpw4IYQQ4jOf+YyYMWOGePrpp8XLL78sWlpaREtLi81XnRuDg4PilVdeEa+88ooAIO655x7xyiuviMOHDwshhLj99ttFdXW1ePzxx8XevXvFtddeK2bPni1GR0f1x7jyyivF+eefL1544QXx3HPPifnz54uPf/zjdv1KWZXs9RocHBRf/vKXxc6dO8XBgwfFn/70J/G+971PzJ8/X4yNjemPUSyv12c/+1lRVVUlduzYITo7O/WPkZER/T6p/tsLBoNi0aJF4oorrhB79uwR27ZtE5MnTxa33HKLHb9S1qR6rd59911x6623ipdfflkcPHhQPP7442LOnDnikksu0R+jWF4rIYT42te+Jp555hlx8OBBsXfvXvG1r31NSJIk/vjHPwoh8ufvVdGGESGEuPfee8WMGTOE2+0Wy5cvF88//7zdl2S7VatWialTpwq32y2mTZsmVq1aJd5991399tHRUfG5z31O1NTUCK/XKz7ykY+Izs5OG684d/785z8LABM+1qxZI4RQl/d+85vfFPX19cLj8YjLL79c7N+/P+YxTp48KT7+8Y+L8vJyUVlZKdauXSsGBwdt+G2yL9nrNTIyIq644goxefJk4XK5xMyZM8W6desm/GOgWF6veK8TAPGzn/1Mv4+R//YOHTokrrrqKlFaWirq6urEl770JREIBHL822RXqteqo6NDXHLJJaK2tlZ4PB4xb9488ZWvfEX09/fHPE4xvFZCCPHJT35SzJw5U7jdbjF58mRx+eWX60FEiPz5eyUJIYR1dRYiIiIic4pyZoSIiIjyB8MIERER2YphhIiIiGzFMEJERES2YhghIiIiWzGMEBERka0YRoiIiMhWDCNERERkK4YRIiIishXDCBEREdmKYYSIiIhsxTBCREREtvp/Jq0UvbTWbwoAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(AJAC_UnempPrb.T[0])\n", - "plt.plot(AJAC_UnempPrb.T[10])\n", - "plt.plot(AJAC_UnempPrb.T[30])\n", - "plt.plot(AJAC_UnempPrb.T[60])\n", - "plt.show()" - ] - } - ], - "metadata": { - "jupytext": { - "formats": "ipynb,py:percent" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/ConsNewKeynesianModel/Jacobian_Example.ipynb b/examples/ConsNewKeynesianModel/Jacobian_Example.ipynb new file mode 100644 index 000000000..4ec88e720 --- /dev/null +++ b/examples/ConsNewKeynesianModel/Jacobian_Example.ipynb @@ -0,0 +1,327 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4ec2c3a0", + "metadata": {}, + "source": [ + "# Computing Heterogenous Agent Jacobians in HARK\n", + "\n", + "By William Du\n", + "\n", + "This notebook illustrates how to compute Heterogenous Agent Jacobian matrices in HARK.\n", + "\n", + "These matrices are a fundamental building building block to solving Heterogenous Agent New Keynesian Models with the sequence space jacobian methodology. For more information, see [Auclert, Rognlie, Bardoszy, and Straub (2021)](https://onlinelibrary.wiley.com/doi/abs/10.3982/ECTA17434)\n", + "\n", + "For the IndShockConsumerType, Jacobians of Consumption and Saving can be computed with respect to the following parameters:\n", + "LivPrb, PermShkStd,TranShkStd,UnempPrb, Rfree, IncUnemp." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37ca5c3e", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "from HARK.ConsumptionSaving.ConsNewKeynesianModel import (\n", + " NewKeynesianConsumerType,\n", + ")\n", + "\n", + "import time\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "1a6459df", + "metadata": {}, + "source": [ + "## Create Agent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c49cf2b0", + "metadata": {}, + "outputs": [], + "source": [ + "# Dictionary for Agent\n", + "Dict = {\n", + " # Solving Parameters\n", + " \"aXtraMax\": 1000,\n", + " \"aXtraCount\": 200,\n", + " # Transition Matrix Simulations Parameters\n", + " \"mMax\": 10000,\n", + " \"mMin\": 1e-6,\n", + " \"mCount\": 300,\n", + " \"mFac\": 3,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aff29a01", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "Agent = NewKeynesianConsumerType(**Dict)" + ] + }, + { + "cell_type": "markdown", + "id": "88715dab", + "metadata": {}, + "source": [ + "## Compute Steady State" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70f04d67", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "start = time.time()\n", + "Agent.compute_steady_state()\n", + "print(\"Seconds to compute steady state\", time.time() - start)" + ] + }, + { + "cell_type": "markdown", + "id": "6e11268d", + "metadata": {}, + "source": [ + "## Compute Jacobians\n", + "\n", + "Shocks possible: LivPrb, PermShkStd,TranShkStd, DiscFac,UnempPrb, Rfree, IncUnemp" + ] + }, + { + "cell_type": "markdown", + "id": "21b1f860", + "metadata": {}, + "source": [ + "### Shock to Standard Deviation to Permanent Income Shocks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e8ec958b", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "start = time.time()\n", + "\n", + "CJAC_Perm, AJAC_Perm = Agent.calc_jacobian(\"PermShkStd\", 300)\n", + "\n", + "print(\"Seconds to calculate Jacobian\", time.time() - start)" + ] + }, + { + "cell_type": "markdown", + "id": "bc78e4b8", + "metadata": {}, + "source": [ + "#### Consumption Jacobians" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "979e3529", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "plt.plot(CJAC_Perm.T[0])\n", + "plt.plot(CJAC_Perm.T[10])\n", + "plt.plot(CJAC_Perm.T[30])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5a02ac39", + "metadata": {}, + "source": [ + "#### Asset Jacobians" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "201fbc06", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "plt.plot(AJAC_Perm.T[0])\n", + "plt.plot(AJAC_Perm.T[10])\n", + "plt.plot(AJAC_Perm.T[30])\n", + "plt.plot(AJAC_Perm.T[60])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5ae3a774", + "metadata": {}, + "source": [ + "## Shock to Real Interest Rate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "318efe19", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "CJAC_Rfree, AJAC_Rfree = Agent.calc_jacobian(\"Rfree\", 300)" + ] + }, + { + "cell_type": "markdown", + "id": "f172f736", + "metadata": {}, + "source": [ + "#### Consumption Jacobians" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20ae8342", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "plt.plot(CJAC_Rfree.T[0])\n", + "plt.plot(CJAC_Rfree.T[10])\n", + "plt.plot(CJAC_Rfree.T[30])\n", + "plt.plot(CJAC_Rfree.T[60])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "22187e1b", + "metadata": {}, + "source": [ + "#### Asset Jacobians" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "344473d0", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(AJAC_Rfree.T[0])\n", + "plt.plot(AJAC_Rfree.T[10])\n", + "plt.plot(AJAC_Rfree.T[30])\n", + "plt.plot(AJAC_Rfree.T[60])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ed5937a4", + "metadata": {}, + "source": [ + "## Shock to Unemployment Probability" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "943bb3c2", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "CJAC_UnempPrb, AJAC_UnempPrb = Agent.calc_jacobian(\"UnempPrb\", 300)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b423bcb7", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(CJAC_UnempPrb.T[0])\n", + "plt.plot(CJAC_UnempPrb.T[10])\n", + "plt.plot(CJAC_UnempPrb.T[30])\n", + "plt.plot(CJAC_UnempPrb.T[60])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5399ce7", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(AJAC_UnempPrb.T[0])\n", + "plt.plot(AJAC_UnempPrb.T[10])\n", + "plt.plot(AJAC_UnempPrb.T[30])\n", + "plt.plot(AJAC_UnempPrb.T[60])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73ee022a-7a01-4922-af76-42ae680dd4b4", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ConsIndShockModel/IndShockConsumerType_Transition_Matrix_Example.ipynb b/examples/ConsNewKeynesianModel/Transition_Matrix_Example.ipynb similarity index 96% rename from examples/ConsIndShockModel/IndShockConsumerType_Transition_Matrix_Example.ipynb rename to examples/ConsNewKeynesianModel/Transition_Matrix_Example.ipynb index 44160c834..995183868 100644 --- a/examples/ConsIndShockModel/IndShockConsumerType_Transition_Matrix_Example.ipynb +++ b/examples/ConsNewKeynesianModel/Transition_Matrix_Example.ipynb @@ -15,7 +15,7 @@ "id": "52ce71ba", "metadata": {}, "source": [ - "This Jupyter Notebook demonstrates how to non-stochastically simulate an economy with transition matrices with functions under the IndShockConsumerType.\n", + "This Jupyter Notebook demonstrates how to non-stochastically simulate an economy with transition matrices with functions under the NewKeynesianConsumerType.\n", "\n", "The three key functions to non stochastically simulate are:\n", "\n", @@ -40,14 +40,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "1f08d05f", "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ - "from HARK.ConsumptionSaving.ConsIndShockModel import IndShockConsumerType\n", + "from HARK.ConsumptionSaving.ConsNewKeynesianModel import NewKeynesianConsumerType\n", "\n", "\n", "import time\n", @@ -66,21 +66,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "0dc82f9b", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "D:\\Temp\\ipykernel_37140\\3411489450.py:25: RuntimeWarning: divide by zero encountered in log\n", - " \"aNrmInitMean\": np.log(0.0), # Mean of log initial assets ,\n" - ] - } - ], + "outputs": [], "source": [ "Dict = {\n", " # Parameters shared with the perfect foresight model\n", @@ -99,7 +90,6 @@ " \"UnempPrbRet\": 0.0000, # Probability of \"unemployment\" while retired\n", " \"IncUnempRet\": 0.0, # \"Unemployment\" benefits when retired\n", " \"T_retire\": 0, # Period of retirement (0 --> no retirement)\n", - " \"tax_rate\": 0.0, # Flat income tax rate (legacy parameter, will be removed in future)\n", " # A few other parameters\n", " \"BoroCnstArt\": 0.0, # Artificial borrowing constraint; imposed minimum level of end-of period assets\n", " \"T_cycle\": 1, # Number of periods in the cycle for this agent type\n", @@ -138,12 +128,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "fae48368", "metadata": {}, "outputs": [], "source": [ - "example1 = IndShockConsumerType(**Dict)\n", + "example1 = NewKeynesianConsumerType(**Dict)\n", "example1.cycles = 0\n", "example1.solve()" ] @@ -174,7 +164,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "749d88aa", "metadata": { "lines_to_next_cell": 2 @@ -208,20 +198,12 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "74c568e6", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Seconds to calculate both the transition matrix and the steady state distribution 42.12000322341919\n" - ] - } - ], + "outputs": [], "source": [ "example1.define_distribution_grid(num_pointsP=110, timestonest=3)\n", "p = example1.dist_pGrid # Grid of permanent income levels\n", @@ -245,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "cf241bb0", "metadata": { "lines_to_next_cell": 2 @@ -274,23 +256,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "4508692e", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "TranMatrix Assets = [0.41854438]\n", - "Simulated Assets = 0.4116282108907816\n", - "TranMatrix Consumption = [1.00153889]\n", - "Simulated Consumption = 1.0011048645886242\n" - ] - } - ], + "outputs": [], "source": [ "print(\"TranMatrix Assets = \" + str(AggA))\n", "print(\"Simulated Assets = \" + str(Monte_Carlo_Assets))\n", @@ -657,7 +628,7 @@ }, "outputs": [], "source": [ - "ss = IndShockConsumerType(**Dict)\n", + "ss = NewKeynesianConsumerType(**Dict)\n", "ss.cycles = 0\n", "ss.solve()" ] @@ -871,13 +842,16 @@ "params = deepcopy(Dict)\n", "params[\"T_cycle\"] = 20\n", "params[\"LivPrb\"] = params[\"T_cycle\"] * [ss.LivPrb[0]]\n", - "params[\"PermGroFac\"] = params[\"T_cycle\"] * [1]\n", + "params[\"PermGroFac\"] = params[\"T_cycle\"] * [1.0]\n", "params[\"PermShkStd\"] = params[\"T_cycle\"] * [ss.PermShkStd[0]]\n", "params[\"TranShkStd\"] = params[\"T_cycle\"] * [ss.TranShkStd[0]]\n", + "params[\"tax_rate\"] = params[\"T_cycle\"] * [ss.tax_rate[0]]\n", + "params[\"labor\"] = params[\"T_cycle\"] * [ss.labor[0]]\n", + "params[\"wage\"] = params[\"T_cycle\"] * [ss.wage[0]]\n", "params[\"Rfree\"] = params[\"T_cycle\"] * [ss.Rfree]\n", "params[\"DiscFac\"] = params[\"T_cycle\"] * [ss.DiscFac]\n", "\n", - "FinHorizonAgent = IndShockConsumerType(**params)\n", + "FinHorizonAgent = NewKeynesianConsumerType(**params)\n", "FinHorizonAgent.cycles = 1\n", "\n", "FinHorizonAgent.del_from_time_inv(\n", diff --git a/examples/SSJ-Example/KS-HARK-presentation.ipynb b/examples/SSJ-Example/KS-HARK-presentation.ipynb new file mode 100644 index 000000000..c4a3ec361 --- /dev/null +++ b/examples/SSJ-Example/KS-HARK-presentation.ipynb @@ -0,0 +1,585 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "602e0365", + "metadata": {}, + "source": [ + "# Solving Krusell Smith Model with HARK and SSJ\n", + "\n", + "By William Du" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46e98a1e", + "metadata": {}, + "outputs": [], + "source": [ + "%pip install sequence_jacobian -q" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "58617d0d", + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from scipy import optimize\n", + "from sequence_jacobian import create_model, simple # functions\n", + "from sequence_jacobian.classes import JacobianDict, SteadyStateDict\n", + "\n", + "from HARK.ConsumptionSaving.ConsNewKeynesianModel import NewKeynesianConsumerType" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50a586f7", + "metadata": {}, + "outputs": [], + "source": [ + "calibration = {\n", + " \"eis\": 1,\n", + " \"delta\": 0.025,\n", + " \"alpha\": 0.11,\n", + " \"L\": 1.0,\n", + " \"K\": 1.0,\n", + " \"Y\": 1.0,\n", + " \"r\": 0.01,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a97701f", + "metadata": {}, + "outputs": [], + "source": [ + "L_ss = 1.0 # Steady state labor\n", + "r_ss = 0.01 # steady state interest rate\n", + "Y_ss = 1.0 # steady state output" + ] + }, + { + "cell_type": "markdown", + "id": "1bac99bf", + "metadata": {}, + "source": [ + "## \n", + "\n", + "Given these steady state choices, we will need to find $K, Z$ to clear the firm first order conditions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e8a59d1", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.optimize import root\n", + "\n", + "\n", + "def your_funcs(X):\n", + " L = calibration[\"L\"]\n", + " alpha = calibration[\"alpha\"]\n", + " delta = calibration[\"delta\"]\n", + "\n", + " K, Z = X\n", + " # all RHS have to be 0\n", + " f = [\n", + " alpha * Z * (K / L) ** (alpha - 1) - delta - r_ss, # r = MPK\n", + " Z * K**alpha * L ** (1 - alpha) - Y_ss, # Y = Z*F(K,L)\n", + " ]\n", + "\n", + " return f\n", + "\n", + "\n", + "sol = root(your_funcs, [1.0, 1.0]) # find roots\n", + "\n", + "K_ss, Z_ss = sol.x" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e580acc", + "metadata": {}, + "outputs": [], + "source": [ + "print(sol)" + ] + }, + { + "cell_type": "markdown", + "id": "922dce5d", + "metadata": {}, + "source": [ + " Let's double check the roots we find produce our chosen steady state values for $ r, Y , L$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b15804e", + "metadata": {}, + "outputs": [], + "source": [ + "def firm(\n", + " K, Z, L=calibration[\"L\"], alpha=calibration[\"alpha\"], delta=calibration[\"delta\"]\n", + "):\n", + " r = alpha * Z * (K / L) ** (alpha - 1) - delta\n", + " w = (1 - alpha) * Z * (K / L) ** alpha\n", + " Y = Z * K**alpha * L ** (1 - alpha)\n", + " return r, w, Y\n", + "\n", + "\n", + "r_ss, w_ss, Y_ss = firm(sol.x[0], sol.x[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "08aa3eeb", + "metadata": {}, + "outputs": [], + "source": [ + "print(r_ss, w_ss, Y_ss)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89a3c40a", + "metadata": {}, + "outputs": [], + "source": [ + "HANK_Dict = {\n", + " # Parameters shared with the perfect foresight model\n", + " \"CRRA\": calibration[\"eis\"], # Coefficient of relative risk aversion\n", + " \"Rfree\": (1 + r_ss), # Interest factor on assets\n", + " \"DiscFac\": 0.98, # Intertemporal discount factor\n", + " \"LivPrb\": [0.99375], # Survival probability\n", + " \"PermGroFac\": [1.00], # Permanent income growth factor\n", + " # Parameters that specify the income distribution over the lifecycle\n", + " # Standard deviation of log permanent shocks to income\n", + " \"PermShkStd\": [0.06],\n", + " \"PermShkCount\": 5, # Number of points in discrete approximation to permanent income shocks\n", + " # Standard deviation of log transitory shocks to income\n", + " \"TranShkStd\": [0.2],\n", + " \"TranShkCount\": 5,\n", + " # HANK params\n", + " \"tax_rate\": [\n", + " 0\n", + " ], # set to 0.0 because we are going to assume that labor here is actually after tax income\n", + " \"labor\": [L_ss],\n", + " \"wage\": [w_ss],\n", + " # Number of points in discrete approximation to transitory income shocks\n", + " \"UnempPrb\": 0.0, # Probability of unemployment while working\n", + " \"IncUnemp\": 0.0, # Unemployment benefits replacement rate\n", + " \"UnempPrbRet\": 0.0000, # Probability of \"unemployment\" while retired\n", + " \"IncUnempRet\": 0.0, # \"Unemployment\" benefits when retired\n", + " \"T_retire\": 0.0, # Period of retirement (0 --> no retirement)\n", + " # Parameters for constructing the \"assets above minimum\" grid\n", + " \"aXtraMin\": 0.0001, # Minimum end-of-period \"assets above minimum\" value\n", + " \"aXtraMax\": 2000, # Maximum end-of-period \"assets above minimum\" value\n", + " \"aXtraCount\": 200, # Number of points in the base grid of \"assets above minimum\"\n", + " # Exponential nesting factor when constructing \"assets above minimum\" grid\n", + " \"aXtraNestFac\": 3,\n", + " \"aXtraExtra\": None, # Additional values to add to aXtraGrid\n", + " # Transition Matrix simulation parameters\n", + " \"mCount\": 200,\n", + " \"mMax\": 2000,\n", + " \"mMin\": 0.0001,\n", + " \"mFac\": 3,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "3be9593e", + "metadata": {}, + "source": [ + "# Create HARK agent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2754eb05", + "metadata": {}, + "outputs": [], + "source": [ + "Agent = NewKeynesianConsumerType(**HANK_Dict)" + ] + }, + { + "cell_type": "markdown", + "id": "fa266888", + "metadata": {}, + "source": [ + "# Find Steady state discount factor clear asset market\n", + "\n", + "We will estimate the discount factor to ensure that asset supply equals the steady state capital we found earlier. \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b97b7a8", + "metadata": {}, + "outputs": [], + "source": [ + "def A_ss_func(beta):\n", + " HANK_Dict[\"DiscFac\"] = beta\n", + "\n", + " Agent_func = NewKeynesianConsumerType(**HANK_Dict, verbose=False)\n", + " A_ss = Agent_func.compute_steady_state()[0]\n", + "\n", + " return A_ss\n", + "\n", + "\n", + "def ss_dif(beta):\n", + " return A_ss_func(beta) - Asset_target\n", + "\n", + "\n", + "start = time.time()\n", + "Asset_target = K_ss\n", + "\n", + "DiscFac = optimize.brentq(ss_dif, 0.8, 0.9999)\n", + "\n", + "print(\"Time taken to solve for steady state\", time.time() - start)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2dfab8c", + "metadata": {}, + "outputs": [], + "source": [ + "# Create a new agent\n", + "HANK_Dict[\"DiscFac\"] = DiscFac\n", + "Agent_GE = NewKeynesianConsumerType(**HANK_Dict, verbose=False)\n", + "A_ss, C_ss = Agent_GE.compute_steady_state()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f59e006", + "metadata": {}, + "outputs": [], + "source": [ + "# to make sure goods and asset markets clear\n", + "print(\"goods_clearing\", Y_ss - C_ss - calibration[\"delta\"] * K_ss)\n", + "print(\"asset_clearing\", A_ss - K_ss)" + ] + }, + { + "cell_type": "markdown", + "id": "a8167383", + "metadata": {}, + "source": [ + "# Computing Heterogenous Agent Jacobians" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c05c0391", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "\n", + "CJACW, AJACW = Agent_GE.calc_jacobian(\"wage\", 300) # Wage jacobians\n", + "\n", + "print(\"Time taken to compute jacobians\", time.time() - start)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39f4d57e", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(CJACW.T[0])\n", + "plt.plot(CJACW.T[20])\n", + "plt.plot(CJACW.T[50])\n", + "plt.plot(CJACW.T[100])\n", + "plt.xlim(-2, 300)\n", + "plt.plot(np.arange(300), np.zeros(300), color=\"k\")\n", + "plt.title(\"Consumption Jacobian Wage\")\n", + "plt.xlabel(\"quarters\")\n", + "plt.ylabel(\"C response\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e072e75a", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "\n", + "CJACR, AJACR = Agent_GE.calc_jacobian(\"Rfree\", 300) # Rfree jacobians\n", + "\n", + "print(\"Time taken to compute jacobians\", time.time() - start)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72b5f7b6", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(CJACR.T[0])\n", + "plt.plot(CJACR.T[30])\n", + "plt.plot(CJACR.T[50])\n", + "plt.plot(np.arange(300), np.zeros(300), color=\"k\")\n", + "plt.title(\"Consumption Jacobian interest rate\")\n", + "plt.xlabel(\"quarters\")\n", + "plt.ylabel(\"C response\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "03d2d6a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Store Jacobians in JacobianDict Object\n", + "Jacobian_Dict = JacobianDict(\n", + " {\n", + " \"C\": {\n", + " \"w\": CJACW,\n", + " \"r\": CJACR,\n", + " },\n", + " \"A\": {\n", + " \"w\": AJACW,\n", + " \"r\": AJACR,\n", + " },\n", + " }\n", + ")\n", + "\n", + "# Construct SteadyStateDict object\n", + "SteadyState_Dict = SteadyStateDict(\n", + " {\n", + " \"asset_mkt\": 0.0,\n", + " \"goods_mkt\": 0.0,\n", + " \"r\": r_ss,\n", + " \"Y\": Y_ss,\n", + " \"A\": K_ss,\n", + " \"C\": C_ss,\n", + " \"Z\": Z_ss,\n", + " \"delta\": calibration[\"delta\"],\n", + " \"alpha\": calibration[\"alpha\"],\n", + " \"L\": L_ss,\n", + " \"K\": K_ss,\n", + " \"w\": w_ss,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d3669fab", + "metadata": {}, + "source": [ + "## Other Blocks of the Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87abc1e4", + "metadata": {}, + "outputs": [], + "source": [ + "@simple\n", + "def firm(K, L, Z, alpha, delta):\n", + " r = alpha * Z * (K(-1) / L) ** (alpha - 1) - delta\n", + " w = (1 - alpha) * Z * (K(-1) / L) ** alpha\n", + " Y = Z * K(-1) ** alpha * L ** (1 - alpha)\n", + " return r, w, Y\n", + "\n", + "\n", + "@simple\n", + "def mkt_clearing(K, A, Y, C, delta):\n", + " asset_mkt = A - K\n", + " goods_mkt = Y - C - delta * K\n", + " return asset_mkt, goods_mkt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f95cd93a", + "metadata": {}, + "outputs": [], + "source": [ + "ks = create_model([Jacobian_Dict, firm, mkt_clearing], name=\"Krusell-Smith\")" + ] + }, + { + "cell_type": "markdown", + "id": "f3d569b5", + "metadata": {}, + "source": [ + "# Solving for Impulse Responses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48330acf", + "metadata": {}, + "outputs": [], + "source": [ + "T = 300 # <-- the length of the IRF\n", + "rho_Z = 0.8 # persistence of IRF shock\n", + "dZ = 0.001 * Z_ss * rho_Z ** np.arange(T)\n", + "shocks = {\"Z\": dZ}\n", + "\n", + "inputs = [\"Z\"]\n", + "unknowns = [\"K\"]\n", + "targets = [\"asset_mkt\"]\n", + "\n", + "\n", + "irfs_Z = ks.solve_impulse_linear(SteadyState_Dict, unknowns, targets, shocks)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f5a085f", + "metadata": {}, + "outputs": [], + "source": [ + "def show_irfs(\n", + " irfs_list,\n", + " variables,\n", + " labels=[\" \"],\n", + " ylabel=r\"Percentage points (dev. from ss)\",\n", + " T_plot=50,\n", + " figsize=(18, 6),\n", + "):\n", + " if len(irfs_list) != len(labels):\n", + " labels = [\" \"] * len(irfs_list)\n", + " n_var = len(variables)\n", + " fig, ax = plt.subplots(1, n_var, figsize=figsize, sharex=True)\n", + " for i in range(n_var):\n", + " # plot all irfs\n", + " for j, irf in enumerate(irfs_list):\n", + " ax[i].plot(irf[variables[i]][:50], label=labels[j])\n", + " ax[i].set_title(variables[i])\n", + " ax[i].set_xlabel(r\"$t$\")\n", + " if i == 0:\n", + " ax[i].set_ylabel(ylabel)\n", + " ax[i].legend()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71cceab3", + "metadata": {}, + "outputs": [], + "source": [ + "# Impulse Responses to Productivity Shock\n", + "show_irfs([irfs_Z], [\"Y\", \"C\", \"Z\", \"K\", \"r\"])" + ] + }, + { + "cell_type": "markdown", + "id": "a0130fc3", + "metadata": {}, + "source": [ + "# Simulating the model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9887a17", + "metadata": {}, + "outputs": [], + "source": [ + "from estimation.plots import plot_timeseries\n", + "from estimation.routines import simulate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74dbf468", + "metadata": {}, + "outputs": [], + "source": [ + "outputs = [\"Y\", \"K\", \"r\"]\n", + "\n", + "sigmas = {\"Z\": 0.001}\n", + "rhos = {\"Z\": 0.8}\n", + "impulses = {}\n", + "\n", + "\n", + "for i in inputs:\n", + " own_shock = {i: sigmas[i] * rhos[i] ** np.arange(T)}\n", + " impulses[i] = ks.solve_impulse_linear(\n", + " SteadyState_Dict, unknowns, targets, own_shock\n", + " )\n", + "\n", + "\n", + "T_sim = 156 # 39 years, as in the original SW (2007) sample\n", + "data_simul = simulate(list(impulses.values()), outputs, T_sim)\n", + "plot_timeseries(data_simul, (1, 3), figsize=(12, 4))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27732edd", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/SSJ-Example/KS_DAG.jpeg b/examples/SSJ-Example/KS_DAG.jpeg new file mode 100644 index 000000000..c772ed245 Binary files /dev/null and b/examples/SSJ-Example/KS_DAG.jpeg differ diff --git a/examples/SSJ-Example/SSJ_example.ipynb b/examples/SSJ-Example/SSJ_example.ipynb new file mode 100644 index 000000000..936cda72e --- /dev/null +++ b/examples/SSJ-Example/SSJ_example.ipynb @@ -0,0 +1,527 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9aff8c24", + "metadata": {}, + "source": [ + "# HARK and SSJ example\n", + "\n", + "By William Du (wdu9@jhu.edu) \n", + "\n", + "\n", + "- This notebook demonstrates how HARK and the Sequence Space Jacobian toolkit can be combined to solve HANK models.\n", + "\n", + "- HARK was designed to solve rich microeconomic models:\n", + " - Lifecycle models\n", + " - Discrete continuous choice\n", + " - Portfolio choice. \n", + " \n", + "
\n", + "\n", + "- SSJ was created to solve HANK models with incredibly speed and ease\n", + "\n", + "- Connecting HARK to SSJ allows us to solve macro models with richer micro features.\n" + ] + }, + { + "cell_type": "markdown", + "id": "bf4b8cce", + "metadata": {}, + "source": [ + "# Model\n", + "\n", + "\n", + "To begin a basic HANK model is introduced. The model follows these lecture [SSJ slides](https://github.com/shade-econ/nber-workshop-2022/blob/main/Lectures/Lecture%204%20Fiscal%20Policy.pdf) from their heterogeneous agent workshop.\n", + "\n", + "\n", + "- Heterogenous agent households that consume/save into one asset. \n", + "\n", + "- Households face idiosyncratic income shocks.\n", + "\n", + "- Cobb Douglas Production function with Labor.\n", + "\n", + "- Sticky Wages\n", + "\n", + "- Government taxes labor income, rolls over debt, to pay its expenditures.\n" + ] + }, + { + "cell_type": "markdown", + "id": "f10546d3", + "metadata": {}, + "source": [ + "# Bringing Model to Code" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49d75e2d", + "metadata": {}, + "outputs": [], + "source": [ + "from HARK.ConsumptionSaving.ConsNewKeynesianModel import (\n", + " NewKeynesianConsumerType,\n", + ")\n", + "\n", + "from sequence_jacobian.classes import JacobianDict, SteadyStateDict\n", + "import sequence_jacobian as sj # SSJ will allow us to define blocks, models, compute IRFs, etc" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df3f455b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np # '1.22.0'\n", + "import time\n", + "from scipy import optimize # scipy version '1.10.0'" + ] + }, + { + "cell_type": "markdown", + "id": "b676fc68", + "metadata": {}, + "source": [ + "### Calibrate Steady State Values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3fa9a283", + "metadata": {}, + "outputs": [], + "source": [ + "# Steady state parameters\n", + "r_ss = 0.03 # Interest rate\n", + "G_ss = 0.2 # government spending\n", + "B_ss = 0.2 # government debt\n", + "Y_ss = 1.0 # output\n", + "\n", + "T_ss = G_ss + r_ss * B_ss # Lump sum taxes\n", + "Z_ss = Y_ss - T_ss # after tax labor income\n", + "deficit_ss = G_ss - T_ss # deficit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e4a84511", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "HANK_dict = {\n", + " \"cycles\": 0, # Infinite horizon problem\n", + " # Parameters shared with the perfect foresight model\n", + " \"Rfree\": 1.0 + r_ss, # Interest factor on assets\n", + " \"LivPrb\": [0.99375], # Survival probability\n", + " # Parameters that specify the income distribution over the lifecycle\n", + " \"PermShkStd\": [0.06], # Standard deviation of log permanent shocks to income\n", + " \"PermShkCount\": 5, # Number of points in discrete approximation to permanent income shocks\n", + " \"TranShkStd\": [0.2], # Standard deviation of log transitory shocks to income\n", + " \"TranShkCount\": 5, # Number of points in discrete approximation to transitory income shocks\n", + " # HANK parameters\n", + " \"tax_rate\": [\n", + " 0.0\n", + " ], # set to 0.0 because we are going to assume that labor here is actually after tax income\n", + " \"labor\": [Z_ss],\n", + " \"wage\": [1.0],\n", + " \"UnempPrb\": 0.0, # Probability of unemployment while working\n", + " \"IncUnemp\": 0.0, # Unemployment benefits replacement rate\n", + " # Parameters for constructing the \"assets above minimum\" grid\n", + " \"aXtraMax\": 50, # Maximum end-of-period \"assets above minimum\" value\n", + " \"aXtraCount\": 100, # Number of points in the base grid of \"assets above minimum\"\n", + " \"BoroCnstArt\": 0.0,\n", + " # Transition matrix simulation parameters\n", + " \"mCount\": 200,\n", + " \"mMax\": 50,\n", + " \"mMin\": 1e-5,\n", + " \"mFac\": 3,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "0b97096a", + "metadata": {}, + "source": [ + "# Solve for Steady State" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac7ec69c", + "metadata": {}, + "outputs": [], + "source": [ + "def ss_func(beta):\n", + " HANK_dict[\"DiscFac\"] = beta\n", + " TempAgent = NewKeynesianConsumerType(**HANK_dict, verbose=False)\n", + " A_ss = TempAgent.compute_steady_state()[0]\n", + " return A_ss\n", + "\n", + "\n", + "def ss_dif(beta):\n", + " return ss_func(beta) - Asset_target\n", + "\n", + "\n", + "Asset_target = B_ss\n", + "DiscFac = optimize.brentq(ss_dif, 0.85, 0.99)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc28006a", + "metadata": {}, + "outputs": [], + "source": [ + "# Create a HARK agent\n", + "HANK_dict[\"DiscFac\"] = DiscFac\n", + "Agent_GE = NewKeynesianConsumerType(**HANK_dict, verbose=False)\n", + "A_ss, C_ss = Agent_GE.compute_steady_state()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4fadaab", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"goods_clearing\", Y_ss - C_ss - G_ss)\n", + "print(\"asset_clearing\", A_ss - B_ss)" + ] + }, + { + "cell_type": "markdown", + "id": "f7336168", + "metadata": {}, + "source": [ + "## Compute Jacobians" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea09fc75", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "\n", + "CJACR, AJACR = Agent_GE.calc_jacobian(\"Rfree\", 300)\n", + "CJACZ, AJACZ = Agent_GE.calc_jacobian(\"labor\", 300)\n", + "\n", + "print(\"Time taken to compute jacobians\", time.time() - start)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce169ef9", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(CJACR.T[0])\n", + "plt.plot(CJACR.T[30])\n", + "plt.plot(CJACR.T[50])\n", + "plt.xlim(-2, 100)\n", + "plt.title(\"Consumption Jacobians wrt Interest rate\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6eff21bb", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(CJACZ.T[0])\n", + "plt.plot(CJACZ.T[20])\n", + "plt.plot(CJACZ.T[50])\n", + "plt.xlim(-2, 100)\n", + "plt.title(\"Consumption Jacobians wrt Income\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "fe6feb98", + "metadata": {}, + "source": [ + "# Specify Government Budget Constraint and Market Clearing Conditions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b35ed9e0", + "metadata": {}, + "outputs": [], + "source": [ + "# Government Budget Constraint\n", + "@sj.simple\n", + "def fiscal(B, r, G, Y):\n", + " T = (1 + r) * B(-1) + G - B # total tax burden\n", + " Z = Y - T # after tax income\n", + " deficit = G - T\n", + " return T, Z, deficit\n", + "\n", + "\n", + "# Market Clearing Conditions\n", + "@sj.simple\n", + "def mkt_clearing(A, B, Y, C, G):\n", + " asset_mkt = A - B\n", + " goods_mkt = Y - C - G\n", + " return asset_mkt, goods_mkt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5710651", + "metadata": {}, + "outputs": [], + "source": [ + "# Store Jacobians in JacobianDict Object\n", + "Jacobian_dict = JacobianDict({\"C\": {\"Z\": CJACZ}, \"A\": {\"Z\": AJACZ}})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ffe65da0-7cea-4d60-9afe-f89adae896f8", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Construct SteadyStateDict object\n", + "SteadyState_dict = SteadyStateDict(\n", + " {\n", + " \"asset_mkt\": 0.0,\n", + " \"goods_mkt\": 0.0,\n", + " \"deficit\": G_ss - T_ss,\n", + " \"B\": B_ss, # Gov. Debt\n", + " \"r\": r_ss, # Interest rate\n", + " \"G\": G_ss, # Gov. Spending\n", + " \"Y\": Y_ss, # Output\n", + " \"A\": B_ss, # Assets\n", + " \"C\": C_ss, # Consumption\n", + " \"Z\": Y_ss - T_ss, # Income (post-tax)\n", + " \"T\": T_ss, # Lump Sum Taxes\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbce1742", + "metadata": {}, + "outputs": [], + "source": [ + "T = 300 # <-- the length of the IRF\n", + "rho_G = 0.8 # peristence of shock\n", + "dG = 0.01 * rho_G ** np.arange(T)\n", + "shocks = {\"G\": dG}\n", + "\n", + "unknowns_td = [\"Y\"]\n", + "targets_td = [\"asset_mkt\"]\n", + "\n", + "# Create model\n", + "ha_lin = sj.create_model([Jacobian_dict, fiscal, mkt_clearing], name=\"HA Model\")\n", + "\n", + "# obtain impulse responses\n", + "irfs_G_lin = ha_lin.solve_impulse_linear(\n", + " SteadyState_dict, unknowns_td, targets_td, shocks\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93a0c5fc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def show_irfs(\n", + " irfs_list,\n", + " variables,\n", + " labels=[\" \"],\n", + " ylabel=r\"Percentage points (dev. from ss)\",\n", + " T_plot=50,\n", + " figsize=(18, 6),\n", + "):\n", + " if len(irfs_list) != len(labels):\n", + " labels = [\" \"] * len(irfs_list)\n", + " n_var = len(variables)\n", + " fig, ax = plt.subplots(1, n_var, figsize=figsize, sharex=True)\n", + " for i in range(n_var):\n", + " # plot all irfs\n", + " for j, irf in enumerate(irfs_list):\n", + " ax[i].plot(irf[variables[i]][:50], label=labels[j])\n", + " ax[i].set_title(variables[i])\n", + " ax[i].set_xlabel(r\"$t$\")\n", + " if i == 0:\n", + " ax[i].set_ylabel(ylabel)\n", + " ax[i].legend()\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "523314a5", + "metadata": {}, + "source": [ + "## Government Spending Shock (Balanced Budget)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d287b37c", + "metadata": {}, + "outputs": [], + "source": [ + "show_irfs([irfs_G_lin], [\"G\", \"Y\", \"T\"])" + ] + }, + { + "cell_type": "markdown", + "id": "d6b166b2", + "metadata": {}, + "source": [ + "## Government Spending shock (deficit financed)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "603c9385", + "metadata": {}, + "outputs": [], + "source": [ + "rho_B = 0.9\n", + "dB = np.cumsum(dG) * rho_B ** np.arange(T)\n", + "shocks_B = {\"G\": dG, \"B\": dB}\n", + "\n", + "irfs_B_lin = ha_lin.solve_impulse_linear(\n", + " SteadyState_dict, unknowns_td, targets_td, shocks_B\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "332b34b6", + "metadata": {}, + "outputs": [], + "source": [ + "show_irfs(\n", + " [irfs_G_lin, irfs_B_lin],\n", + " [\"G\", \"Y\", \"T\", \"deficit\", \"goods_mkt\"],\n", + " labels=[\"balanced budget\", \"deficit financed\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e5030fdc", + "metadata": {}, + "source": [ + "## Nonlinear Impulse Responses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f7d1534", + "metadata": {}, + "outputs": [], + "source": [ + "# NOTE: These cells have been commented out because they rely on files that are not present in the HARK repo.\n", + "\n", + "# def hh(Z):\n", + "# C,A = Agent_GE.calc_agg_path(Z,300)\n", + "# return C,A" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29783be3", + "metadata": {}, + "outputs": [], + "source": [ + "# from Misc_Utilities.simple_block import exog # import wrapper so SSJ can identify HARK household object\n", + "\n", + "# hh_block = exog(Jacobian_dict,hh,hh)\n", + "# hh_block.name = hh\n", + "\n", + "# ha = sj.create_model([hh_block,fiscal,mkt_clearing], name=\"HA Model\")\n", + "# irfs_G_nonlin = ha.solve_impulse_nonlinear(SteadyState_dict, unknowns_td, targets_td, shocks)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a327b50f", + "metadata": {}, + "outputs": [], + "source": [ + "# plt.plot(irfs_G_nonlin['Y'], label ='nonlinear')\n", + "# plt.plot(irfs_G_lin['Y'], label = 'linear', linestyle='--')\n", + "# plt.xlim(-1,50)\n", + "# plt.legend()\n", + "# plt.title('Nonlinear Impulse responses of output')\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "558d31cc", + "metadata": {}, + "outputs": [], + "source": [ + "# show_irfs([irfs_G_lin,irfs_G_nonlin], ['G', 'Y','T'], ['Linear', 'Nonlinear'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/SSJ-Example/SSJ_explanation.ipynb b/examples/SSJ-Example/SSJ_explanation.ipynb new file mode 100644 index 000000000..369bfffe8 --- /dev/null +++ b/examples/SSJ-Example/SSJ_explanation.ipynb @@ -0,0 +1,363 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5d86d99a", + "metadata": {}, + "source": [ + "# Sequence Space Jacobian method to Solve HANK models" + ] + }, + { + "cell_type": "markdown", + "id": "d54e4a66", + "metadata": {}, + "source": [ + "- The sequence space jacobian method is a computational method to solve general equilibrium models (with both rich micro heterogeneity and without)\n", + "\n", + "\n", + "\n", + "- Method linearizes the model to first order to solve for solutions to small MIT shocks.\n", + "\n", + "\n", + "- The algorithm assumes that agents have perfect foresight on macro aggregates (i.e. Model is deterministic with respect to aggregate states).\n", + "\n", + "\n", + "- Method allows for the fast computation of jacobian matrices that summarize the aggregate behavior of agents with rich micro heterogeneity (Heterogenous households, firms, etc.)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "10f78487", + "metadata": {}, + "source": [ + "# Advantages of SSJ\n", + "\n", + "Can solve general equilibrium models with rich microeconomic heterogeneity quickly. (Basic HANK models can take 3 seconds, previous methods take at least 15 minutes)\n", + "\n", + "Can add additional exogenous shocks at virtually no cost.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "095bae35", + "metadata": {}, + "source": [ + "## Krusell Smith Model in Sequence Space" + ] + }, + { + "cell_type": "markdown", + "id": "4f1bf1b5", + "metadata": {}, + "source": [ + " ### Households\n", + "\n", + "Assume a continuum of atomistic households on the unit interval $[0,1]$ indexed by i. \n", + "\n", + "Assume households have perfect foresight over the real interest rate $r_{t}$ and the real wage $w_{t}$.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "2e0864c0", + "metadata": {}, + "source": [ + "\n", + "\n", + "$$\n", + "V_{t}(m_{t}) = \\max_{c_{t}} u(c_{t}) + E_{t}\\left[ V_{t+1}(m_{t+1}) \\right]\n", + "$$\n", + "\n", + "#### Budget Constraint\n", + "\n", + "$$ m_{ t} = z_{t} + (1+\\mathit{r}_{t})k_{ t-1}$$\n", + "\n", + "$$ c_{ t} + k_{t}= z_{ t} + (1+\\mathit{r}_{t}) k_{ t-1} $$ \n", + "\n", + "$$k_{t} \\geq 0$$\n", + "\n", + "where \n", + "\n", + "$m_{t}$ is cash on hand.\n", + "\n", + "$k_{t}$ value capital holdings.\n", + "\n", + "$z_{t}$ is labor income.\n", + "\n", + "\n", + "#### Labor Income\n", + "\n", + "Labor income is composed of permanent component $\\mathit{p}$ and transitory component $\\theta$. \n", + "\n", + "\n", + "$$z_{t} = \\theta_{it} w_{t} \\bar{L}$$\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "$ log(\\theta_{it}) \\sim N\\left(-\\frac{\\sigma_{\\theta}^2}{2}, \\sigma_{\\theta}^2 \\right)$ \n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "405ddb01", + "metadata": {}, + "source": [ + "## Firms\n", + "\n", + "$$Y_{t} = Z_{t}K_{t}^{\\alpha}L_{t}^{1-\\alpha}$$\n", + "\n", + "### F.O.C.\n", + "\n", + "$$\n", + "w_{t} = (1-\\alpha) Z_{t} K_{t}^{\\alpha}L_{t}^{-\\alpha}\n", + "$$\n", + "\n", + "$$\n", + "r_{t} = \\alpha Z_{t} K_{t}^{\\alpha - 1} L_{t}^{1-\\alpha}\n", + "$$\n", + "\n", + "where $log(Z_{t}) = \\rho_{Z} log( Z_{t-1}) + \\epsilon_{Z}$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "ebeea820", + "metadata": {}, + "source": [ + "## Market Clearing \n", + "\n", + "\n", + "$$ K_{t} = \\mathcal{K}_{t}\\left(\\left\\{r_{s},w_{s}\\right\\}_{s=0}^{T} \\right)$$\n", + "\n", + "\n", + "\n", + "$$L_{t} = \\bar{L}$$\n", + "\n", + "\n", + "\n", + "\n", + "where $$\\mathcal{K}_{t}\\left(\\left\\{r_{s},w_{s}\\right\\}_{s=0}^{T} \\right) = \\int_{0}^{1} k_{it}(\\left\\{r_{s},w_{s}\\right\\}_{s=0}^{T}) di = \\int k_{t}(m, \\left\\{r_{s},w_{s}\\right\\}_{s=0}^{T}) d\\Phi(m)$$" + ] + }, + { + "cell_type": "markdown", + "id": "12cc8957", + "metadata": {}, + "source": [ + "# Define model as a system of difference equations in sequence space" + ] + }, + { + "cell_type": "markdown", + "id": "01ee68b8", + "metadata": {}, + "source": [ + "$$ H_{t}(\\mathbf{U},\\mathbf{Z}) = \\begin{pmatrix} \n", + " \\mathcal{K}_{t}(\\{r_{s} ,w_{s} \\}_{s=0}^{s=T}) - K_{t} \\\\ \\\\\n", + " w_{t} - (1-\\alpha) Z_{t} K_{t}^{\\alpha} \\bar{L}^{-\\alpha} \\\\ \\\\\n", + "r_{t} - \\alpha Z_{t} K_{t}^{\\alpha - 1} \\bar{L}^{1-\\alpha} \\\\ \\\\\n", + " \\end{pmatrix} = \\begin{pmatrix} 0 \\\\ 0 \\\\ 0\\\\ \\end{pmatrix} , \\quad t=0,1 ,2,3,....$$\n", + " \n", + " where \n", + " \n", + "\n", + " \n", + " $\\mathbf{U} = \\left(K_{t} , r_{t} , w_{t} \\right)_{t=0}^{t=T}$ \n", + " \n", + " $\\mathbf{Z} = \\left(Z_{t}\\right)_{t=0}^{t=T}$\n", + " \n", + "Now define $$\\mathbf{H}(\\mathbf{U},\\mathbf{Z})= \\begin{pmatrix} \n", + "H_{0}(\\mathbf{U},\\mathbf{Z}) \\\\ \\\\\n", + ". \\\\ \\\\\n", + ". \\\\ \\\\\n", + " H_{t}(\\mathbf{U},\\mathbf{Z}) \\\\ \\\\\n", + " . \\\\ \\\\\n", + " . \\\\ \\\\\n", + "H_{T}(\\mathbf{U},\\mathbf{Z}) \\\\ \\\\\n", + " \\end{pmatrix} = \\begin{pmatrix} 0 \\\\ .\\\\ 0 \\\\ . \\\\ 0\\\\ \\end{pmatrix}$$\n", + " \n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "a545e7ca", + "metadata": {}, + "source": [ + "# How to solve this model?\n", + "\n", + "- Linearize around steady state.\n", + "\n", + "By implicit function theorem\n", + "\n", + "\n", + "$$ d\\mathbf{U} = -\\mathbf{H}_{\\mathbf{U}}^{-1}(\\mathbf{U}_{ss},\\mathbf{Z}_{ss}) \\mathbf{H}_{\\mathbf{Z}}(\\mathbf{U}_{ss},\\mathbf{Z}_{ss}) d\\mathbf{Z}$$\n", + "\n", + "or to be trite\n", + "\n", + "$$ d\\mathbf{U} = -\\mathbf{H}_{\\mathbf{U}}^{-1} \\mathbf{H}_{\\mathbf{Z}} d\\mathbf{Z}$$\n", + "\n", + "\n", + "where $d\\mathbf{U} = \\left(dK_{t} , dr_{t} , dw_{t} \\right)_{t=0}^{t=T}$ is the endogenous impulse response to some exogenous shock $d\\mathbf{Z} = \\left(dZ_{t}\\right)_{t=0}^{t=T}$" + ] + }, + { + "cell_type": "markdown", + "id": "237520d5", + "metadata": {}, + "source": [ + "## Heterogenous Agent Jacobian \n", + "\n", + "When computing $-\\mathbf{H}_{\\mathbf{U}}^{-1}(\\mathbf{U}_{ss},\\mathbf{Z}_{ss})$ we will need to compute the jacobian of $$\\mathbf{F}(\\mathbf{r},\\mathbf{w}) = \\begin{pmatrix} \\mathcal{K}_{0}(\\{r_{s} ,w_{s} \\}_{s=0}^{s=T})\\\\ \\\\\n", + ".\\\\ \\\\\n", + ". \\\\ \\\\\n", + "\\mathcal{K}_{t}(\\{r_{s} ,w_{s} \\}_{s=0}^{s=T})\\\\ \\\\\n", + ".\\\\ \\\\\n", + ".\\\\ \\\\\n", + "\\mathcal{K}_{T}(\\{r_{s} ,w_{s} \\}_{s=0}^{s=T})\\\\ \\\\\n", + "\\end{pmatrix} $$ \n", + "\n", + "\n", + "More specifically we will need the Jacobian Matrix $\\mathbf{F}_{\\mathbf{r}}(\\mathbf{r},\\mathbf{w})$ and $\\mathbf{F}_{\\mathbf{r}}(\\mathbf{r},\\mathbf{w})$\n", + "\n", + "where\n", + " \n", + " $$ \\mathbf{F}_{\\mathbf{r}}(\\mathbf{r},\\mathbf{w}) = \\begin{pmatrix} \n", + "\\frac{ \\partial \\mathcal{K}_{0}}{\\partial r_{0}} & ... & \\frac{ \\partial \\mathcal{K}_{0}}{ \\partial r_{t}} & ... & \\frac{ \\partial \\mathcal{K}_{0}}{\\partial r_{T}} \\\\ . \\\\ .\n", + "\\\\ \n", + ".\n", + "\\\\\n", + "\\frac{ \\partial \\mathcal{K}_{t}}{\\partial r_{0}} & ... & \\frac{ \\partial \\mathcal{K}_{t}}{ \\partial r_{t}} & ... & \\frac{ \\partial \\mathcal{K}_{t}}{\\partial r_{T}} \\\\ . \\\\ .\n", + "\\\\ . \\\\\n", + "\\frac{ \\partial \\mathcal{K}_{T}}{\\partial r_{0}} & ... & \\frac{ \\partial \\mathcal{K}_{T}}{ \\partial r_{t}} & ... & \\frac{ \\partial \\mathcal{K}_{T}}{\\partial r_{T}} \\\\ \\\\\n", + " \\end{pmatrix} $$\n", + " \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "1488f183", + "metadata": {}, + "source": [ + "- These Jacobian matrices are the most computationally complex object to compute in the model. Direct methods can take up to 20 minutes for each matrix.\n", + "\n", + "- The sequence space jacobian methodology proposes a 'fake news' algorithm to solve these matrices in under 3 seconds!\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "e585b986", + "metadata": {}, + "source": [ + "## Overall algorithm\n", + "\n", + "\n", + "1. Define model in sequence space\n", + "\n", + "$$\\mathbf{H}(\\mathbf{U},\\mathbf{Z}) = \\mathbf{0}$$\n", + "\n", + "2. Solve for steady state\n", + "\n", + "$$\\mathbf{H}(\\mathbf{U}_{ss},\\mathbf{Z}_{ss}) = \\mathbf{0}$$\n", + "\n", + "where $\\mathbf{U}_{ss} = \\left(U_{ss}, .. U_{ss}, .., U_{ss} \\right)$ \n", + "\n", + "3. Linearize around steady state and solve for impulse responses $d\\mathbf{U}$ given exogenous shock $d\\mathbf{Z}$\n", + "\n", + "$$ d\\mathbf{U} = -\\mathbf{H}_{\\mathbf{U}}^{-1} \\mathbf{H}_{\\mathbf{Z}} d\\mathbf{Z}$$\n", + "\n", + "- When linearizing , solve heterogenous agent jacobians with fake news algorithm\n" + ] + }, + { + "cell_type": "markdown", + "id": "98072c90", + "metadata": {}, + "source": [ + "## What if model contains many equations?" + ] + }, + { + "cell_type": "markdown", + "id": "c66c3791", + "metadata": {}, + "source": [ + "The system above can be reduced to \n", + "\n", + "$$ H_{t}(\\mathbf{U},\\mathbf{Z}) = \\begin{pmatrix} \n", + " \\mathcal{K}_{t}(\\{\\alpha Z_{t} K_{t}^{\\alpha - 1} \\bar{L}^{1-\\alpha} ,(1-\\alpha) Z_{s} K_{s}^{\\alpha} \\bar{L}^{-\\alpha} \\}_{s=0}^{s=T}) - K_{t} \\\\ \\\\\n", + " \\end{pmatrix} = 0, \\quad t=0,1 ,2,3,....$$\n", + " \n", + " where $\\mathbf{U} = \\left(K_{0},K_{1}.K_{2}....,K_{T} \\right)$ \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "82e7cfee", + "metadata": {}, + "source": [ + "When the model contains many equations, we can represent the model as a directed acyclic graph to determine how the model should be reduced. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "0b15d547", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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wmIn5aSeZLqGYWzZsmX27NlvvPFGbGzs/Pnzz549C3BotkpA09LSlixZMn369ClTpixduhTvaZw/f55JIIy/O3fu/Ne//jV58uSPP/744MGDlmVRkoQPueBZ1tq1a6dNmxYTEzNr1qy9e/dalgXnOpUnJyc3bNgQG7hr1KiRlJR08ODBw4cPp6Sk0FqSWsTwkjV+7NixTz/9lDpPnz6d7VAbN27c7NmzT548CcNY5J07d86aNev111//6KOPYDzUUiB7C82YMWMw9XNPuWEYaWlphw8fPnbs2KFDh5KSko4dO3b06NHDhw+jRBs3bqxcuTJGsG7duh38z0/FhwYXY4CoCikXUl6M7fAas46JidF1vU6dOllZWTYVGAoNw3j88cfRe+FTz97lsnr1ag5PtlReeCmk3AsrpayZZCPl06dP58yxb9++m2++WdO0iIiIjIwMUhCydnq/eIuBsgajlLfIEGD7LF5STrqMghuGsWjRorp16950003R0dHvvffes88+65fzmzhxIsFB30ERvvjii8qVK3fr1u3DDz+cPXt2z549AwICGjZsOG7cOOyH4Vx2/PjxO+64o2bNmrGxsfPmzRs1atQNN9zQqFGjBg0aqJ2RK+TZs2dXr149JCSkfv36gYGB+KRA165djx07BktM09y2bVtQUBCeMPM5M+bTgQMH2hzwLCMLcuDAgSlTprRp00bTtCZNmhiGkZ6e/sorr5QvXx5KNE2rWLHi8uXLUdht27a1bdtW3ZIaGhqakJCgAoKF/auvvqqSciQ/cuTI1KlTb731ViwhqlatOmjQoGnTpqWkpHz88ccoIPPlF83mzJmTz0Z5lqXIAmy6QsqFlBdZqyuEjDCvjxo1StO0ESNGQKP6aAwtW910jiXySy+9xFGsEOy4/iqElF9/jCWHKyBAUo4pDV/xNAxj6dKlFSpU4DzHF0BV2q2G+SDrCvnJbUHgzyFAZlO8pByFoIs3NjZW07SoqKg//viD09C8efNAED/66CPVbMMwFi9erOv6oEGD0InATadOnappmu0glPPnz9eqVSsqKurMmTPI1O12Hz16tHLlyuHh4ciLZmRlZT322GPh4eGrVq2CcGZm5ujRo9GRIyMjjx07xhwvXrz43XffgZHXrl07PT39Qs4vMzOTGXHhrZb3/fff79WrV5UqVeAOu+WWW3bs2FGvXr07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lBStxgOYX331lfZNzMrKsuItLS16dURNoHc/kDoZIQ2xL3k+/vhjLgex7bsRp2epM86dO5c002x11KhR9v+zdqzU4MB+405HPnbsmL4kjkQiKSkpJSUlR44cWbNmDY9PJX777beXlZUdPHgw9mbRWczb++67T0EJE30GJ9CcZ7PRaFR/qMLhsD4hYBA4GZ5xy2N3HHbs2KHMiYX2yiuvSA/a9u/fn5qaKobMzEzyR9oGDBigptEHjjR6c3OzPuljgU5rfeXKlVjUTTfMqbPH3rU4//zzuQWg2meffVZdI7apwgcffPDdd9899thj3FBvbm7WOyeRSETfrEtKY0tpaalkQ6HQunXrcAaHVSJmdQFts0Df0b+L7OzsG264QS2SnZ1t5w+6djMf7dChQ79+/R5++OHMzMykf37Tp0/HJW1XIhCeeOIJlevY0NAwcuRIZbLztD8ajZ7BOPbHH39kZGToUVJqaqrd65TNB2KbGOhKZHEYMGCAJkJ6nozzsQ+vX3nlFTmvRXLAs6WlZdWqVUqJSCSiV0NBFbacnBz10NjQXVBQIBjp7yK0eJdU2a9TeCCJtrZCtJlJOb2irq7u66+/zs/PZ4UTtXpKSsrrr7++bdu23377DfRJYto79hiutrb2kUceUS8Kh8MDBw7U7XCkWlpaampq9AGZ3j587rnnVqxYoa/i9u/fX1RUxPqg999//+7du3EPJbt372Zfz65du06YMGHp0qXl5eXLli2bNGlSWlpaKBQaPny41mHgCifxysrKK664gvGIpTplRcOxfTrfu3fv9evXKwv3799/4403MkZkZ2e//vrrU6dOnf7Pb8qUKc8888yIESP0eqVuTtghw/FEO7DIk9gf6JtvvjknJ2fx4sVaC3bAgAEaDuz1OBqN2rUOVqxYoVYAmbNF2M4vZPbv379+/Xq7IbzGrB49emRlZQ0dOrRXr16MuYKoQ4cOY8aM4bmYriVHjx6dM2eONmnX6Dl27NgNGzbY3X2dKKqrq7/44gvtdSqjetw/efLkH3/8EQSUh3PmzNEKYnKmX79+jz766Jw5c9avX7969eo333xz9OjRbNrav39/zXRtvFinUA+FduzYMWLECDmglWQWLlxYVVVlm1gin3/+eXJysgZTskWCnTp1YkJDYttJudYAXrJkyddff52bm6t869y585w5c+zF+Ndff120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", + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython import display\n", + "\n", + "display.Image(\"KS_DAG.jpeg\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/SSJ-Example/estimation/__init__.py b/examples/SSJ-Example/estimation/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/SSJ-Example/estimation/create_data.py b/examples/SSJ-Example/estimation/create_data.py new file mode 100644 index 000000000..c35f278cb --- /dev/null +++ b/examples/SSJ-Example/estimation/create_data.py @@ -0,0 +1,37 @@ +from pandas_datareader.fred import FredReader +import pandas as pd + +start = "1966-01" +end = "2004-12" + +# Define series to load from Fred +series = { + "PCEPILFE": "pcecore", # PCE deflator excl food and energy (index 2012) [M] + "GDPC1": "gdp", # real GDP (index 2012) + "FEDFUNDS": "ffr", +} # Fed Funds rate + +# Load series from Fred +df_fred = ( + FredReader(series.keys(), start="1959-01").read().rename(series, axis="columns") +) +df_fred.index = df_fred.index.to_period("M") + +# make everything quarterly +df_fred = df_fred.groupby(pd.PeriodIndex(df_fred.index, freq="Q")).mean() + +# start new dataframe into which we'll selectively load +df = pd.DataFrame(index=df_fred.index) + +# Load series +df["pi"] = 100 * ( + (df_fred["pcecore"] / df_fred["pcecore"].shift(1)) ** 4 - 1 +) # inflation is PCE +df["Y"] = df_fred["gdp"] +df["i"] = df_fred["ffr"] # fed funds rate + +# only keep start to end and define time variable +df = df[start:end] +df.index.name = "t" + +df.to_csv("us_data.csv") diff --git a/examples/SSJ-Example/estimation/model.py b/examples/SSJ-Example/estimation/model.py new file mode 100644 index 000000000..d1b7dc487 --- /dev/null +++ b/examples/SSJ-Example/estimation/model.py @@ -0,0 +1,78 @@ +""" +This HA model combines SIM, a Taylor rule for monetary policy +with a gradual tax adjustment rule and real bonds on the fiscal side +""" + +import sequence_jacobian as sj + +"""Simple household block""" + +hh = sj.hetblocks.hh_sim.hh +make_grids = sj.hetblocks.hh_sim.make_grids + + +def income(Y, T, e_grid): + # post-tax labor income + y = (Y - T) * e_grid + return y + + +household_simple = hh.add_hetinputs([make_grids, income]) + + +"""Inflation, monetary, and fiscal""" + + +@sj.simple +def nkpc(pi, Y, X, C, kappa_w, vphi, frisch, markup_ss, eis, beta): + piw = pi + X - X(-1) + # note: for simplicity, we ignore distortionary effect of taxation here + piwres = ( + kappa_w * (vphi * (Y / X) ** (1 / frisch) - 1 / markup_ss * X * C ** -(1 / eis)) + + beta * piw(1) + - piw + ) + return piwres, piw + + +@sj.simple +def monetary_taylor(pi, ishock, rss, phi_pi): + i = rss + phi_pi * pi + ishock + r_ante = i - pi(1) + return i, r_ante + + +@sj.simple +def ex_post_rate(r_ante): + r = r_ante(-1) + return r + + +@sj.solved(unknowns={"B": (-1.0, 1.0)}, targets=["Bres"], solver="brentq") +def fiscal_deficit_Trule(r, G, B, Tss, phi_T, Y): + T = Tss + phi_T * (B(-1) - B.ss) + Bres = (1 + r) * B(-1) + G - T - B + return T, Bres + + +"""Overall model""" + + +@sj.simple +def mkt_clearing(A, B, Y, C, G): + asset_mkt = A - B + goods_mkt = C + G - Y + return asset_mkt, goods_mkt + + +ha = sj.create_model( + [ + household_simple, + nkpc, + monetary_taylor, + ex_post_rate, + fiscal_deficit_Trule, + mkt_clearing, + ], + name="Simple HA Model", +) diff --git a/examples/SSJ-Example/estimation/plots.py b/examples/SSJ-Example/estimation/plots.py new file mode 100644 index 000000000..f68862d79 --- /dev/null +++ b/examples/SSJ-Example/estimation/plots.py @@ -0,0 +1,61 @@ +"""Simple plotting functions for time series""" + +import matplotlib.pyplot as plt +import numpy as np + + +def plot_timeseries(data_dict, dims, xlabel="Quarters", **kwargs): + plt.figure(**kwargs) + for i, (name, data) in enumerate(data_dict.items()): + plt.subplot(*dims, i + 1) + plt.plot(data) + plt.title(name) + plt.xlabel(xlabel) + plt.axhline(y=0, color="#808080", linestyle=":") + plt.tight_layout() + + +def plot_impulses( + dict_of_impulsedicts, labels, series, dims, xlabel="Quarters", T=None, **kwargs +): + plt.figure(**kwargs) + for i, name in enumerate(series): + plt.subplot(*dims, i + 1) + for k, impulse_dict in dict_of_impulsedicts.items(): + plt.plot(impulse_dict.get(name)[:T], label=labels[k]) + plt.title(name) + plt.xlabel(xlabel) + plt.axhline(y=0, color="#808080", linestyle=":") + if i == 0: + plt.legend() + plt.tight_layout() + + +def plot_decomp(Ds, data, shocks, series, xaxis, **kwargs): + Tshow, len_se, len_sh = Ds.shape + plt.figure(**kwargs) + + for io, o in enumerate(series): + plt.subplot(1, 3, 1 + io) + y_offset_pos, y_offset_neg = 0, 0 + + for ii, i in enumerate(shocks): + D = Ds[:, io, ii] # current contribution + y_offset = (D > 0) * y_offset_pos + (D < 0) * y_offset_neg + y_offset_pos_ = y_offset_pos + np.maximum(D, 0) + y_offset_neg_ = y_offset_neg - np.maximum(-D, 0) + plt.fill_between( + xaxis, y_offset_pos, y_offset_pos_, color=f"C{ii}", label=i + ) + plt.fill_between(xaxis, y_offset_neg, y_offset_neg_, color=f"C{ii}") + y_offset_pos = y_offset_pos_ + y_offset_neg = y_offset_neg_ + + if data is not None: + plt.plot(xaxis, data[:, io], color="black") + if io == 0: + plt.legend(framealpha=1) + plt.title(o) + + plt.tight_layout() + plt.show() diff --git a/examples/SSJ-Example/estimation/routines.py b/examples/SSJ-Example/estimation/routines.py new file mode 100644 index 000000000..11a280ab9 --- /dev/null +++ b/examples/SSJ-Example/estimation/routines.py @@ -0,0 +1,186 @@ +"""Core utilities for simulation, second moments, and estimation""" + +import numpy as np +import numba + +"""Simulation""" + + +def simulate(impulses, outputs, T_sim): + """ + impulses: list of ImpulseDicts, each an impulse to independent unit normal shock + outputs: list of outputs we want in simulation + T_sim: length of simulation + + simulation: dict mapping each output to length-T_sim simulated series + """ + + simulation = {} + epsilons = [np.random.randn(T_sim + impulses[0].T - 1) for _ in impulses] + for o in outputs: + simulation[o] = sum( + simul_shock(imp[o], eps) for imp, eps in zip(impulses, epsilons) + ) + + return simulation + + +@numba.njit(parallel=True) +def simul_shock(dX, epsilons): + """Take in any impulse response dX to epsilon shock, plus path of epsilons, and simulate""" + # if I have T_eps epsilons, can simulate length T_eps - T + 1 dXtildes + # by indexing as eps_(-T-1), ... , eps_(T_eps-T+1) and implementing formula + T = len(dX) + T_eps = len(epsilons) + dXtilde = np.empty(T_eps - T + 1) + + dX_flipped = dX[::-1].copy() # flip because dX_s multiplies eps_(t-s) + for t in numba.prange(T_eps - T + 1): + dXtilde[t] = np.vdot( + dX_flipped, epsilons[t : t + T] + ) # sum as single dot product + + return dXtilde + + +"""Log-likelihood of priors""" + + +def log_priors(thetas, priors_list): + """Given a vector 'thetas', where entry i is drawn from the prior + distribution specified in entry i of priors_list, calculate sum of + log prior likelihoods of each theta. Distributions over theta should be specified + in the same way that arguments are given to the 'log_prior' function: first the + name of the family, and then two parameters""" + return sum(log_prior(theta, *prior) for theta, prior in zip(thetas, priors_list)) + + +def log_prior(theta, dist, arg1, arg2): + """Calculate log prior probability of 'theta', if prior is from family + 'dist' with parameters 'arg1' and 'arg2' (depends on prior)""" + if dist == "Normal": + mu = arg1 + sigma = arg2 + return -0.5 * ((theta - mu) / sigma) ** 2 + elif dist == "Uniform": + lb = arg1 + ub = arg2 + return -np.log(ub - lb) + elif dist == "Invgamma": + s = arg1 + v = arg2 + return (-v - 1) * np.log(theta) - v * s**2 / (2 * theta**2) + elif dist == "Gamma": + theta = arg2**2 / arg1 + k = arg1 / theta + return (k - 1) * np.log(theta) - theta / theta + elif dist == "Beta": + alpha = (arg1 * (1 - arg1) - arg2**2) / (arg2**2 / arg1) + beta = alpha / arg1 - alpha + return (alpha - 1) * np.log(theta) + (beta - 1) * np.log(1 - theta) + else: + raise ValueError("Distribution provided is not implemented in log_prior!") + + +"""Historical decomposition""" + + +def back_out_shocks(As, y, sigma_e=None, sigma_o=None, preperiods=0): + """Calculates most likely shock paths if As is true set of IRFs + + Parameters + ---------- + As : array (Tm*O*E) giving the O*E matrix mapping shocks to observables at each of Tm lags in the MA(infty), + e.g. As[6, 3, 5] gives the impact of shock 5, 6 periods ago, on observable 3 today + y : array (To*O) giving the data (already assumed to be demeaned, though no correction is made for this in the log-likelihood) + each of the To rows t is the vector of observables at date t (earliest should be listed first) + sigma_e : [optional] array (E) giving sd of each shock e, assumed to be 1 if not provided + sigma_o : [optional] array (O) giving sd of iid measurement error for each observable o, assumed to be 0 if not provided + preperiods : [optional] integer number of pre-periods during which we allow for shocks too. This is suggested to be at + least 1 in models where some variables (e.g. investment) only respond with a 1 period lag. + (Otherwise there can be invertibility issues) + + Returns + ---------- + eps_hat : array (To*E) giving most likely path of all shocks + Ds : array (To*O*E) giving the level of each observed data series that is accounted for by each shock + """ + # Step 1: Rescale As any y + To, Oy = y.shape + Tm, O, E = As.shape + assert Oy == O + To_with_pre = To + preperiods + + A_full = construct_stacked_A( + As, To=To_with_pre, To_out=To, sigma_e=sigma_e, sigma_o=sigma_o + ) + if sigma_o is not None: + y = y / sigma_o + y = y.reshape(To * O) + + # Step 2: Solve OLS + eps_hat = np.linalg.lstsq(A_full, y, rcond=None)[ + 0 + ] # this is To*E x 1 dimensional array + eps_hat = eps_hat.reshape((To_with_pre, E)) + + # Step 3: Decompose data + for e in range(E): + A_full = A_full.reshape((To, O, To_with_pre, E)) + Ds = np.sum(A_full * eps_hat, axis=2) + + # Cut away pre periods from eps_hat + eps_hat = eps_hat[preperiods:, :] + + return eps_hat, Ds + + +def construct_stacked_A( + As, To, To_out=None, sigma_e=None, sigma_o=None, reshape=True, long=False +): + Tm, O, E = As.shape + + # how long should the IRFs be that we stack in A_full? + if To_out is None: + To_out = To + if long: + To_out = To + Tm # store even the last shock's IRF in full! + + # allocate memory for A_full + A_full = np.zeros((To_out, O, To, E)) + + for o in range(O): + for itshock in range(To): + # if To > To_out, allow the first To - To_out shocks to happen before the To_out time periods + if To <= To_out: + iA_full = itshock + iAs = 0 + + shock_length = min(Tm, To_out - iA_full) + else: + # this would be the correct start time of the shock + iA_full = itshock - (To - To_out) + + # since it can be negative, only start IRFs at later date + iAs = -min(iA_full, 0) + + # correct iA_full by that date + iA_full += -min(iA_full, 0) + + shock_length = min(Tm, To_out - iA_full) + + for e in range(E): + A_full[iA_full : iA_full + shock_length, o, itshock, e] = As[ + iAs : iAs + shock_length, o, e + ] + if sigma_e is not None: + A_full[iA_full : iA_full + shock_length, o, itshock, e] *= sigma_e[ + e + ] + if sigma_o is not None: + A_full[iA_full : iA_full + shock_length, o, itshock, e] /= sigma_o[ + o + ] + if reshape: + A_full = A_full.reshape((To_out * O, To * E)) + return A_full diff --git a/examples/SSJ-Example/estimation/us_data.csv b/examples/SSJ-Example/estimation/us_data.csv new file mode 100644 index 000000000..28bd42342 --- /dev/null +++ b/examples/SSJ-Example/estimation/us_data.csv @@ -0,0 +1,157 @@ +t,pi,Y,i +1966Q1,2.027726462326318,4409.518,4.56 +1966Q2,3.2809272256504096,4424.581,4.913333333333333 +1966Q3,3.3420896701509717,4462.053,5.41 +1966Q4,3.5106125343581374,4498.66,5.5633333333333335 +1967Q1,2.2172381579597777,4538.498,4.823333333333333 +1967Q2,2.7030988743893536,4541.28,3.9899999999999998 +1967Q3,3.6868999737552866,4584.246,3.893333333333333 +1967Q4,4.099099819771168,4618.812,4.173333333333333 +1968Q1,4.626964682421297,4713.013,4.79 +1968Q2,4.741267185358122,4791.758,5.983333333333333 +1968Q3,4.554924681617445,4828.892,5.946666666666666 +1968Q4,4.7283229880399125,4847.885,5.916666666666667 +1969Q1,4.4443613036874385,4923.76,6.566666666666666 +1969Q2,4.874927146116881,4938.728,8.326666666666666 +1969Q3,4.6977053489222875,4971.349,8.983333333333333 +1969Q4,4.779851747570585,4947.104,8.94 +1970Q1,4.434231410319089,4939.759,8.573333333333332 +1970Q2,4.588913164016928,4946.77,7.886666666666667 +1970Q3,4.5368729679635456,4992.357,6.706666666666667 +1970Q4,5.734082840626531,4938.857,5.566666666666666 +1971Q1,5.159697948356112,5072.996,3.856666666666667 +1971Q2,4.645064457771597,5100.447,4.566666666666666 +1971Q3,3.821648782308773,5142.422,5.476666666666667 +1971Q4,2.307614077587372,5154.547,4.75 +1972Q1,3.8868078576567155,5249.337,3.546666666666667 +1972Q2,2.7326716003723384,5368.485,4.3 +1972Q3,3.040745826667335,5419.184,4.743333333333333 +1972Q4,2.5347392821113868,5509.926,5.1466666666666665 +1973Q1,2.8178709096540855,5646.286,6.536666666666666 +1973Q2,5.557327598313422,5707.755,7.816666666666666 +1973Q3,5.430422724380013,5677.738,10.56 +1973Q4,5.675159521543982,5731.632,9.996666666666666 +1974Q1,7.048724156916686,5682.353,9.323333333333332 +1974Q2,10.320832607969322,5695.859,11.25 +1974Q3,11.93327124751411,5642.025,12.089999999999998 +1974Q4,10.136543231700212,5620.126,9.346666666666666 +1975Q1,8.052191302632838,5551.713,6.303333333333334 +1975Q2,6.227302116867195,5591.382,5.419999999999999 +1975Q3,6.146424601671652,5687.087,6.16 +1975Q4,6.671137814679029,5763.665,5.413333333333334 +1976Q1,6.222421474264173,5893.276,4.826666666666667 +1976Q2,4.877026223059522,5936.515,5.196666666666666 +1976Q3,6.419592932901952,5969.089,5.283333333333333 +1976Q4,6.40401493429672,6012.356,4.873333333333334 +1977Q1,6.899888264358478,6083.391,4.66 +1977Q2,6.262025373644642,6201.659,5.156666666666666 +1977Q3,6.820718838174811,6313.559,5.82 +1977Q4,5.939893600063284,6313.697,6.513333333333333 +1978Q1,6.386531545719865,6333.848,6.756666666666667 +1978Q2,7.08145796972961,6578.605,7.283333333333334 +1978Q3,7.039507513847321,6644.754,8.1 +1978Q4,7.381271218722252,6734.069,9.583333333333334 +1979Q1,5.576431308866536,6746.176,10.073333333333332 +1979Q2,9.084738020936655,6753.389,10.18 +1979Q3,7.592775224213666,6803.558,10.946666666666667 +1979Q4,8.61171263387459,6820.572,13.576666666666666 +1980Q1,10.146357608301116,6842.024,15.046666666666667 +1980Q2,9.25166483078057,6701.046,12.686666666666667 +1980Q3,9.208420477430735,6693.082,9.836666666666666 +1980Q4,10.108699875040884,6817.903,15.853333333333333 +1981Q1,9.170729490905384,6951.495,16.569999999999997 +1981Q2,7.778620671366254,6899.98,17.78 +1981Q3,7.572698513507259,6982.609,17.576666666666664 +1981Q4,7.3034302294325615,6906.529,13.586666666666666 +1982Q1,5.989278584097746,6799.233,14.226666666666667 +1982Q2,5.522610337039668,6830.251,14.513333333333334 +1982Q3,6.566642046124382,6804.139,11.006666666666666 +1982Q4,5.685935342708959,6806.857,9.286666666666667 +1983Q1,5.3622127483548665,6896.561,8.653333333333334 +1983Q2,3.0955934928774687,7053.5,8.803333333333335 +1983Q3,6.2110509440153505,7194.504,9.459999999999999 +1983Q4,3.240567944047057,7344.597,9.43 +1984Q1,4.106983472086934,7488.167,9.686666666666667 +1984Q2,4.759165604133675,7617.547,10.556666666666667 +1984Q3,3.8101479712298936,7690.985,11.39 +1984Q4,2.8770118253299115,7754.117,9.266666666666667 +1985Q1,5.5697204002868705,7829.26,8.476666666666667 +1985Q2,3.5157924557156273,7898.194,7.923333333333333 +1985Q3,4.172987950488971,8018.809,7.8999999999999995 +1985Q4,2.8976153297537444,8078.415,8.103333333333333 +1986Q1,4.394982546176385,8153.829,7.826666666666667 +1986Q2,2.7667184549602597,8190.552,6.919999999999999 +1986Q3,2.7771158166389975,8268.935,6.206666666666666 +1986Q4,3.2870213045291585,8313.338,6.266666666666667 +1987Q1,2.5377828702118466,8375.274,6.22 +1987Q2,3.934616254813439,8465.63,6.6499999999999995 +1987Q3,3.6258849448892017,8539.075,6.843333333333334 +1987Q4,4.12972938581988,8685.694,6.916666666666667 +1988Q1,3.915837635080588,8730.569,6.663333333333334 +1988Q2,4.938575999661254,8845.28,7.156666666666666 +1988Q3,4.686247770476903,8897.107,7.983333333333333 +1988Q4,4.545158407672822,9015.661,8.47 +1989Q1,4.437655204034674,9107.314,9.443333333333333 +1989Q2,3.687604365845787,9176.827,9.726666666666667 +1989Q3,3.010712647684022,9244.816,9.083333333333334 +1989Q4,3.711754627295849,9263.033,8.613333333333333 +1990Q1,4.687881581608444,9364.259,8.25 +1990Q2,4.5431131786016765,9398.243,8.243333333333332 +1990Q3,4.10518777470994,9404.494,8.16 +1990Q4,3.40114080232623,9318.876,7.743333333333332 +1991Q1,3.596553247938239,9275.276,6.426666666666667 +1991Q2,3.1186829191091725,9347.597,5.863333333333333 +1991Q3,3.651268658517526,9394.834,5.6433333333333335 +1991Q4,3.1836329258542184,9427.581,4.816666666666666 +1992Q1,3.09644363023045,9540.444,4.023333333333333 +1992Q2,2.8563887638782814,9643.893,3.7699999999999996 +1992Q3,2.390044216982856,9739.185,3.2566666666666664 +1992Q4,2.964125852679911,9840.753,3.0366666666666666 +1993Q1,2.783004173985537,9857.185,3.0399999999999996 +1993Q2,3.07071009671529,9914.565,3.0 +1993Q3,2.2556908169596435,9961.873,3.06 +1993Q4,2.0744170484439106,10097.362,2.99 +1994Q1,1.8284621988157612,10195.338,3.2133333333333334 +1994Q2,2.719689723611274,10333.495,3.94 +1994Q3,2.2529429759334585,10393.898,4.486666666666667 +1994Q4,2.0457251419062183,10512.962,5.166666666666667 +1995Q1,2.112723917077197,10550.251,5.81 +1995Q2,2.395348900058236,10581.723,6.02 +1995Q3,1.9233521188806169,10671.738,5.796666666666667 +1995Q4,2.0210880472447235,10744.203,5.72 +1996Q1,1.5786404616660477,10824.674,5.363333333333333 +1996Q2,1.9167858345777278,11005.217,5.243333333333333 +1996Q3,1.8379638284230282,11103.935,5.306666666666667 +1996Q4,2.2961949165604123,11219.238,5.28 +1997Q1,1.5806884724582915,11291.665,5.276666666666666 +1997Q2,2.1028090646867836,11479.33,5.523333333333333 +1997Q3,0.9365140059810262,11622.911,5.533333333333334 +1997Q4,1.2733258670848402,11722.722,5.506666666666667 +1998Q1,1.1825584715647208,11839.876,5.52 +1998Q2,1.230948099766982,11949.492,5.5 +1998Q3,1.4290518121450324,12099.191,5.533333333333334 +1998Q4,1.277794248941766,12294.737,4.86 +1999Q1,1.0101467687091858,12410.778,4.733333333333333 +1999Q2,1.3953198458593885,12514.408,4.746666666666667 +1999Q3,1.480837465298146,12679.977,5.093333333333334 +1999Q4,1.8940495006775304,12888.281,5.306666666666667 +2000Q1,2.1126402624124463,12935.252,5.676666666666667 +2000Q2,1.4035489543970048,13170.749,6.273333333333333 +2000Q3,1.9409855161090617,13183.89,6.52 +2000Q4,1.9985997069409622,13262.25,6.473333333333334 +2001Q1,2.6251602936705476,13219.251,5.593333333333334 +2001Q2,1.5195002008354441,13301.394,4.326666666666667 +2001Q3,1.0378460852063842,13248.142,3.4966666666666666 +2001Q4,1.943387349712089,13284.881,2.1333333333333333 +2002Q1,1.23520367779284,13394.91,1.7333333333333334 +2002Q2,2.2204300258506393,13477.356,1.75 +2002Q3,2.14639049932428,13531.741,1.74 +2002Q4,1.4302514400940325,13549.421,1.4433333333333334 +2003Q1,1.2409818612027612,13619.434,1.25 +2003Q2,1.5262288140348357,13741.107,1.2466666666666668 +2003Q3,1.8425461114967678,13970.157,1.0166666666666666 +2003Q4,1.803906908203734,14131.379,0.9966666666666667 +2004Q1,2.2187632117856237,14212.34,1.0033333333333332 +2004Q2,2.3043794032079568,14323.017,1.01 +2004Q3,1.4414629413773028,14457.832,1.4333333333333333 +2004Q4,2.1859911994692727,14605.595,1.95 diff --git a/requirements/base.txt b/requirements/base.txt index a3a4d34ce..389418f02 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,4 +8,5 @@ pandas>=1.5 quantecon scipy>=1.10 seaborn>=0.12 +sequence-jacobian xarray>=2023