mts1b-macrodata
Macro-data adapters: FRED, ECB, BLS, BEA.
Repo: github.com/MTS1B/mts1b-macrodata
Layer: 2
Wave: 2 (months 4-7)
Depends on: foundation, platform, httpx
Audience: mts1b-datalake, mts1b-research
What it is
Adapters for macroeconomic time series. Small, single-purpose, low-volume. Each adapter implements the same series-fetching contract.
Supported sources
| Source | Series | Update | Auth |
|---|---|---|---|
fred | 800k+ U.S. + international series (Federal Reserve / St Louis Fed) | daily | API key (free) |
ecb | European Central Bank statistical data warehouse | daily | none |
bls | Bureau of Labor Statistics (CPI, employment, etc.) | monthly+ | API key (free) |
bea | Bureau of Economic Analysis (GDP, trade, ...) | quarterly+ | API key (free) |
Module layout
mts1b_macrodata/
├── fred/
│ └── client.py
├── ecb/
│ └── client.py
├── bls/
│ └── client.py
├── bea/
│ └── client.py
└── unified/
└── calendar.py # release calendar (NFP, CPI, FOMC, ECB rate decisions)
API
Series API
from mts1b_macrodata.fred import Fred
async with Fred(api_key="...") as fred:
series = await fred.series("DFF") # Federal Funds Rate
# Series(id="DFF", title="Federal Funds Effective Rate",
# observations=pd.Series([...], index=DatetimeIndex([...])))
metadata = await fred.metadata("DFF")
# SeriesMetadata(id, title, frequency, units, ...)
# Bulk fetch
df = await fred.multiseries(["DFF", "UNRATE", "GDPC1", "CPILFESL"])
# pd.DataFrame indexed by date, columns by series id
Release calendar
from mts1b_macrodata.unified.calendar import release_calendar
events = await release_calendar(start=date.today(), days=30)
# [Release(name="NFP", date=date(2026, 6, 6), country="US", impact="high"),
# Release(name="FOMC Rate Decision", date=date(2026, 6, 18), ...),
# Release(name="ECB Rate Decision", date=date(2026, 6, 13), ...),
# ...]
Use case: avoid trading right before high-impact releases unless the strategy is event-aware.
Caching
Macro data is slow-changing. mts1b-macrodata caches aggressively:
| Frequency | Cache TTL |
|---|---|
| Daily series | 6 hours |
| Weekly series | 1 day |
| Monthly+ series | 1 week |
| Metadata | 30 days |
Cache lives in Redis (via mts1b-platform/db).
Build + test
pip install -e ".[dev]"
pytest -m unit
pytest -m live --fred-api-key=...
Roadmap
| Version | Items |
|---|---|
| 0.1 (Wave 2) | FRED, ECB, BLS, BEA + release calendar |
| 0.2 (Wave 3) | BoJ, BoE, IMF + global release calendar consolidation |
| 1.0 (LTS) | Stable interface |
See also
mts1b-datalake— bulk-ingests macro seriesmts1b-research— macro factors (yield curve slope, regime detection)