Metadata-Version: 2.4
Name: pysnowdrop
Version: 1.0.10
Summary: Python Platform for DSGE Modeling
License: LGPL-3.0-or-later
License-File: LICENSE
Keywords: DSGE,Macroeconomic Modeling
Author: Alexei Goumilevski
Author-email: agoumilevski@hotmail.com
Maintainer: Alexei Goumilevski
Maintainer-email: Agoumilevski@hotmail.com
Requires-Python: >=3.10,<4.0
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development
Provides-Extra: autograd
Provides-Extra: compecon
Provides-Extra: glob2
Provides-Extra: pdflatex
Provides-Extra: pykalman
Provides-Extra: pylatex
Provides-Extra: quantecon
Provides-Extra: reportlab
Provides-Extra: scikit-learn
Provides-Extra: textwrap3
Requires-Dist: PyLaTeX (>=1.4.2,<2.0.0) ; extra == "pylatex"
Requires-Dist: PyPDF2 (>=3.0.1,<4.0.0)
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
Requires-Dist: autograd (>=1.7.0,<2.0.0) ; extra == "autograd"
Requires-Dist: compecon (>=2024.5.19,<2025.0.0) ; extra == "compecon"
Requires-Dist: corner (>=2.2.2,<3.0.0)
Requires-Dist: dill (>=0.3.8,<0.4.0)
Requires-Dist: emcee (>=3.1.6,<4.0.0)
Requires-Dist: filterpy (>=1.4.5,<2.0.0)
Requires-Dist: glob2 (>=0.7,<0.8) ; extra == "glob2"
Requires-Dist: graphviz (>=0.20.3,<0.21.0)
Requires-Dist: lark (>=1.2.2,<2.0.0)
Requires-Dist: matplotlib (==3.10.0)
Requires-Dist: networkx (>=3.2,<4.0)
Requires-Dist: numba (>=0.59.0,<0.60.0)
Requires-Dist: numpy (==1.26.4)
Requires-Dist: pandas (>=2.1.4,<3.0.0)
Requires-Dist: particles (>=0.4,<0.5)
Requires-Dist: pdfkit (>=1.0.0,<2.0.0)
Requires-Dist: pdflatex (>=0.1.3,<0.2.0) ; extra == "pdflatex"
Requires-Dist: pydot (>=2.0.0,<3.0.0)
Requires-Dist: pykalman (>=0.9.7,<0.10.0) ; extra == "pykalman"
Requires-Dist: pylatex (>=1.4.2,<2.0.0) ; extra == "pylatex"
Requires-Dist: pymcmcstat (>=1.9.1,<2.0.0)
Requires-Dist: pytest (>=7.4.0,<8.0.0)
Requires-Dist: quantecon (>=0.7.2,<0.8.0) ; extra == "quantecon"
Requires-Dist: reportlab (>=4.2.2,<5.0.0) ; extra == "reportlab"
Requires-Dist: ruamel.yaml (==0.17.21)
Requires-Dist: scipy (==1.11.4)
Requires-Dist: seaborn (>=0.13.0,<0.14.0)
Requires-Dist: statsmodels (>=0.14.0,<0.15.0)
Requires-Dist: symengine (>=0.11.0,<0.12.0)
Requires-Dist: sympy (>=1.12,<2.0)
Requires-Dist: textwrap3 (>=0.9.2,<0.10.0) ; extra == "textwrap3"
Requires-Dist: xlsxwriter (>=3.2.0,<4.0.0)
Project-URL: Repository, https://github.com/gumilevskij/Framework.git
Description-Content-Type: text/markdown

# Python Framework for DSGE Models
 
## Authors: Alexei Goumilevski and James Otterson
 
## What it is:
This Framework is designed to assist economists in the development and execution of Dynamic Stochastic General Equilibrium (DSGE) models within a Python environment.

## Installation:

Users are advised to create a virtual environment in Python to isolate this installation and its packages from the system-wide Python installation and other virtual environments. There are three options to install the “Snowdrop” package:

1. Clone this GitHub repository to your local drive. Then install the necessary packages and libraries for this project.
   The following commands illustrate an example: <br />
   cd to_your_working_directory <br />
   git clone https:/github.com/gumilevskij/Framework.git <br />
   python -m venv env <br />
   source env/bin/activate <br />
   pip install -r Framework/requirements.txt
3. Run the command: pip install snowdrop-1.0.6-py3-none-any.whl --user
4. Install *Snowdrop* via pip installer: pip install pysnowdrop --upgrade
 
 ## How to run:
 - Create or modify existing YAML model file in the supplements/models folder.
 - Open tests/test_toy_models.py file and set *fname* to the name of the model file.
 - Run simulations in the Spyder IDE by double-clicking the run button or execute the Python script in a command prompt.

## Content:
 - Sample model file (see `<supplements/models/Toy/JLMP98.yaml>`)
 - Documentation (see `<supplements/docs/UserGuide.pdf>`)

## Highlights:
- The Framework is written in Python and utilizes only Python libraries available through the Anaconda distribution.
- It is versatile in parsing model files written in human-readable YAML format, Sirius XML format, as well as simple IRIS and DYNARE model files.
- Prototype model files are available for both non-linear and linear perfect-foresight models.
- The Framework can be executed as a batch process, in a Jupyter notebook, or within a Spyder interactive development environment (Scientific Python Development environment).
- It parses the model file, checks syntax for errors, and generates source code for Python functions, computing the Jacobian up to the third order in symbolic form.
- Non-linear equations are solved iteratively using Newton's method. Two algorithms are implemented: ABLR stacked matrices method and LBJ forward-backward substitution method.
- Linear models are solved using Binder and Pesaran's method, Anderson and More's method, and two generalized Schur methods that replicate calculations used in Dynare and Iris.
- Non-linear models can be executed with time-dependent parameters.
- The Framework can be employed to calibrate models to identify model parameters. Calibration can be performed for both linear and non-linear models, applying a Bayesian approach to maximize the likelihood function that incorporates prior beliefs about parameters and the model's goodness of fit to the data.
- It can sample model parameters using the Markov Chain Monte Carlo affine invariant ensemble sampler algorithm developed by Jonathan Goodman.
- The Framework utilizes the Scientific Python Sparse package for algebra with large matrices.
- Several filters have been implemented, including Kalman (for linear and non-linear models), Unscented Kalman, LRX, HP, Bandpass, and Particle filters. Multiple versions of Kalman filter and smoother algorithms have been developed, including diffuse and non-diffuse, as well as multivariate and univariate filters and smoothers.
- As a result of the runs, the Framework generates one- and two-dimensional plots and saves data in Excel files and in a Python SQLite database.

## DISCLAIMERS:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14649322.svg)](https://doi.org/10.5281/zenodo.14649322)

