Releases: econ-ark/HARK
Releases · econ-ark/HARK
0.14.1
0.14.0
Major Changes
- Adds
HARK.core.AgentPopulation
class to represent a population of agents with ex-ante heterogeneous parametrizations as distributions. #1237 - Adds
HARK.core.Parameters
class to represent a collection of time varying and time invariant parameters in a model. #1240 - Adds
HARK.simulation.monte_carlo
module for generic Monte Carlo simulation functions using Python model configurations. 1296
Minor Changes
- Adds option
sim_common_Rrisky
to control whether risky-asset models draw common or idiosyncratic returns in simulation. #1250,#1253 - Addresses #1255. Makes age-varying stochastic returns possible and draws from their discretized version. #1262
- Fixes bug in the metric that compares dictionaries with the same keys. #1260
- Fixes bug in the calc_jacobian method. #1342
- Fixes bug that prevented risky-asset consumer types from working with time-varying interest rates
Rfree
. 1343 - Overhauls and expands condition checking for the ConsIndShock model #1294. Condition values and a description of their interpretation is stored in the bilt dictionary of IndShockConsumerType.
- Creates a
models/
directory with Python model configurations for perfect foresight and Fisher 2-period models. 1347 - Fixes bug in AgentType simulations where 'who_dies' for period t was being recorded in period t-1 in the history Carlo simulation functions using Python model configurations.1296
- Removes unused
simulation.py
.1296 - Fixes bug that default seed was being used in the initializing of income shock distributions. 1380
0.13.0
Major Changes
- Updates the DCEGM tools to address the flaws identified in issue #1062. PR: 1100.
- Updates
IndexDstn
, introducing the option to use an existing RNG instead of creating a new one, and creating and storing all the conditional distributions at initialization. 1104 make_shock_history
andread_shocks == True
now store and use the random draws that determine newborn's initial states #1101.FrameModel
andFrameSet
classes introduced for more modular construction of framed models.FrameAgentType
dedicated to simulation. #1117- General control transitions based on decision rules in
FrameAgentType
. #1117 - Adds
distr_of_function
tool to calculate the distribution of a function of a discrete random variable. #1144 - Changes the
DiscreteDistribution
class to allow for arbitrary array-valued random variables. #1146 - Adds
IndShockRiskyAssetConsumerType
as agent which can invest savings all in safe asset, all in risky asset, a fixed share in risky asset, or optimize its portfolio. #1107 - Updates all HARK models to allow for age-varying interest rates. #1150
- Adds
DiscreteDistribution.expected
method which expects vectorized functions and is faster thanHARK.distribution.calc_expectation
. #1156 - Adds
DiscreteDistributionXRA
class which extendsDiscreteDistribution
to allow for underlying data to be stored in axarray.DataArray
object. #1156 - Adds keyword argument
labels
toexpected()
when usingDiscreteDistributionXRA
to allow for expressive functions that use labeled xarrays. #1156 - Adds a wrapper for
interpolation.py
for fast multilinear interpolation. #1151 - Adds support for the calculation of dreivatives in the
interpolation.py
wrappers. #1157 - Adds class
DecayInterp
toeconforgeinterp.py
. It implements interpolators that "decay" to some limiting function when extrapolating. #1165 - Add methods to non stochastically simulate an economy by computing transition matrices. Functions to compute transition matrices and ergodic distribution have been added #1155.
- Fixes a bug that causes
t_age
andt_cycle
to get out of sync when reading pre-computed mortality. #1181 - Adds Methods to calculate Heterogenous Agent Jacobian matrices. #1185
- Enhances
combine_indep_dstns
to work with labeled distributions (DiscreteDistributionLabeled
). #1191 - Updates the
numpy
random generator fromRandomState
toGenerator
. #1193 - Turns the income and income+return distributions into
DiscreteDistributionLabeled
objects. #1189 - Creates
UtilityFuncCRRA
which is an object oriented utility function with a coefficient of constant relative risk aversion and includes derivatives and inverses. Also createsUtilityFuncCobbDouglas
,UtilityFuncCobbDouglasCRRA
, andUtilityFuncConstElastSubs
. #1168 - Reorganizes
HARK.distribution
. All distributions now inherit all features fromscipy.stats
. NewContinuousFrozenDistribution
andDiscreteFrozenDistribution
to usescipy.stats
distributions not yet implemented in HARK. NewDistribution.discretize(N, method = "***")
replacesDistribution.approx(N)
. NewDiscreteDistribution.limit
attribute describes continuous origin and discretization method. #1197. - Creates new class of labeled models under
ConsLabeledModel
that use xarray for more expressive modeling of underlying mathematical and economics variables. #1177
Minor Changes
- Updates the lognormal-income-process constructor from
ConsIndShockModel.py
to useIndexDistribution
. #1024, #1115 - Allows for age-varying unemployment probabilities and replacement incomes with the lognormal income process constructor. #1112
- Option to have newborn IndShockConsumerType agents with a transitory income shock in the first period. Default is false, meaning they only have a permanent income shock in period 1 and permanent AND transitory in the following ones. #1126
- Adds
benchmark
utility to profile the performance ofHARK
solvers. #1131 - Fixes scaling bug in Normal equiprobable approximation method. 1139
- Removes the extra-dimension that was returned by
calc_expectations
in some instances. #1149 - Adds
HARK.distribution.expected
alias forDiscreteDistribution.expected
. #1156 - Renames attributes in
DiscreteDistribution
:X
toatoms
andpmf
topmv
. #1164, #1051, #1159. - Remove or replace automated tests that depend on brittle simulation results. #1148
- Updates asset grid constructor from
ConsIndShockModel.py
to allow for linearly-spaced grids whenaXtraNestFac == -1
. #1172 - Renames
DiscreteDistributionXRA
toDiscreteDistributionLabeled
and updates methods #1170 - Renames
HARK.numba
toHARK.numba_tools
#1183 - Adds the RNG seed as a property of
DiscreteDistributionLabeled
#1184 - Updates the
approx
method ofHARK.distributions.Uniform
to include the endpoints of the distribution with infinitesimally small (zero) probability mass. #1180 - Refactors tests to incorporate custom precision
HARK_PRECISION = 4
. #1193 - Cast
DiscreteDistribution.pmv
attribute as anp.ndarray
. #1199 - Update structure of dynamic interest rate. #1221
0.12.0
Major Changes
- FrameAgentType for modular definitions of agents #865 #1064
- Frame relationships with backward and forward references, with plotting example #1071
- PortfolioConsumerFrameType, a port of PortfolioConsumerType to use Frames #865
- Input parameters for cyclical models now indexed by t #1039
- A IndexDistribution class for representing time-indexed probability distributions #1018.
- Adds new consumption-savings-portfolio model
RiskyContrib
, which represents an agent who can save in risky and risk-free assets but faces
frictions to moving funds between them. To circumvent these frictions, he has access to an income-deduction scheme to accumulate risky assets.
PR: #832. See this forthcoming REMARK for the model's details. - 'cycles' agent property moved from constructor argument to parameter #1031
- Uses iterated expectations to speed-up the solution of
RiskyContrib
when income and returns are independent #1058. ConsPortfolioSolver
class for solving portfolio choice model replacessolveConsPortfolio
method #1047ConsPortfolioDiscreteSolver
class for solving portfolio choice model when allowed share is on a discrete grid #1047ConsPortfolioJointDistSolver
class for solving portfolio chioce model when the income and risky return shocks are not independent #1047
Minor Changes
- Using Lognormal.from_mean_std in the forward simulation of the RiskyAsset model #1019
- Fix bug in DCEGM's primary kink finder due to numpy no longer accepting NaN in integer arrays #990.
- Add a general class for consumers who can save using a risky asset #1012.
- Add Boolean attribute 'PerfMITShk' to consumption models. When true, allows perfect foresight MIT shocks to be simulated. #1013.
- Track and update start-of-period (pre-income) risky and risk-free assets as states in the
RiskyContrib
model 1046. - distribute_params now uses assign_params to create consistent output #1044
- The function that computes end-of-period derivatives of the value function was moved to the inside of
ConsRiskyContrib
's solver #1057 - Use
np.fill(np.nan)
to clear or initialize the arrays that store simulations. #1068 - Add Boolean attribute 'neutral_measure' to consumption models. When true, simulations are more precise by allowing permanent shocks to be drawn from a neutral measure (see Harmenberg 2021). #1069
- Fix mathematical limits of model example in
example_ConsPortfolioModel.ipynb
#1047 - Update
ConsGenIncProcessModel.py
to usecalc_expectation
method #1072 - Fix bug in
calc_normal_style_pars_from_lognormal_pars
due to math error. #1076 - Fix bug in
distribute_params
so thatAgentCount
parameter is updated. #1089
0.11.0
0.11.0
Release Data: March 4, 2021
Major Changes
- Converts non-mathematical code to PEP8 compliant form #953
- Adds a constructor for LogNormal distributions from mean and standard deviation #891
- Uses new LogNormal constructor in ConsPortfolioModel #891
- calcExpectations method for taking the expectation of a distribution over a function [#884](https://github.com/econ-ark/HARK/pull/884/] (#897)[https://github.com//pull/897/)
- Centralizes the definition of value, marginal value, and marginal marginal value functions that use inverse-space
interpolation for problems with CRRA utility. See #888. - MarkovProcess class used in ConsMarkovModel, ConsRepAgentModel, ConsAggShockModel #902 #929
- replace HARKobject base class with MetricObject and Model classes #903
- Add repr and eq methods to Model class #903
- Adds SSA life tables and methods to extract survival probabilities from them #986.
- Adds the U.S. CPI research series and tools to extract inflation adjustments from it #930.
- Adds a module for extracting initial distributions of permanent income (
pLvl
) and normalized assets (aNrm
) from the SCF #932. - Fix the return fields of
dcegm/calcCrossPoints
#909. - Corrects location of constructor documentation to class string for Sphinx rendering #908
- Adds a module with tools for parsing and using various income calibrations from the literature. It includes the option of using life-cycle profiles of income shock variances from Sabelhaus and Song (2010). See #921, #941, #980.
- remove "Now" from model variable names #936
- remove Model.call; use Model init in Market and AgentType init to standardize on parameters dictionary #947
- Moves state MrkvNow to shocks['Mrkv'] in AggShockMarkov and KrusellSmith models #935
- Replaces
ConsIndShock
'sinit_lifecycle
with an actual life-cycle calibration #951.
Minor Changes
- Move AgentType constructor parameters docs to class docstring so it is rendered by Sphinx.
- Remove uses of deprecated time.clock #887
- Change internal representation of parameters to Distributions to ndarray type
- Rename IncomeDstn to IncShkDstn
- AgentType simulate() method now returns history. #916
- Rename DiscreteDistribution.drawDiscrete() to draw()
- Update documentation and warnings around IncShkDstn #955
- Adds csv files to
MANIFEST.in
. 957
0.10.8
Release Date: Nov. 05 2020
Major Changes
- Namespace variables for the Market class #765
- We now have a Numba based implementation of PerfForesightConsumerType model available as PerfForesightConsumerTypeFast #774
- Namespace for exogenous shocks #803
- Namespace for controls #855
- State and poststate attributes replaced with state_now and state_prev namespaces #836
Minor Changes
- Use shock_history namespace for pre-evaluated shock history #812
- Fixes seed of PrefShkDstn on initialization and add tests for simulation output
- Reformat code style using black
0.10.7
0.10.7
Release Date: 08-08-2020
Major Changes
- Add a custom KrusellSmith Model #762
- Simulations now uses a dictionary
history
to store state history instead of_hist
attributes #674 - Removed time flipping and time flow state, "forward/backward time" through data access #570
- Simulation draw methods are now individual distributions like
Uniform
,Lognormal
,Weibull
#624
Minor Changes
- unpackcFunc is deprecated, use unpack(parameter) to unpack a parameter after solving the model #784
- Remove deprecated Solution Class, use HARKObject across the codebase #772
- Add option to find crossing points in the envelope step of DCEGM algorithm #758
- Fix reset bug in the behaviour of AgentType.resetRNG(), implemented individual resetRNG methods for AgentTypes #757
- Seeds are set at initialisation of a distribution object rather than draw method #691 #750, #729
- Deal with portfolio share of 'bad' assets #749
- Fix bug in make_figs utilities function #755
- Fix typo bug in Perfect Foresight Model solver #743
- Add initial support for logging in ConsIndShockModel #714
- Speed up simulation in AggShockMarkovConsumerType #702
- Fix logic bug in DiscreteDistribution draw method #715
- Implemented distributeParams to distributes heterogeneous values of one parameter to a set of agents #692
- NelderMead is now part of estimation #693
- Fix typo bug in parallel #682
- Fix DiscreteDstn to make it work with multivariate distributions #646
- BayerLuetticke removed from HARK, is now a REMARK #603
- cstwMPC removed from HARK, is now a REMARK #666
- SolvingMicroDSOPs removed from HARK, is now a REMARK #651
- constructLogNormalIncomeProcess is now a method of IndShockConsumerType #661
- Discretize continuous distributions #657
- Data used in cstwMPC is now in HARK.datasets #622
- Refactor checkConditions by adding a checkCondition method instead of writing custom checks for each condition #568
- Examples update #768, #759, #756, #727, #698, #697, #561, #654, #633, #775
0.10.6
0.10.5
0.10.5
Release Date: 24-03-2020
Major Changes
-
Default parameters dictionaries for ConsumptionSaving models have been moved from ConsumerParameters to nearby the classes that use them. #527
-
Improvements and cleanup of ConsPortfolioModel, and adding the ability to specify an age-varying list of RiskyAvg and RiskyStd. #577
-
Rewrite and simplification of ConsPortfolioModel solver. #594
Minor Changes
0.10.4
0.10.4
Release Date: 05-03-2020
Major Changes
- Last release to support Python 2.7, future releases of econ-ark will support Python 3.6+ #478
- Move non-reusable model code to examples directory, BayerLuetticke, FashionVictim now in examples instead of in HARK code #442
- Load default parameters for ConsumptionSaving models #466
- Improved implementaion of parallelNelderMead #300