Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: econ-ark/HARK

0.16.1

25 Jul 01:57
cd382ad

Choose a tag to compare

This release includes various small changes and improvements, as well as one significant new feature: (almost) all AgentType subclasses can now construct HA-SSJs (for use with the sequence_jacobian toolkit) in standard infinite horizon problems for arbitrary shock variables and arbitrary model outputs. This capability is powered by a new simulation structure that uses YAML-based model files to define dynamics, which in turn can be used to automatically transform HARK's model solution representations (policy functions over continuous spaces) into the grid-based representation needed for efficient computation of the fake news algorithm. Don't worry, that all happens under the hood.

See documentation notebooks in /examples/SequenceSpaceJacobians/ . The capabilities of our SSJ calculator will be expanded in the near future to include lifecycle models.

Major Changes

  • Adds a new simulator structure based on YAML model files, replicating legacy simulation results #1545
  • Can convert solved HARK models into transition matrix-based discretized grid representations #1545
  • Can produce sequence-space Jacobians for infinite horizon problems for all HARK AgentType subclasses for which this is appropriate #1545

Minor Changes

  • Allows lifecycle models to be solved backward starting from non-terminal period (with custom solution) #1545
  • Adds new interpolator class IndexedInterp with alternative notation for functions with mixed discrete-continuous domain #1545
  • New notebook with tutorial for (old and new) simulation methods #1545
  • Constructor make_grid_exp_mult allows linearly spaced grid with timestonest=-1 #1545
  • Adds documentation for new simulator structure and basic SSJ calculator #1545
  • Fixed a rare bug that could occur with unusual constructor dependencies resulting in incomplete updates. #1575
  • Added a reference to a trivial constructor that was missing from the WealthPortfolio model. #1583
  • Documentation files have been moved from /Documentation/ to /docs/ #1579
  • All tests have been consolidated into a single directory, rather than being scattered about. #1578
  • Add a special README so that the robots know we're on their side when the singularity arrives. #1577

0.16.0

09 Jun 14:55

Choose a tag to compare

The items listed as "Developmental Features" are an independent system that is not connected to HARK's existing model structure.

The most likely code-breaking change in this release is the reorganization of HARK.distribution. If your project code tells you that it can't find the module HARK.distribution, just change the import name to HARK.distributions (note the plural s).

Additionally, several parameters have been lightly renamed:

aNrmInitMean --> kLogInitMean
aNrmInitStd --> kLogInitStd
pLvlInitMean --> pLogInitMean
pLvlInitStd --> pLogInitStd

Finally, the legacy option for Rfree to be time-invariant has been removed from most models to allow the code to be simplified. If you used time-invariant Rfree, you will need to change your parameterization from Rfree = Rfree_value to T_cycle*[Rfree_value].

Major Changes

  • Reorganizes the HARK.distribution file into HARK.distributions submodule with various files for readability and extensibility #1496
  • Regularizes AgentType initialization methods and moves all constructed model objects to constructors #1529 and #1530

