Skip to main content
ℹ️ Informational only. Transcript sources and audio APIs change over time. Always verify data independently. Nothing here is investment advice.
🏛️ TRANSCRIPTS & AUDIO · PART 2 OF 5

Fed Speech & FOMC Monitoring

Why the Fed matters

The Federal Reserve publishes everything for free. Every speech by every Fed governor, every FOMC meeting minutes document, every press conference transcript — all at federalreserve.gov. Most of it is never systematically read. OpenClaw monitors the Fed's RSS feed and processes every new publication.

Fed content calendar

Content Source Timing Key signal
FOMC Minutes federalreserve.gov 3 weeks after meeting Policy direction shift
Press conference transcript federalreserve.gov Same day as meeting Powell tone
Fed governor speeches federalreserve.gov Ongoing, ~3-5/week Dissent signals
Beige Book federalreserve.gov 2 weeks before each FOMC Regional economic tone
FOMC meeting transcripts federalreserve.gov 5-year lag Historical record

Hawkish vs dovish classifier

Hawkish language: "inflation," "price stability," "restrictive," "above target," "further increases," "not yet confident"

Dovish language: "labor market," "cooling," "progress," "appropriate to begin," "balance of risks," "gradual"

Neutral: procedural language, economic data citations without directional framing

HEARTBEAT configuration

name: fed_monitor
schedule: "0 */2 * * 1-5"
steps:
  - fetch_rss:
      url: "https://www.federalreserve.gov/feeds/speeches.xml"
      type: fed_speeches
  - fetch_rss:
      url: "https://www.federalreserve.gov/feeds/press_all.xml"
      type: fed_press
  - check_seen:
      dedup_key: item_url
      store: seen_fed.json
  - llm:
      prompt: |
        Analyze this Federal Reserve publication:

        1. HAWK/DOVE: Classify as hawkish, dovish, or neutral. Quote the key sentence.
        2. RATE SIGNAL: Any explicit or implicit signal about future rate moves?
        3. KEY LANGUAGE: List any new or changed phrasing vs recent communications.
        4. SPEAKER: Note who spoke and their known position on the policy spectrum.
        5. ONE-LINE SUMMARY: For quick-scan alerts.

        Content: {{ content }}
  - notify:
      channel: email
      subject: "🏛️ Fed Alert: {{ speaker }} — {{ one_line_summary }}"
      priority: "{{ 'high' if fomc_minutes else 'normal' }}"

Fed RSS fetch + parse — Python snippet

import feedparser
import httpx
from bs4 import BeautifulSoup

def fetch_fed_speeches(limit: int = 10) -> list:
    """Fetch latest Fed speeches from official RSS feed."""
    feed = feedparser.parse("https://www.federalreserve.gov/feeds/speeches.xml")
    speeches = []
    for entry in feed.entries[:limit]:
        speeches.append({
            "title": entry.title,
            "url": entry.link,
            "date": entry.get("published", ""),
            "summary": entry.get("summary", ""),
        })
    return speeches

def fetch_speech_text(url: str) -> str:
    """Fetch full text of a Fed speech page."""
    r = httpx.get(url, headers={"User-Agent": "FedMonitor/1.0 contact@youremail.com"},
                  timeout=10, follow_redirects=True)
    soup = BeautifulSoup(r.text, "html.parser")
    # Fed pages use div#article or div.col-xs-12.col-sm-8.col-md-8
    content = soup.find("div", {"id": "article"}) or soup.find("div", class_="col-xs-12")
    return content.get_text(separator=" ", strip=True) if content else ""

Hawkish/dovish scorer

HAWKISH_TERMS = ["inflation", "price stability", "restrictive", "above target",
                  "further increases", "not yet confident", "premature", "persistent"]
DOVISH_TERMS = ["cooling", "progress", "appropriate to begin", "labor market",
                 "balance of risks", "gradual", "easing", "below target", "sustainable"]

def score_fed_tone(text: str) -> dict:
    text_lower = text.lower()
    hawk_count = sum(text_lower.count(term) for term in HAWKISH_TERMS)
    dove_count = sum(text_lower.count(term) for term in DOVISH_TERMS)
    total = hawk_count + dove_count
    if total == 0:
        return {"tone": "neutral", "hawk_score": 0, "dove_score": 0}
    tone = "hawkish" if hawk_count > dove_count * 1.2 else "dovish" if dove_count > hawk_count * 1.2 else "neutral"
    return {"tone": tone, "hawk_score": hawk_count, "dove_score": dove_count,
            "hawk_pct": round(hawk_count / total * 100)}

Frequently asked questions

Q: How often does the Fed publish new content?
A: Fed governors give 3–5 speeches per week collectively. FOMC meetings are 8 times per year. The Beige Book drops 2 weeks before each meeting.
Q: Are FOMC meeting transcripts available?
A: Yes, but with a 5-year lag. The 2020 FOMC transcripts became available in 2025. Minutes (summary) come 3 weeks after each meeting.
Q: What's the difference between minutes and a transcript?
A: Minutes are an edited summary produced by staff. Full transcripts are verbatim records released 5 years later.