- OrderedCollections fixed to v1.3.2 and below because of a change in the definition of the type of
OrderedDict
, which would break backward compatibility with olderMeansBands
- Settings to accelerate the computation of the reduced form state space system
- Accelerate compute regime-switching state space systems by refactoring the algorithm to reduce redundant calculations
- Imperfect awareness with temporary policies for both implemented and alternative policies
via
MultiPeriodAltPolicy
- Update algorithm for automatic endogenous ZLB enforcement as a temporary policy to apply the temporary policy only to the first connected sequence of periods with negative rates and use unanticipated monetary policy shocks afterward.
- Speed up algorithm for automatic endogenous ZLB enforcement as a temporary policy by using a binary search algorithm and allowing min/max lengths for a ZLB as a temporary policy.
- New alternative policy
zlb_rule
as a more flexiblezero_rate
- Accelerate calculation of
k_periods_ahead_expected_sum
by exploiting stationarity of the transition matrix rather than repeatedly callingk_periods_ahead_expected_sums
- Add ability to construct a memo object with the products and powers of the
transition matrices in a regime-switching state space system to accelerate
k_periods_ahead_expectations
andk_periods_ahead_expected_sums
- Replace
bdd_and_unbdd
kwarg for plotting and reading of the means and bands withuse_bdd
, which allows users to request any combination of unbounded/bounded means and bands. - New subspecs of Model1002 for estimating the DSGE with COVID-19 shocks
- Add option to construct the old log-likelihood function for tempered updates with SMC by passing a different model object.
- Integrate changes to SMC.jl v0.1.15
- Fix print statements when using
forecast_one
andverbose = :high
- Replace
zero_rate
withzlb_rule
as the default temporary policy - Rename settings related to temporary policies to ensure consistency in nomenclature
- Do not divide
forecast_zlb_value(m)
by 4 when enforcing the ZLB as a temporary policy since that number is already de-annualized - Improve robustness of tests of smoothers with regime-switching state space system and temporary policies
- Fix incorrect indexing when calculating regime indices for Kalman filter so that only unnecessary periods are removed, not entire regimes (which is fine only when the first and last periods of a regime extend past the data's horizon).
- Adaptive MH was found to be implemented incorrectly and will be fixed for the next release
- Fix docs
- Change default branch from master to main
- Minimum CSV version is v0.8
- Minimum ModelConstructors version is v0.2.4
- Functions for calculating k-period ahead expectations and sums for measurement equation
- Time-varying information sets for regime-switching
- Time-varying imperfect awareness/credibility
- Ability to use temporary policies during history (previously only available as alternative policy during forecast)
- Refactor alternative policy code to use regime-switching
- Regime-switching allowed during forecast for shock decompositions, deterministic trends, and trends
- Regime-switching estimation of DSGE models using MH and SMC
- Fix error in calculating the diagonal of the Hessian with parallel workers
- Update tests to handle seed changes in Julia 1.5
- Convert missing values to NaNs when calculating means and bands
- Fix accidental assumption that all fixed parameters occur at the end of the parameter vector in Metropolis-Hastings
- Fix incorrect parameter blocking in Metropolis-Hastings
- Refactor regime-switching code to make it easier to use and maintain
- Update syntax for HDF5 deprecations
- Raise Julia compatibility to all v1.x.
- Increase version restrictions for most packages to most recent ones (e.g. Plots)
- Implement (exogenously) regime-switching DSGE models (but estimations are not tested)
- Implement (exogenously) regime-switching forecasts during the history and forecast horizon
- New subspecs of
Model1002
to model the impact of the COVID-19 pandemic - Interface for the automated addition of anticipated shocks to DSGE models for shocks other than monetary policy shocks.
- Interface for calculating weighted averages of different full-distribution forecasts
- Add Nominal GDP targeting and average inflation targeting as alternative policies
- Automatic enforcement of ZLB as a temporary alternative policy
- Filepathing for Windows OS should work properly now (although we still do not test on Windows OS)
- Implement DSGE-VECMs and provide functionality to compute impulse responses.
- Extend DSGE-VAR rotation impulse responses to compute in deviations from baseline.
- Example for running impulse responses of a a DSGE-VECM.
- Extend example for DSGE-VARs to allow plotting of modal impulse responses.
- Fix summary statistics when loading data
- Fix bugs in the documentation.
- Implement DSGE-VARs and provide functionality to estimate them and compute impulse responses.
- Example for running a forecast decomposition.
- Example for running a DSGE-VAR.
- Allow user to avoid running csminwel when using SMC and calling estimate.
- Support for bridging from another estimation (in SMC.jl)--this update ensures compatibility
- Automatically run csminwel after an SMC estimation to ensure you've found the mode with kwarg run_csminwel in smc2
- Bug fixes and improvements
- Add models m904 (SWFF) and m805 (SWpi)
- Functionality to specify heterogeneous agent models, in addition to representative agent models.
- Methods for the solution of heterogeneous agent continuous time models
- Example model implementations
- Sorted out compatibility issues with
StateSpaceRoutines.jl
. Dropped compatibility withv0.7
.
- Package officially compatible with
v0.7
,v1.0
,v1.1
- Enable parameter blocking in Metropolis-Hastings algorithm
- Functionality to simulate data from a model
- Expanded test suite and example files
Bug fixes and cleanup
- Breaks out SMC and Model Constructor objects into SMC.jl and ModelConstructors.jl
- MH can just take vector of Parameters, likelihood function, and data (like SMC but still exists only in DSGE.jl package)
- DSGE.jl depends on SMC.jl and ModelConstructors.jl but for users who only need SMC or Model Constructor utilities, don't need to load DSGE.jl package anymore
- Adds the ability to easily create packets of results from estimating and forecasting a DSGE model. An example script is provided in docs/examples/make_packet.jl.
Bug fixes and cleanup
- Adds Sequential Monte Carlo (SMC) as an alternative to Metropolis Hastings for estimating models. Latest release with all bug fixes and speed improvements
- Forecast decompositions user to compare two forecasts and break down why forecasts have changed (by shock, differences in parameters, differences in data, etc.)
- Specify size of desired impulse responses (on impact) and flip shocks
filter_shocks
method allows user to obtain only filtered-only shocks (as opposed to filtered and smoothed shocks)- Compatibility with SMC (full version to be released soon)
- New functions to deal with Date objects
- Compatibility with likelihood-only Kalman Filter and Chandrsekhar recursions (see StateSpaceRoutines.jl) which offer large speedups
- Fixes to scenarios code, inluding rectifying date labels
- Patch release to fix failing test
- Upgraded all code for use with Julia v0.7.0.
- Changed file-saving dependency from JLD to JLD2.
- Updated data loading and other machinery to rely on the Missing type for missing data as opposed to NaN.
- Implement benchmarking suite to benchmark code performance.
- Make DSGE compatible with improvements to the Kalman filter.
- Clean up unit tests.
- Clean up travis file.
- Fix dependency issues with NLOpt and Optim.
-
Addressed deprecations and warnings for:
- Non-vectorized functions (e.g.
log
,!
) vcat
on DataFrames with different column names- Optimization-related functions for new releases of Optim.jl
- Array declaration
- Non-vectorized functions (e.g.
-
Tidied:
- Plotting code
- Meansbands computation
- Various models
- Scenarios code
- Tests
- Added
nelder_mead
optimizer - Added forecasting under alternative policies (
AltPolicy
) and alternative scenarios (AbstractScenario
) - Added plotting functions:
plot_parameters
,plot_history_and_forecast
,plot_forecast_comparison
,hair_plot
,plot_shock_decomposition
,plot_impulse_response
,plot_altpolicies
, andplot_scenario
- Upgraded all code for use with Julia v0.6.0 or higher
- Changed input data file names: see
get_data_filename
- Added dataset identifier
Setting
with keydata_id
- Changed
cond_id
fromSetting{String}
toSetting{Int}
- Moved raw input data files from
inpath(m, "data")
toinpath(m, "raw")
- Added dataset identifier
- Added
:marginal_L
(marginal likelihood) field toKalman
type - Removed
MM
andVVall
fields fromMeasurement
type - Pluralized forecast output classes
:states
,:shocks
, and:stdshocks
- Stopped adding back population growth when reverse transforming shock decompositions and deterministic trends
- Stopped adding trends to and detrending shock decompositions and deterministic trends
- Changed pseudo-observable implementation to correspond one-to-one with
observables
- Changed
PseudoObservableMapping
type (and field inSystem
type) toPseudoMeasurement
- Added
m.pseudo_observables
andm.pseudo_observable_mappings
fields toAbstractModel
subtypes - Pseudo-observable-related things are no longer
Nullable
. Instead, if no pseudo-measurement equation is implemented, the fields in the model object are empty dictionaries
- Changed
- Refactored means and bands computation
- Renamed
means_bands_all
tocompute_meansbands
- Renamed
meansbands_matrix_all
tomeansbands_to_matrix
- Renamed
- Added the following subspecs:
- Model 990, subspec 3: fixes bugs 1-4 in FRBNY-DSGE/DSGE-2015-Apr#1
- Model 1002, subspec 10: corrects the definition of
betabar
to usem[:σ_c]
instead ofσ_ω_star
- Model 1010, subspec 20: similarly corrects the definition of
betabar
- Implemented
transpose
forParameter
s so that matrix division (i.e. the(\)
operator) no longer throws a warning
detexify
function turns unicode characters into ASCII strings before writing them to CSV.
- Changed
Dict
s of indices in model object toOrderedDict
s - Upgrade all code for use with Julia v0.5.1 or higher
- Added the An-Schorfheide model, a simple three-equation New Keynesian model.
- Added Model 1010, an updated version of Model 1002.
- Added three optimization methods:
:simulated_annealing
,:LBFGS
, and:combined_optimizer
(which alternates between simulated annealing and LBFGS). - Added the
PseudoObservable
type and thepseudo_measurement
function, which defines pseudo-observables (linear combinations of states which are not observed) for each model, e.g. the output gap. - Implemented the forecast step, a suite of functions that forecast using
estimated parameters and compute means and bands of the forecasted series. The
top-level functions are
forecast_one
andmeans_bands_all
; see the forecasting and means and bands for more details.
- Added the
Observable
type; replaced thedata_series
anddata_transforms
fields in the model type definitions withobservable_mappings::OrderedDict{Symbol, Observable}
, which is initialized ininit_observable_mappings!
. kalman_filter
has been broken out into StateSpaceRoutines.jl.estimate
now saves only parameter draws, not the associated state-space matrices or the last filtered states for each draw.
- Added Model 1002, an updated version of Model 990.
- Added documentation for Model 1002 at docs/DSGE_Model_Documentation_1002.pdf. This pdf includes an overview of the economic theory underlying the model, a summary of the model's main equations, a description of the data used, a table of priors for the model's parameters, and more.
- Optim.jl's
MultivariateOptimizationResults
type requiresf_increased
field MersenneTwister
must be constructed with a seed
- Gensys no longer throws an error when system is indeterminate; instead, a warning is printed to the screen.
- Fix
OptimizationTrace
constructor according to Optim v0.6. See #6.
- Automatic dataset download and generation
- More robust and flexible treatment of dataset- and model-related dates
- Refactored computational settings
- Improved infrastructure for organizing input/output files
- Bug fix in treatment of zero lower bound in posterior computation
- Improved test coverage and documentation
- Input data matrices are CSV instead of HDF5
- Estimation output matrices are not flattened when saved