Metadata-Version: 2.4
Name: macroforecast
Version: 0.1.0
Summary: Decomposing ML Forecast Gains in Macroeconomic Forecasting
Project-URL: Documentation, https://macroforecast.github.io/macroforecast
Project-URL: Repository, https://github.com/macroforecast/macroforecast
Project-URL: Issues, https://github.com/macroforecast/macroforecast/issues
Author: Chan
License: MIT
License-File: LICENSE
Keywords: FRED,forecasting,machine-learning,macroeconomics
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.10
Requires-Dist: joblib>=1.3
Requires-Dist: numpy>=1.24
Requires-Dist: openpyxl>=3.1
Requires-Dist: pandas>=2.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: requests>=2.31
Requires-Dist: scikit-learn>=1.3
Requires-Dist: scipy>=1.11
Requires-Dist: statsmodels>=0.14
Requires-Dist: tqdm>=4.65
Provides-Extra: all
Requires-Dist: beautifulsoup4>=4.12.0; extra == 'all'
Requires-Dist: chromadb>=0.4.0; extra == 'all'
Requires-Dist: einops>=0.8.2; extra == 'all'
Requires-Dist: lightgbm>=4.0; extra == 'all'
Requires-Dist: matplotlib>=3.7; extra == 'all'
Requires-Dist: mcp[cli]>=1.2.0; extra == 'all'
Requires-Dist: mkdocs-material>=9.4; extra == 'all'
Requires-Dist: mkdocstrings[python]>=0.23; extra == 'all'
Requires-Dist: mypy>=1.5; extra == 'all'
Requires-Dist: pre-commit>=3.4; extra == 'all'
Requires-Dist: pyarrow>=14.0; extra == 'all'
Requires-Dist: pymupdf>=1.23.0; extra == 'all'
Requires-Dist: pytest-cov>=4.1; extra == 'all'
Requires-Dist: pytest>=7.4; extra == 'all'
Requires-Dist: ruff>=0.4; extra == 'all'
Requires-Dist: seaborn>=0.13; extra == 'all'
Requires-Dist: sentence-transformers>=2.2.0; extra == 'all'
Requires-Dist: torch>=2.0; extra == 'all'
Requires-Dist: xgboost>=2.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: mypy>=1.5; extra == 'dev'
Requires-Dist: pre-commit>=3.4; extra == 'dev'
Requires-Dist: pytest-cov>=4.1; extra == 'dev'
Requires-Dist: pytest>=7.4; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.4; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.23; extra == 'docs'
Provides-Extra: ml
Requires-Dist: lightgbm>=4.0; extra == 'ml'
Requires-Dist: pyarrow>=14.0; extra == 'ml'
Requires-Dist: torch>=2.0; extra == 'ml'
Requires-Dist: xgboost>=2.0; extra == 'ml'
Provides-Extra: rag
Requires-Dist: beautifulsoup4>=4.12.0; extra == 'rag'
Requires-Dist: chromadb>=0.4.0; extra == 'rag'
Requires-Dist: einops>=0.8.2; extra == 'rag'
Requires-Dist: mcp[cli]>=1.2.0; extra == 'rag'
Requires-Dist: pymupdf>=1.23.0; extra == 'rag'
Requires-Dist: sentence-transformers>=2.2.0; extra == 'rag'
Provides-Extra: viz
Requires-Dist: matplotlib>=3.7; extra == 'viz'
Requires-Dist: seaborn>=0.13; extra == 'viz'
Description-Content-Type: text/markdown

# macroforecast

Decomposing ML Forecast Gains in Macroeconomic Forecasting.

An open-source Python (+ R) framework for systematic evaluation of machine learning methods in macroeconomic forecasting, with built-in support for the FRED-MD, FRED-QD, and FRED-SD database ecosystem.

[![CI](https://github.com/macroforecast/macroforecast/actions/workflows/ci.yml/badge.svg)](https://github.com/macroforecast/macroforecast/actions/workflows/ci.yml)
[![Docs](https://github.com/macroforecast/macroforecast/actions/workflows/docs.yml/badge.svg)](https://macroforecast.github.io/macroforecast)
[![PyPI](https://img.shields.io/pypi/v/macroforecast)](https://pypi.org/project/macroforecast/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

---

## Status

| Layer | Version | Status |
|-------|---------|--------|
| Data (FRED-MD/QD/SD) | v0.1.0 | Complete |
| Forecasting Pipeline | v0.2.0 | Complete |
| Evaluation | v0.3.0 | Complete |

---

## Installation

```bash
pip install macroforecast
# or with all extras
pip install macroforecast[all]
```

---

## Quick Start

```python
import macroforecast as mc

# Load and transform FRED-MD (latest vintage, cached locally)
md = mc.load_fred_md()
md_t = md.transform()

print(md_t)
# MacroFrame(dataset='FRED-MD', vintage='current', T=790, N=128,
#            period=1959-01-01 to 2024-10-01, status=transformed)

# Subset by variable group
output = md_t.group("output_income")   # INDPRO, RPI, ...
prices = md_t.group("prices")          # CPI, PPI, ...

# Check missing values
report = md.missing_report()
print(report[["n_leading", "n_trailing", "n_intermittent"]].head())

# Method chaining
md_ready = (
    mc.load_fred_md()
    .trim(start="1970-01", end="2023-12")
    .handle_missing("trim_start")
    .transform()
)

# Load a specific vintage
md_2020 = mc.load_fred_md(vintage="2020-01")

# FRED-QD (quarterly)
qd = mc.load_fred_qd()

# FRED-SD (state-level)
sd = mc.load_fred_sd(states=["CA", "TX"], variables=["UR"])
```

---

## Documentation

Full documentation is available at [macroforecast.github.io/macroforecast](https://macroforecast.github.io/macroforecast).

---

## License

MIT
