Introduction¶
MBFVAR (Multi-Frequency Bayesian Vector Autoregression) is a Python package for handling, disaggregating, and forecasting time series data at multiple frequencies using Bayesian VAR models.
Overview¶
Modern economic and financial data is often available at different frequencies:
Economic indicators: GDP (quarterly), Industrial Production (monthly)
Financial data: Stock prices (daily), Interest rates (daily/weekly)
Survey data: Consumer confidence (monthly), Business surveys (quarterly)
MBFVAR allows you to:
Model jointly variables observed at different frequencies
Disaggregate lower-frequency data to match higher-frequency observations
Generate forecasts at the highest frequency and aggregate as needed
Impose constraints on forecasts (conditional forecasting)
Compare scenarios with different assumptions
Optimize priors using Bayesian hyperparameter tuning
Key Features¶
Multi-Frequency Modeling¶
Work seamlessly with data at different temporal granularities:
Yearly (Y), Quarterly (Q), Monthly (M), Weekly (W), Daily (D)
Automatic handling of frequency ratios and temporal aggregation
Efficient disaggregation following Schorfheide and Song (2015)
Bayesian Framework¶
The package implements a rigorous Bayesian approach:
Minnesota-type prior: Shrinks coefficients toward a random walk
Gibbs sampling: Efficient MCMC algorithm for posterior inference
Hyperparameter optimization: Bayesian and Mango optimizers for prior tuning
Predictive distributions: Full characterization of forecast uncertainty
Flexible Forecasting¶
Generate various types of forecasts:
Unconditional forecasts: Based solely on historical data
Conditional forecasts: Impose constraints on specific variables/periods
Scenario analysis: Compare multiple “what-if” scenarios
Model comparison: Evaluate forecasts across different model vintages
Rich Visualization¶
Create publication-ready graphics:
Fan charts: Visualize forecast uncertainty with probability bands
Mean forecast plots: Show point forecasts and historical data
Scenario comparisons: Side-by-side comparison of forecast paths
Customizable: Save to file or display interactively
R Integration¶
Full compatibility with R through reticulate:
Call MBFVAR functions directly from R scripts
Seamless data exchange between R and Python
Leverage R’s data manipulation with Python’s modeling
Installation¶
Install from GitHub using pip:
pip install git+https://github.com/laurentflorin/MBFVAR.git
For development or to run examples:
git clone https://github.com/laurentflorin/MBFVAR.git
cd MBFVAR
pip install -e .
Requirements¶
Python: >= 3.8
Core dependencies: NumPy, SciPy, Pandas, Matplotlib
Visualization: Plotly, Seaborn, fanchart
Optimization: bayesian-optimization, arm-mango
I/O: openpyxl, xlsxwriter
All dependencies are automatically installed when using pip.
Quick Start¶
Here’s a minimal working example:
import MBFVAR
import pandas as pd
import numpy as np
# 1. Load your data
data_q = pd.read_excel("data.xlsx", sheet_name="Q", index_col=0) # Quarterly
data_m = pd.read_excel("data.xlsx", sheet_name="M", index_col=0) # Monthly
data_w = pd.read_excel("data.xlsx", sheet_name="W", index_col=0) # Weekly
# 2. Prepare data
data = [data_q, data_m, data_w]
trans = [np.array([1, 1]), np.array([1, 1, 1]), np.array([1, 1, 1])]
frequencies = ["Q", "M", "W"]
data_in = MBFVAR.mbfvar_data(data, trans, frequencies)
# 3. Fit model
model = MBFVAR.MixedFrequencyBVAR(nsim=1000, nburn=0.5, nlags=[6, 4], thining=1)
hyp = [[0.09, 4.3, 1, 2.7, 4.3], [0.09, 4.3, 1, 2.7, 4.3]]
model.fit(data_in, hyp=hyp)
# 4. Forecast and visualize
model.forecast(H=52) # 52 weeks ahead
model.fanchart(variables="all", show=True)
Getting Help¶
Examples: See the
examples/directory for comprehensive tutorialsAPI Documentation: Full reference at MBFVAR
Examples Guide: Detailed examples at Examples
Issues: Report bugs at GitHub Issues
Methodology¶
The MBFVAR package implements the mixed-frequency VAR framework developed by Schorfheide and Song (2015). Key methodological features:
State-Space Representation¶
The model uses a state-space form to handle mixed frequencies:
State equation: VAR dynamics in the highest frequency
Observation equation: Links observed data to latent high-frequency state
Kalman filter: Efficiently handles missing observations
Minnesota Prior¶
The prior shrinks VAR coefficients toward a parsimonious benchmark:
Own first lags shrink toward random walk (coefficient = 1)
Other coefficients shrink toward zero
Shrinkage strength controlled by hyperparameters
Prevents overfitting in high-dimensional VARs
Gibbs Sampling¶
Posterior inference via MCMC:
Initialize parameters
Draw VAR coefficients | error covariance
Draw error covariance | VAR coefficients
Repeat steps 2-3 for nsim iterations
Discard burn-in period
Use remaining draws for inference
Citation¶
If you use MBFVAR in your research, please cite:
Florin, Laurent. (2024). MBFVAR: Multi-Frequency Bayesian Vector Autoregression.
GitHub repository, https://github.com/laurentflorin/MBFVAR
References¶
Schorfheide, F., & Song, D. (2015). Real-time forecasting with a mixed-frequency VAR. Journal of Business & Economic Statistics, 33(3), 366-380.
Giannone, D., Lenza, M., & Primiceri, G. E. (2015). Prior selection for vector autoregressions. Review of Economics and Statistics, 97(2), 436-451.
License¶
This project is licensed under the terms specified in the repository.