Skip to main content

dyno.py

Dyno is a Python library for specifying, solving and simulating dynamic macroeconomic models: stochastic DSGE models solved by first-order perturbation, and deterministic perfect-foresight (transition) models solved with a stacked-time Newton solver. Models are written in the human-readable .dyno language (explicit time indices [t], [t-1], [t+1], steady-state values [~]), or imported directly from Dynare .mod files. Dyno checks steady states and Blanchard-Kahn conditions, computes impulse responses, moments and simulations, renders model reports, and comes with Dyno Lab, a JupyterLab extension for editing and solving models interactively.

Documentation: https://econforge.github.io/dyno.py/

Install

Dyno is distributed as a conda package on the econforge channel on prefix.dev. With pixi, in a new or existing project:

pixi init my-project && cd my-project            # skip for an existing project
pixi workspace channel add --prepend https://prefix.dev/econforge
pixi add dyno

--prepend gives the econforge channel priority over conda-forge, so you get the latest Dyno release. For the graphical interface (Dyno Lab), also add JupyterLab and the extension:

pixi add jupyterlab jupyterlab-dyno
pixi run jupyter lab

See the installation guide for optional components (such as the Dynare preprocessor).

Example

Write a model in neo.dyno:

α <- 0.36
β <- 0.99
δ <- 0.025
ρ <- 0.95
γ <- 2.0

z[~] <- 0.0
k[~] <- ((1/β - (1-δ)) / α)**(1 / (α-1))
y[~] <- k[~]^α
i[~] <- δ * k[~]
c[~] <- y[~] - i[~]

z[t] = ρ * z[t-1] + e_z[t]
y[t] = exp(z[t]) * k[t-1]^α
k[t] = (1-δ) * k[t-1] + i[t]
c[t] = y[t] - i[t]
β * (c[t+1]/c[t])^(-γ) * (α * y[t+1]/k[t] + 1 - δ) = 1

e_z[t] <- N(0.01)

Then solve it and compute impulse responses:

from dyno import DynoModel

model = DynoModel("neo.dyno")
model.check()                          # raises if the steady state is wrong
solution = model.solve()               # first-order perturbation
irfs = solution.irfs(type="deviation", T=40)
print(irfs["e_z"][["y", "c", "k", "i"]].head())
solution.plot(type="deviation")        # interactive chart in Jupyter

Dynare files work the same way: DynoModel("model.mod").

Contributing

Contributors work from a clone of this repository. The sections below, and the Develop Dyno page of the documentation, describe the development setup.

Setup

Using pixi (production and development environment)

pixi can be installed on a *nix system using the following command:

curl -fsSL https://pixi.sh/install.sh | sh

For interactive modeling, Dyno features a JupyterLab extension (jupyterlab_dyno / Dyno Lab):

pixi run -e dev jupyter lab

For development (including documentation and unit tests), pixi provides a set of pre-configured tasks.

Model representation explorer (dev tool)

To visualize how the library currently imports and renders every example model (across backends, strict options, and text/HTML/Markdown output), run:

pixi run -e solara explorer

This is a maintainer/contributor tool for tracking the library's progress across its example models — it is not meant for developing or calibrating your own models; use Dyno Lab (above) for that. See the documentation for details.

To build and serve documentation locally with zensical:

pixi run -e dev docs

To run unit and coverage tests:

pixi run test
pixi run cov

Finally, types can be checked with mypy:

pixi run typecheck

Metadata

Release files for dynopy 0.1.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dynopy 0.1.14
File Size Uploaded
dynopy-0.1.14.tar.gz 263.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dynopy 0.1.14
File Interpreter ABI Platform
dynopy-0.1.14-py3-none-any.whl Python 3 none any Details

Total release size: 545.8 kB

Release files / dynopy-0.1.14.tar.gz

Download URL dynopy-0.1.14.tar.gz
Size 263.2 kB
Tags Source
SHA-256 checksum
How to use checksums
668c466f50bf40267fc1f6271b34c7b4cf5de742967df9e1e325e738e37c2ca5
BLAKE2b-256 checksum
How to use checksums
453b3b60584b65f9f5c4afb98b80be1ad829379313d708a4455e6a1b08d67e7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / dynopy-0.1.14-py3-none-any.whl

Download URL dynopy-0.1.14-py3-none-any.whl
Size 282.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8862b82b49bd6019f74afe096060278849891f43a929dc4f40472bfcf44188eb
BLAKE2b-256 checksum
How to use checksums
b8427dfed7f622b44abfc577f2e7793cd1304abe886024f6e46315018f19f406
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.14 This release

2 release files

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

0.1.0.2

1 release file

0.1.0.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page