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
fred_forecaster-0.1.0.tar.gz
(15.8 kB
view details)
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
|