'vars_lvl': vars_lvl, 'dist_last': sims[-1, ] } # %% [markdown] # We now configure and solve a buffer-stock agent with a default parametrization. # %% Create and simulate agent tags=[] # Create and solve agent popn = IndShockConsumerType(**init_idiosyncratic_shocks) # Modify default parameters popn.T_sim = max(sample_periods_lvl) + 1 popn.AgentCount = max_agents popn.track_vars = ['mNrm', 'cNrm', 'pLvl'] popn.LivPrb = [1.0] popn.cycles = 0 # Solve (but do not yet simulate) popn.solve() # %% [markdown] # Under the basic simulation strategy, we have to de-normalize market resources and consumption multiplying them by permanent income. Only then we construct our statistics of interest. # # Note that our time-sampling strategy requires that, after enough time has passed, the economy settles on a stable distribution of its agents across states. How can we know this will be the case? [Szeidl (2013)](http://www.personal.ceu.hu/staff/Adam_Szeidl/papers/invariant.pdf) and [Harmenberg (2021)](https://www.sciencedirect.com/science/article/pii/S0165188921001202?via%3Dihub) provide conditions that can give us some reassurance.$\newcommand{\Rfree}{\mathsf{R}}$ # # 1. [Szeidl (2013)](http://www.personal.ceu.hu/staff/Adam_Szeidl/papers/invariant.pdf) shows that if $$\log \left[\frac{(\Rfree\beta)^{1/\rho}}{\PermGroFac} # \right] < \Ex[\log \PermShk],$$ then there is a stable invariant distribution of normalized market resources $\mNrm$. # 2. [Harmenberg (2021)](https://www.sciencedirect.com/science/article/pii/S0165188921001202?via%3Dihub) repurposes the Szeidl proof to argue that if the same condition is satisfied when the expectation is taken with respect to the permanent-income-neutral measure ($\pShkNeutDstn$), then there is a stable invariant permanent-income-weighted distribution ($\mWgtDstnMarg$)
from builtins import range import numpy as np from copy import deepcopy # Now, bring in what we need from the cstwMPC parameters import HARK.cstwMPC.SetupParamsCSTW as cstwParams from HARK.utilities import approxUniform ## Import the HARK ConsumerType we want ## Here, we bring in an agent making a consumption/savings decision every period, subject ## to transitory and permanent income shocks. from HARK.ConsumptionSaving.ConsIndShockModel import IndShockConsumerType # Now initialize a baseline consumer type, using default parameters from infinite horizon cstwMPC BaselineType = IndShockConsumerType(**cstwParams.init_infinite) BaselineType.AgentCount = 10000 # Assign the baseline consumer type to have many agents in simulation #################################################################################################### #################################################################################################### """ Now, add in ex-ante heterogeneity in consumers' discount factors """ # The cstwMPC parameters do not define a discount factor, since there is ex-ante heterogeneity # in the discount factor. To prepare to create this ex-ante heterogeneity, first create # the desired number of consumer types num_consumer_types = 7 # declare the number of types we want ConsumerTypes = [] # initialize an empty list for nn in range(num_consumer_types): # Now create the types, and append them to the list ConsumerTypes