Developmental Features

  • Adds a discretize method to DBlocks and RBlocks #1460
  • Allows structural equations in model files to be provided in string form #1427
  • Introduces `HARK.parser' module for parsing configuration files into models #1427
  • Allows construction of shocks with arguments based on mathematical expressions #1464
  • YAML configuration file for the normalized consumption and portolio choice #1465

Minor Changes

  • Fixes bug in AgentPopulation that caused discretization of distributions to not work. #1275
  • Adds support for distributions, booleans, and callables as parameters in the Parameters class. #1387
  • Removes a specific way of accounting for ``employment'' in the idiosyncratic-shocks income process. #1473
  • Adds income process constructor for the discrete Markov state consumption-saving model. #1484
  • Changes the behavior of make_lognormal_RiskyDstn so that the standard deviation represents the standard deviation of log(returns)
  • Adds detailed parameter and LaTeX documentation to most models.
  • Add PermGroFac constructor that explicitly combines idiosyncratic and aggregate sources of growth. 1489
  • Suppress warning from calc_stable_points when it would be raised by inapplicable AgentType subclasses. 1493
  • Fixes notation errors in IndShockConsumerType.make_euler_error_func from prior changes. 1495
  • Fixes typos in IdentityFunction interpolator class. 1492
  • Expands functionality of Cobb-Douglas aggregator for CRRA utility. 1363
  • Improved tracking of the bounds of support for distributions, and (some) solvers now respect those bounds when computing the "worst outcome". 1524
  • Adds a new function for using Tauchen's method to approximate an AR1 process. #1521
  • Adds additional functionality to the CubicHermiteInterp class, imported from scipy.interpolate. #1020
  • Allows users to pass a generic solution object to agent solvers to be used as the initial condition of backward induction. #1543
  • Adds support for Python 3.13 and related package updates. #1549
  • Move sim_birth methods to constructed distributions, lightly rename parameters. #1553
  • Cleans up warnings for the distance metric and prevents simulation history from being returned as output. #1563
  • Assorted small code cleanup tasks proposed by codex. [#1555] [#1556] [#1557] [#1558] [#1559] [#1560] [#1561] [#1562]
  • Updated and expanded documentation of sequence space Jacobian examples. [#1564] [#1568] [#1501] [#1490] [#1481] [#1475]
  • Improved documentation of cycles and timing of microeconomic models. #1571

0.15.1

15 Jun 16:44
386a049

Choose a tag to compare

This minor release was produced prior to CEF 2024 to enable public usage of HARK with the SSJ toolkit.

Major Changes

none

Minor Changes

  • Adds example of integration of HARK with SSJ toolkit. #1447
  • Maintains compatibility between EconForge interpolation and numba #1457

0.15.0

04 Jun 13:24
5341c82

Choose a tag to compare

Note: Due to major changes on this release, you may need to adjust how AgentTypes are instantiated in your projects using HARK. If you are manually constructing "complicated" objects like MrkvArray, they should be assigned to your instances after initialization, not passed as part of the parameter dictionary. See also the new constructor methodology for how to pass parameters for such constructed inputs.

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

  • Drop official support for Python 3.8 and 3.9, add support for 3.11 and 3.12. #1415
  • Replace object-oriented solvers with single function versions. #1394
  • Object-oriented solver code has been moved to /HARK/ConsumptionSaving/LegacyOOsolvers.py, for legacy support of downstream projects.
  • AgentTypeMonteCarloSimulator now requires model shock, parameter, and dynamics information to be organized into 'blocks'. The DBlock object is introduced. #1411
  • RBlock object allows for recursive composition of DBlocks in models, as demonstrated by the AgentTypeMonteCarloSimulator #1417
  • Transtion, reward, state-rulle value function, decision value function, and arrival value function added to DBlock #1417
  • All methods that construct inputs for solvers are now functions that are specified in the dictionary attribute constructors. #1410
  • 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

Minor Changes

  • Add option to pass pre-built grid to LinearFast. #1388
  • Moves calculation of stable points out of ConsIndShock solver, into method called by post_solve #1349
  • Adds cubic spline interpolation and value function construction to "warm glow bequest" models.
  • Fixes cubic spline interpolation for ConsMedShockModel.
  • Moves computation of "stable points" from inside of ConsIndShock solver to a post-solution method. #1349
  • Corrects calculation of "human wealth" under risky returns, providing correct limiting linear consumption function. #1403
  • Removed 'parameters' from new block definitions; these are now 'calibrations' provided separately.
  • Create functions for well-known and repeated calculations in single-function solvers. 1395
  • Re-work WealthPortfolioSolver to use approximate EGM method #1404
  • Default parameter dictionaries for AgentType subclasses have been "flattened": all parameters appear in one place for each model, rather than inheriting from parent models' dictionaries. The only exception is submodels within a file when only 1 or 2 parameters are added or changed. #1425
  • Fix minor bug in HARK.distribution.Bernoulli to allow conversion into DiscreteDistributionLabeled. #1432

0.14.1

28 Feb 17:13
649d8c6

Choose a tag to compare

Major Changes

none

Minor Changes

  • Fixes a bug in make_figs arising from the metadata argument being incompatible with jpg. #1386
  • Reverts behavior of the repr method of the Model class, so that long strings aren't generated. Full description is available with describe(). #1390

0.14.0

12 Feb 20:42

Choose a tag to compare

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

16 Feb 15:27

Choose a tag to compare

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 and read_shocks == True now store and use the random draws that determine newborn's initial states #1101.
  • FrameModel and FrameSet 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 than HARK.distribution.calc_expectation. #1156
  • Adds DiscreteDistributionXRA class which extends DiscreteDistribution to allow for underlying data to be stored in a xarray.DataArray object. #1156
  • Adds keyword argument labels to expected() when using DiscreteDistributionXRA 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 to econforgeinterp.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 and t_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 from RandomState to Generator. #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 creates UtilityFuncCobbDouglas, UtilityFuncCobbDouglasCRRA, and UtilityFuncConstElastSubs. #1168
  • Reorganizes HARK.distribution. All distributions now inherit all features from scipy.stats. New ContinuousFrozenDistribution and DiscreteFrozenDistribution to use scipy.stats distributions not yet implemented in HARK. New Distribution.discretize(N, method = "***") replaces Distribution.approx(N). New DiscreteDistribution.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 use IndexDistribution. #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 of HARK 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 for DiscreteDistribution.expected. #1156
  • Renames attributes in DiscreteDistribution: X to atoms and pmf to pmv. #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 when aXtraNestFac == -1. #1172
  • Renames DiscreteDistributionXRA to DiscreteDistributionLabeled and updates methods #1170
  • Renames HARK.numba to HARK.numba_tools #1183
  • Adds the RNG seed as a property of DiscreteDistributionLabeled #1184
  • Updates the approx method of HARK.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 a np.ndarray. #1199
  • Update structure of dynamic interest rate. #1221

0.12.0

14 Dec 16:54
a2b6917

Choose a tag to compare

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 replaces solveConsPortfolio method #1047
  • ConsPortfolioDiscreteSolver class for solving portfolio choice model when allowed share is on a discrete grid #1047
  • ConsPortfolioJointDistSolver 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 use calc_expectation method #1072
  • Fix bug in calc_normal_style_pars_from_lognormal_pars due to math error. #1076
  • Fix bug in distribute_params so that AgentCount parameter is updated. #1089

0.11.0

04 Mar 17:33
0a0909d

Choose a tag to compare

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's init_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

05 Nov 16:56
0714bf4

Choose a tag to compare

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