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.13

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.13
File Size Uploaded
dynopy-0.1.13.tar.gz 258.7 kB Details

Built distribution (wheel)

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

Total release size: 538.3 kB

Release files / dynopy-0.1.13.tar.gz

Download URL dynopy-0.1.13.tar.gz
Size 258.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1f46c4e40588ab15369aa1a6ab2dcc2187c70f8ebc39b8de23e4a1350380ccbe
BLAKE2b-256 checksum
How to use checksums
04d12570b310dbf1d1ab4970dc22ae227650fcbbbaf0112174fc6d6ff41adabe
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 2, 2026.

Transparency log

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

Download URL dynopy-0.1.13-py3-none-any.whl
Size 279.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
974dac38626edf15b3fe5c002ee1a86336384bb93b3f13c12317ef211be37748
BLAKE2b-256 checksum
How to use checksums
50442a238a956b0c1d8706f1ae24d137dec408b0efe6fd52953537a58ff19255
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 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.13 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