# Macro Event Calendar

> macro-event-calendar

- Skill: `rgourley/macro-event-calendar` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add rgourley/macro-event-calendar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rgourley/macro-event-calendar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: rgourley (https://skillmd.com/u/rgourley)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rgourley/macro-event-calendar

---


# macro-event-calendar

You hand over a forward window (default 30 days) and get back the
macro release schedule with historical reaction stats per event type.

Sibling to earnings-blackout. earnings-blackout covers single-name
prints; this covers the macro releases that move the whole tape.
Every portfolio review should run both.

## When to invoke

- Portfolio review workflow: after earnings-blackout, run this for
  the macro-side of the calendar
- Pre-trade planning: "what's the next FOMC / CPI / NFP" before
  sizing a position
- The user says "macro calendar", "FOMC when", "CPI print", "what
  data is out this week"

## What you need

- `MASSIVE_API_KEY` for SPY historical reactions (Stocks Basic is
  enough; the tool is one range aggs call for SPY over the history
  window)

## What you get back

**Layer 1 JSON** matching [`output-schema.json`](./output-schema.json).
Per-event: date, release time ET, impact tier, historical mean /
median / p90 |1-day SPY move|, sample size. Plus a `crowded_days`
block flagging dates with 2+ events.

**Layer 2 rendered table** sorted by date. Impact tier rendered as
1-4 stars. Pattern-derived dates marked with `~` so users know to
verify against the official calendar. See
[`references/rendering.md`](./references/rendering.md).

## How it works

1. **Generate scheduled dates** for each event type over the forward
   window via pattern rules (NFP = 1st Friday, CPI = 2nd Wednesday,
   ISM Mfg = 1st business day, etc.). FOMC dates are hardcoded from
   the official published schedule.
2. **Fetch SPY history** for the `history_days` lookback (default
   730 = 2 years).
3. **For each event type, compute historical stats**: generate the
   same pattern dates over history, look up SPY's |1-day move| on
   each matched date, aggregate to mean / median / p90.
4. **Flag crowded days** where 2+ events land on the same date.

## Endpoints used

- `GET /v2/aggs/ticker/SPY/range/1/day/{from}/{to}` (one call for
  the history window)

## Doesn't handle (yet)

- **No prior / consensus values.** Add via FRED integration for a
  future release.
- **Pattern-derived dates approximate the real release dates.**
  BLS/BEA/ISM release dates vary +/- 1-2 days from the pattern; the
  tool flags these with `~`.
- **Regime-conditional reactions.** Historical stats are
  unconditional; CPI moves the tape harder in inflation regimes than
  in disinflation. A conditioned version is a clean extension.
- **FOMC schedule is hardcoded for 2026.** Regenerate at year-end.

