A diagnostic suite for linear DSGE models with a custom backend supporting symbolic manipulation.
Project description
by Güney Kıymaç
Installation
pip install SymbolicDSGE
pip install "SymbolicDSGE[fred]" # FRED API utilities
Useful Links
Overview
SymbolicDSGE is a Python DSGE engine with a JIT compiled backend for linear and linearized DSGE models, supporting symbolic manipulation features for in-place model modification.
It also provides measurement-equation augmentation tools, including symbolic regression for complete or restricted free-form function discovery and OLS, Ridge, Lasso, and Elastic Net for structured linear coefficient estimation.
The library supports a wide set of features beyond augmentation:
- DSGE model specification, symbolic manipulation, and linearization
- Bayesian and maximum-likelihood estimation
- Simulation and impulse-response-function utilities
- Gaussian and extended Kalman filtering
- Automatic data retrieval from FRED
- Custom shock distributions via SciPy or user-defined samplers
- Monte Carlo pipelines for comparing models or model-generated samples, including:
- Statistical tests
- Regression setups
- Output transformations
- Filtering
- Data generation
Read the Docs
Alongside API references and implementation conventions, the documentation includes guides covering model setup, estimation, simulation, and filtering.
The documentation is kept up to date and aims to clarify conventions, workflows, and implementation choices throughout SymbolicDSGE.
Suggestions for improving or extending the documentation are welcome as issues.
AI Parsability
The documentation is a static Material MkDocs site, so web-enabled AI tools should be able to search, parse, and summarize it reliably.
Minimal Example
from SymbolicDSGE import ModelParser
from SymbolicDSGE import DSGESolver
from numpy import float64, array
# Read the YAML config (Equations, Measurements, Parameters, Optional Filter Spec)
parsed = ModelParser("<path-to-config>.yaml").get_all()
model, kalman = parsed
# Compile the model
solver = DSGESolver(model, kalman)
compiled = solver.compile(
variable_order=None,
params_order=None,
n_state=3,
n_exog=2,
linearize=False,
)
print("Equations with symbols removed: \n", "\n".join(map(str, compiled.objective_eqs)), "\n")
print("Equations as passed to the solver: \n", compiled.equations)
>>> Equations with symbols removed:
-beta*fwd_Pi + cur_Pi - cur_x*kappa - cur_z
-cur_g + cur_x - fwd_x + tau_inv*(cur_r - fwd_Pi)
-cur_r*rho_r - e_R + fwd_r + (rho_r - 1)*(fwd_Pi*psi_pi + fwd_x*psi_x)
-cur_g*rho_g - e_g + fwd_g
-cur_z*rho_z - e_z + fwd_z
Equations as passed to the solver:
<function DSGESolver.compile.<locals>.equations at 0x0000012D16AB5B20>
# Solve the compiled model
sol = solver.solve(
compiled,
parameters=None,
steady_state=array([0.0, 0.0, 0.0, 0.0, 0.0], dtype=float64),
)
print("Is stable: ", sol.policy.stab == 0)
print("Eigenvalues: ", sol.policy.eig)
>>> Is stable: True
Eigenvalues: [0.27920118+0.j 0.83000003+0.j 0.84999992+0.j 2.56517116+0.j 1.18470582+0.j]
# Plot IRFs (single or multi shock)
sol.transition_plot(
T=25,
shocks=["g", "z"],
scale=1.0,
observables=True,
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file symbolicdsge-1.3.2.tar.gz.
File metadata
- Download URL: symbolicdsge-1.3.2.tar.gz
- Upload date:
- Size: 232.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b798f46709f2faf551868d012f682773e1e37649fb77f89eb0784cdf49907ad5
|
|
| MD5 |
615eed21011542f811a221dd06a5e54c
|
|
| BLAKE2b-256 |
a04b27d586b1df73bdd64b9f8ceab10c8ab754552bd67ba0a41c06cbe7f708b2
|
File details
Details for the file symbolicdsge-1.3.2-py3-none-any.whl.
File metadata
- Download URL: symbolicdsge-1.3.2-py3-none-any.whl
- Upload date:
- Size: 302.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5c591084c32ab8cf70afcc5895887ea097371d684f6c71f319df1794aff414f
|
|
| MD5 |
85faa29a7ce3011ac338caeaad7ad1cd
|
|
| BLAKE2b-256 |
41723fd2efc55e9b75ddf9194166d3dd3bc4b61e841ec0809fb92a9d92679e81
|