Finite Horizon Value Function Problems

The VFI Toolkit can now solve Finite Horizon Value Function Problems! This is done using the command ValueFnIter_Case1_FHorz (there is as yet no corresponding Case2). Common examples of such problems include many Discrete Choice Dynamic Programming problems.

The most exciting aspect of this command is that it automatically recognizes which parameters are age-dependent (row vectors) and which are age independent (scalars, a single number). Internally the toolkit acts accordingly when passing the parameter value to the return function.

The required inputs are very similar to those for the infinite horizon value function iteration command with the addition of the number of periods, N_j.

An example, solving a basic ten-period consumption savings problem where income is a combination of a deterministic age-dependent component and a stochastic component is provided. A description of the model being solved by the codes can be found in the Documentation (see Examples>Finite Horizon Stochastic Consumption-Savings Model).

For more details on the use of the command, it’s inputs, outputs, and internal options see the VFI Toolkit Documentation.

Transition Paths in Heterogeneous Agent Models

The VFI Toolkit can now solve general equilibrium transition paths for Bewley-Huggett-Aiyagari models (general equilibrium heterogeneous agents models with idiosyncratic shocks but no aggregate shocks). This is done using the command TransitionPath_Case1 (and corresponding Case2).

The command can compute transition paths for a unannounced parameter change, a pre-announced parameter change, or any finite series of pre-announced parameter changes.

Other than arguments that are already required by the commands for computing the general equilibrium of a Bewley-Huggett-Aiyagari model the additional inputs are easy. In addition to the parameter path for which you wish to compute the transition you pass an initial agent distribution, and initial guess for the price path, and the final value function (which can be easily found using existing VFI Toolkit commands). Note that the final value function (as well as the final price in the guess for the price path) must be equal to the general equilibrium relating to the final parameter values; in principle the initial agents distribution need not be related to the general equilibrium of the initial parameter values.

An example, finding the general equilibrium transition path for a change in the value of the capital share parameter in the Cobb-Douglas production in the model of Aiyagari (1994) is provided.

For more details on the use of the command, it’s inputs, outputs, and internal options see the VFI Toolkit Documentation.

———————————————
Some related theory and algorithm findings can be found in working paper: Transition paths for Bewley-Huggett-Aiyagari models: Comparison of some solution algorithms (VUW-SEF Working Paper 1-2017)

Version 1.2 of VFI Toolkit

Have just updated the VFI Toolkit to version 1.2. It is a minor change and breaks compatibility with version 1.1. The minor change is in the ordering of inputs for the main VFI Toolkit commands. The change to v1.2 sees the release of the command HeteroAgentStationaryEqm_Case1 (and Case2) for easy computing of the general equilibrium of Bewley-Huggett-Aiyagari models. It will also see the release of the command TransitionPath_Case1 (and Case2) for easy computing of the general equilibrium transition path between stationary equilibria of Bewley-Huggett-Aiyagari models.

In terms of the inputs for the main VFI Toolkit commands, vfoptions has now been moved to the end of the inputs for ValueFnIter_Case1 (and Case2). This makes it easier to not input any vfoptions at all and simply use the default settings. The change is minor, but does break backward compatibility, hence the change to v1.2.

The computation of general equilibrium incomplete market heterogeneous agent models with idiosyncratic (but no aggregate) shocks is facilitated by the release of the HeteroAgentStationaryEqm_Case1 (and Case2) commands. As well as specifying the same inputs needed for solving the value function (such as the return function) you will also have to input the market clearance conditions and the formulae for any aggregate variables needed as part of evaluating market clearance. Example codes for the model of Aiyagari (1994) are provided, solving the model and generating various output based on the solution.

All of the toolkit examples and replications have been updated to work with this version. Looking at these is the best way to see how this works.

It is hoped that this update of the VFI Toolkit will make using Bewley-Huggett-Aiyagari models much easier.

Exotic Preferences

Epstein-Zin preferences are now part of the VFI Toolkit. Check out the example at

https://github.com/vfitoolkit/VFItoolkit-matlab-examples

Part of the promise of the switch to ‘parameters as structures’ in v1.1 of the VFI Toolkit was to allow more advanced functionality. This is the first of those promises to arrive. The example codes can be run as are if you have a GPU with 5gb of memory (eg., a Tesla K20). Otherwise you will need to activate vfoptions.lowmemory=1 (in which case you can also turn the grids up).

The example code for the Epstein-Zin preferences replicates (for given parameters) most of the results of Caldara, Fernandez-Villaverde, Rubio-Ramirez & Yao (2012) – Computing DSGE Models with Recursive Prefererences and Stochastic Volatility.

Version 1.1 of VFI Toolkit

Have just updated to version 1.1. It is a major change and breaks compatibility with version 1. The major change is in how the VFI Toolkit handles parameters.

Parameters should now be declared as a structure, and the names of relevant parameters passed to functions. For basic models this will appear to complicate things slightly. The advantages come in making modifications to which parameters are used (now easy), in making changes to more advanced models (now easier). It makes the use of fixed type and age dependent parameters (for fixed type and finite horizon codes that are presently under development) much easier.

Essentially the key is that you should now declare model parameters as a structure, eg.
Parameters.beta=0.96;
Parameters.alpha=0.36;
Parameters.delta=0.08;
When you want to then, eg., solve a value function you simply send it Parameters as well as a list of the names parameters that are relevant, in this case those in the return function, eg. ReturnFnParamNames={‘alpha’,’delta’}. Same thing for DiscountFactorParamNames={‘beta’}.

All of the toolkit examples and replications have been updated to work with this version. Looking at these is the best way to see how this works.

By treating parameters in this way you can easily keep track of all of the models parameters. The advantages in more advanced models come as you don’t have to update any vectors when you add or remove parameters. Since all parameters are now tracked by name (rather than index) the Toolkit always knows which parameter values you want.

© 2024 A MarketPress.com Theme