Snowdrop

Snowdrop: Python Package for DSGE Modeling - Published in JOSS (2025)

https://github.com/gumilevskij/framework

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Sociology Social Sciences - 87% confidence
Engineering Computer Science - 80% confidence
Last synced: 4 months ago · JSON representation

Repository

Python Framework for DSGE Modeling

Basic Info
  • Host: GitHub
  • Owner: gumilevskij
  • License: gpl-3.0
  • Language: HTML
  • Default Branch: main
  • Size: 322 MB
Statistics
  • Stars: 6
  • Watchers: 1
  • Forks: 1
  • Open Issues: 0
  • Releases: 2
Created 12 months ago · Last pushed 4 months ago
Metadata Files
Readme Contributing License

README.md

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 environment and other virtual environments. There are three ways to install the Snowdrop package:

1. Clone the GitHub Repository (Recommended)

This method gives you full access to the source code and examples, including automated tests. It also allows for easy updates via git pull.

cd yourworkingdirectory bash git clone https://github.com/gumilevskij/Framework.git python -m venv env source env/bin/activate pip install -r Framework/requirements.txt

2. Install from the Wheel File

The repository includes a pre-built .whl (wheel) file in the folder Framework/dist. By copying this file to your local disk, you can install this package directly:

bash pip install snowdrop-1.0.8-py3-none-any.whl --user

This method is useful if you want a simple install from a local file without pulling from PyPI.

3. Install via PyPI

You can install the latest version of Snowdrop directly from PyPI using pip:

bash pip install pysnowdrop --upgrade

Quick Start

  • Create or modify a YAML model file in the supplements/models folder.
  • Open tests/test_toy_models.py and set the variable fname to the name of your model file.
  • Run simulations using the Spyder IDE by clicking the Run button, or execute the script from the command line:

bash python tests/test_toy_models.py * To run automated tests, use the command:

bash pytest tests

Documentation

Below are useful resources to help you understand the structure and usage of the Snowdrop framework:

  • Sample model file: supplements/models/TOY/JLMP98.yaml This file provides a working example of a YAML-based model specification. You can use it as a template to create your own models.

  • User guide (PDF): supplements/docs/UserGuide.pdf The user guide contains detailed instructions on how to configure models, run simulations, and interpret outputs. It also describes supported YAML fields and Python options.

  • API documentation: Open supplements/api_docs/_build/html/index.html in your web browser. This HTML-based API reference provides an overview of the module structure, key functions, and their expected inputs/outputs.

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 DOI

Owner

  • Login: gumilevskij
  • Kind: user

JOSS Publication

Snowdrop: Python Package for DSGE Modeling
Published
August 15, 2025
Volume 10, Issue 112, Page 8197
Authors
Alexei Goumilevski ORCID
International Monetary Fund
James Otterson ORCID
International Monetary Fund
Editor
Nikoleta Glynatsi ORCID
Tags
DSGE Macroeconomic Modeling

GitHub Events

Total
  • Create event: 3
  • Issues event: 5
  • Release event: 2
  • Watch event: 5
  • Issue comment event: 3
  • Member event: 1
  • Push event: 256
  • Gollum event: 5
  • Pull request review event: 1
  • Pull request event: 1
  • Fork event: 1
Last Year
  • Create event: 3
  • Issues event: 5
  • Release event: 2
  • Watch event: 5
  • Issue comment event: 3
  • Member event: 1
  • Push event: 256
  • Gollum event: 5
  • Pull request review event: 1
  • Pull request event: 1
  • Fork event: 1

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 4
  • Total pull requests: 2
  • Average time to close issues: 30 days
  • Average time to close pull requests: 3 days
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 4
  • Pull requests: 2
  • Average time to close issues: 30 days
  • Average time to close pull requests: 3 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • phumthep (4)
Pull Request Authors
  • Nikoleta-v3 (2)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 32 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 10
  • Total maintainers: 1
pypi.org: pysnowdrop

Python Platform for DSGE Modeling

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 32 Last month
Rankings
Dependent packages count: 9.7%
Average: 32.0%
Dependent repos count: 54.4%
Maintainers (1)
Last synced: 4 months ago

Dependencies

pyproject.toml pypi
  • PyLaTeX ^1.4.2
  • PyPDF2 ^3.0.1
  • autograd ^1.7.0
  • compecon ^2024.5.19
  • corner ^2.2.2
  • emcee ^3.1.6
  • filterpy ^1.4.5
  • glob2 ^0.7
  • graphviz ^0.20.3
  • lark ^1.2.2
  • matplotlib ^3.8.0
  • networkx ^3.2
  • numba ^0.59.0
  • numpy ^1.26.4
  • pandas ^2.1.4
  • particles ^0.4
  • pdfkit ^1.0.0
  • pdflatex ^0.1.3
  • pydot ^2.0.0
  • pykalman ^0.9.7
  • pylatex ^1.4.2
  • pymcmcstat ^1.9.1
  • pytest ^7.4.0
  • python ^3.10
  • quantecon ^0.7.2
  • reportlab ^4.2.2
  • ruamel.yaml ^0.18.6
  • scipy ^1.11.4
  • seaborn ^0.13.0
  • statsmodels ^0.14.0
  • symengine ^0.11.0
  • sympy ^1.12
  • textwrap3 ^0.9.2
requirements.txt pypi
  • PyLaTeX >=1.4.2
  • PyPDF2 >=3.0.1
  • autograd >=1.7.0
  • compecon >=2024.5.19
  • corner >=2.2.2
  • emcee >=3.1.6
  • filterpy >=1.4.5
  • glob2 >=0.7
  • graphviz >=0.20.3
  • lark >=1.2.2
  • matplotlib >=3.10.0
  • networkx >=3.2
  • numba >=0.59.0
  • numpy >=1.26.4
  • pandas >=2.1.4
  • particles >=0.4
  • pdfkit >=1.0.0
  • pdflatex >=0.1.3
  • pydot >=2.0.0
  • pykalman >=0.9.7
  • pylatex >=1.4.2
  • pymcmcstat >=1.9.1
  • pytest >=7.4.0
  • python >=3.10
  • quantecon >=0.7.2
  • reportlab >=4.2.2
  • ruamel.yaml ==0.17.21
  • scipy >=1.12.0
  • seaborn >=0.13.0
  • statsmodels >=0.14.0
  • symengine >=0.11.0
  • sympy >=1.12
  • textwrap3 >=0.9.2
  • xlsxwriter >=3.2.0