Skip to content

Macro release calendar artifact (FRED release dates + FOMC meetings)#368

Merged
cipher813 merged 1 commit into
mainfrom
feat/macro-release-calendar
Jun 4, 2026
Merged

Macro release calendar artifact (FRED release dates + FOMC meetings)#368
cipher813 merged 1 commit into
mainfrom
feat/macro-release-calendar

Conversation

@cipher813
Copy link
Copy Markdown
Owner

What

Adds a second dashboard-facing macro artifact — market_data/macro_release_calendar.parquet — carrying forward-looking macro event dates for robodashboard's upcoming Calendar page (and a real "next release" date for the Macro page, replacing the cadence estimate in robodashboard#63).

Columns: date, kind ('release'|'fomc'), series_id, label, release_name.

How

  • build_release_calendar(api_key, today) — for the clean periodic FRED series (CPI, Unemployment, Initial Claims, Consumer Sentiment), resolves each series' FRED release (/fred/series/release) and pulls upcoming scheduled dates (/fred/release/dates with include_release_dates_with_no_data=true), kept within a 180-day horizon. Plus every future scheduled 2026 FOMC meeting (hardcoded decision-day dates from federalreserve.gov).
    • Daily series (DGS2/DGS10/T10Y2Y/VIXCLS/HY-OAS) and FEDFUNDS are intentionally excluded: a daily release is calendar noise, and the meaningful fed-funds event is the FOMC meeting (emitted as kind=fomc).
    • Best-effort per series — a FRED outage yields a FOMC-only calendar, never an empty artifact.
  • write_release_calendar() — overwrites the fixed key each run (idempotent); empty build (no FRED key) is a no-op, never clobbering a good artifact.
  • Wired into collect() as a guarded secondary write, mirroring macro_history — a calendar failure is logged + returned in the status dict and never masks the macro.json the trading pipeline depends on (no-silent-fails: recorded surface = WARN log + release_calendar status field).
  • Artifact-registry PUT count for collectors/macro.py bumped 2 → 3.

Companion

  • ARTIFACT_REGISTRY row: alpha-engine-config branch feat/macro-release-calendar-registry (severity=warning, weekly Saturday).

Tests

  • New tests/test_release_calendar.py: build shape + kinds, future-only + 180d horizon filtering, FOMC future-only, sorted, FOMC-only-when-FRED-down, empty-without-key, write-puts-parquet, write-skips-empty.
  • Full suite: 1815 passed, 1 skipped (no regressions). pytest tests/ -v is the CI gate (no ruff in this repo).

Follow-ups

  • Seed after merge (artifact doesn't exist until the first Saturday run): write_release_calendar(bucket="alpha-engine-research") on the box / locally with creds — same as macro_history was seeded.
  • FOMC dates are hardcoded → refresh annually for 2027.

🤖 Generated with Claude Code

…+ FOMC)

A second dashboard-facing artifact alongside macro_history: forward-looking
macro EVENT dates for robodashboard's Calendar/Macro pages.

- build_release_calendar(): next FRED release dates for the clean periodic
  series (CPI, unemployment, initial claims, consumer sentiment) within a 180d
  horizon, plus every future scheduled 2026 FOMC meeting. Daily series and
  FEDFUNDS are excluded (daily releases are calendar noise; the fed-funds event
  is the FOMC meeting). Best-effort per series — a FRED hiccup yields a
  FOMC-only calendar, not an empty artifact.
- write_release_calendar(): overwrites market_data/macro_release_calendar.parquet
  each run (idempotent); empty build (no FRED key) is a no-op.
- Wired into collect() as a guarded secondary write, mirroring macro_history —
  a calendar failure never masks the macro.json the trading pipeline needs.
- Artifact-registry PUT count for collectors/macro.py bumped 2 → 3.

FOMC 2026 dates are hardcoded from federalreserve.gov (refresh annually).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cipher813 cipher813 merged commit a415fd4 into main Jun 4, 2026
1 check passed
@cipher813 cipher813 deleted the feat/macro-release-calendar branch June 4, 2026 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant