Skip to main content

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

SourceSeriesUpdateAuth
fred800k+ U.S. + international series (Federal Reserve / St Louis Fed)dailyAPI key (free)
ecbEuropean Central Bank statistical data warehousedailynone
blsBureau of Labor Statistics (CPI, employment, etc.)monthly+API key (free)
beaBureau 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:

FrequencyCache TTL
Daily series6 hours
Weekly series1 day
Monthly+ series1 week
Metadata30 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

VersionItems
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