Skip to content

Impulso

Bayesian Vector Autoregression in Python.

import pandas as pd
from impulso import VAR, VARData
from impulso.identification import Cholesky

# Load data
df = pd.read_csv("macro_data.csv", index_col="date", parse_dates=True)
data = VARData.from_df(df, endog=["gdp", "inflation", "rate"])

# Estimate
fitted = VAR(lags="bic", prior="minnesota").fit(data)

# Forecast
forecast = fitted.forecast(steps=8)
forecast.median()  # point forecasts
forecast.hdi()  # credible intervals

# Structural analysis
identified = fitted.set_identification_strategy(Cholesky(ordering=["gdp", "inflation", "rate"]))
irf = identified.impulse_response(horizon=20)
irf.plot()

We currently have some availability for consulting on how Bayesian modelling, vector autoregressions, and impulso can be integrated into your team's macroeconomic and financial forecasting work. If this sounds relevant, book an introductory call. These calls are for consulting inquiries only. For technical usage questions and free community support, please use GitHub Discussions and the documentation below.

Features

  • Validated data containersVARData catches shape mismatches, missing values, and type errors at construction time
  • Immutable pipelineVARData -> VAR -> FittedVAR -> IdentifiedVAR, each stage frozen after creation
  • Economist-friendly API — think in variables and lags, not tensors and MCMC chains
  • Minnesota prior — smart defaults with tunable hyperparameters for shrinkage
  • Automatic lag selection — AIC, BIC, and Hannan-Quinn criteria
  • PyMC backend — full Bayesian estimation with NUTS sampling
  • Probabilistic forecasts — posterior median, HDI credible intervals, tidy DataFrames
  • Structural identification — Cholesky and sign restriction schemes
  • Built-in plotting — IRF, FEVD, forecast, and historical decomposition plots

Installation

pip install impulso

Learn more