Time series forecasting for FRED economic data
Project description
fred_forecaster
A Python package for time series forecasting of Federal Reserve Economic Data (FRED).
Features
- Flexible FRED data retrieval: Fetch any FRED series using its ID (e.g., GFDEBTN for total public debt).
- Multiple forecasting approaches:
- Classical SARIMAX modeling: Fit SARIMAX(1,1,1)x(0,1,0)[4] to quarterly data.
- Bayesian structural time series: Decompose data into level, trend, and seasonal components using PyMC.
- Simulation: Generate multiple (e.g., 1,000) random simulations for future quarters.
- Calibration: Reweight simulations to match external targets (e.g., CBO forecasts).
- Probability analysis: Calculate probabilities of quarter-over-quarter declines.
- Visualization: Create plots of forecasts, probability distributions, and model components.
Installation
From PyPI
pip install fred-forecaster
From source
git clone https://github.com/maxghenis/fred-forecaster.git
cd fred-forecaster
pip install -e . # Install core package
pip install -e ".[dev]" # Include development dependencies
pip install -e ".[app]" # Include Streamlit app dependencies
Usage
Basic usage
import os
from fred_forecaster import (
fetch_fred_data,
fit_sarimax_model,
generate_simulations,
plot_forecasts
)
# Set your FRED API key
os.environ["FRED_API_KEY"] = "your_api_key_here"
# Fetch FRED data
data = fetch_fred_data("GFDEBTN") # Federal debt
# Fit SARIMAX model
model = fit_sarimax_model(data["Debt"])
# Generate simulations
simulations, forecast_index = generate_simulations(model, data, end="2028Q4", N=1000)
# Plot results
fig = plot_forecasts(data, simulations, forecast_index)
fig.savefig("forecast.png")
Bayesian forecasting
from fred_forecaster import (
fetch_fred_data,
fit_bayesian_model,
generate_bayesian_simulations,
plot_forecasts
)
# Fetch data
data = fetch_fred_data("GFDEBTN")
# Fit Bayesian model
model, idata = fit_bayesian_model(data["Debt"])
# Generate simulations
simulations, forecast_index = generate_bayesian_simulations(
model, idata, data, end="2028Q4", N=1000
)
# Plot results
fig = plot_forecasts(data, simulations, forecast_index)
Calibration to external targets
from fred_forecaster import calibrate_simulations
# Define your own targets (or use the default CBO targets)
targets = {2024: 35.230, 2025: 37.209}
# Calibrate simulations
weights = calibrate_simulations(simulations, forecast_index, targets)
# Plot calibrated results
fig = plot_forecasts(data, simulations, forecast_index, weights)
Demo App
The package includes a Streamlit demo app that showcases its functionality:
cd demo
streamlit run app.py
This will open a web browser with an interactive interface where you can:
- Select a FRED series ID
- Choose between SARIMAX and Bayesian models
- Toggle calibration to CBO targets
- Adjust simulation parameters
- View forecasts and probability analyses
Development
Setup
pip install -e ".[dev]"
Running tests
pytest # Run regular tests
pytest --run-slow # Include slow tests (e.g., Bayesian model tests)
pytest --cov=fred_forecaster # Run with coverage
License
MIT
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fred_forecaster-0.1.0.tar.gz.
File metadata
- Download URL: fred_forecaster-0.1.0.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0fa643f77311646ffcbff584a3e8def2d0b44813d607e1075d143bde27567a5
|
|
| MD5 |
4ca3e581e6f5c49f0b54f82863bf6490
|
|
| BLAKE2b-256 |
2e45ea15dd3a51149c9c89683a874952ed23ab6877866c05f868e03fe7fbdbbb
|
File details
Details for the file fred_forecaster-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fred_forecaster-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aac3a1894acc058a800e5593667aec7679cded045f13580a7ec593616eeec3ef
|
|
| MD5 |
2a68053aa716dc302702627519a18f7a
|
|
| BLAKE2b-256 |
ef7b731add62c1f10cfd4038ea9dc564a104b62390083f7a76f4536b878d96c6
|