版本发布 4
## What's Changed * Non-Linear Measurement Equations by @GongJr0 in https://github.com/GongJr0/SymbolicDSGE/pull/19 * Module Re-organization by @GongJr0 in https://github.com/GongJr0/SymbolicDSGE/pull/22 * Pre-Release SR functionality by @GongJr0 in https://github.com/GongJr0/SymbolicDSGE/pull/24 * Extended Kalman Filter by @GongJr0 in https://github.com/GongJr0/SymbolicDSGE/pull/26 * Bayesian estimation by @GongJr0 in https://github.com/GongJr0/SymbolicDSGE/pull/31 * Documentation update by @GongJr0 in https://github.com/GongJr0/SymbolicDSGE/pull/32 **Full Changelog**: https://github.com/GongJr0/SymbolicDSGE/compare/v0.2.2-alpha...v0.5.0-beta
# Kalman Filter Integration Pipeline This release delivers a comprehensive refactor of the Kalman filter pipeline. It introduces a dedicated configuration system and a new interface for streamlined filtering on `SolvedModel`. ## Additions - Introduced a full `KalmanConfig` system for configuring filtering behavior. - Added a `KalmanInterface` for running filters directly on `SolvedModel`. - Added support for filtered observables (`y_filt`) in `FilterResult`. - Added YAML‑level support for `kalman:` configuration blocks in model definitions. - Added richer observable and measurement‑error structures to model YAMLs. ## Changes - Updated the solver and parser to integrate Kalman configuration. - Improved naming, structure, and typing across Kalman‑related modules.
# Correlated Shock logic, Shock Processing, Extended Multivariate Shock infrastructure This release iteration has a heavy focus on shock specifications and the much-needed multivariate distribution support. ## Changes - Introduced spec notation for multivariate shock arrays: ```python3 # Two uncorrelated shocks (2 univariate generators) spec1 = {'g': shock_gen(...), 'z': shock_gen(...)} # Two correlated shocks, one multi-var generator. Cov matrix built at sim-time spec2 = {'g,z': shock_gen(...)} # Spec1: expects {"sig_g, sig_z"} available in calibration config. # Spec2: expects {"sig_g, "sig_z", "rho_gz" | "rho_zg"} available in calibration config. ``` - Reformatted the multivariate distributions to accept a `cov` parameter for an $(n\times n)$ covariance matrix (distributions used to compute the matrix from supplied model parameters) - Added `_build_cov` to `SolvedModel` to offload the matrix computations - Multivar distributions don't need/use a special generator signature. `abstract_shock_array` has beed restored as the true abstraction parent of all built-in shock generation due to multivar and univar shocks sharing signatures. - Added `_shock_unpack` to `SolvedModel` to parse and identify shock structure from specification input. `_shock_unpack` is now the owner of all shock construction processes, returning a `(idx, shock_arr)` to the `sim` method. - Introduced `SymbolGetterDict`; an extension on native dictionaries now used in the config. Allows using string `varname`s to index symbolic keys. (`mySGD["var1"] == mySGD[sp.Symbol("var1")]`). This lets users avoid converting config names to symbols in notebooks, etc. as long as they don't need the symbolic representations.
# Pre-Production release of the DSGE infrastructure This release contains a fully functional linearized DSGE engine and a native model specification syntax. As the name suggests, `SymbolicDSGE` allows inspection and adjustment of symbolic model equations post-declaration. Therefore, adjusting the model after a solution does not require an adjustment to the YAML config. (Consequently, the python interpreter is never required to refer back to the config.) This approach makes tweaks to model equations trivial and facilitates the symbolic adjustment layer that will be introduced in further releases. For now, the project is a simple DSGE engine with an intended focus on small/medium scale linearized DSGEs.