FedTalk Can a language model read the Fed before the market does? Tested on 33 press conferences, not a hunch.

Every FOMC press conference gets transcribed, matched against the official statement and same-day news by embedding search, then handed to GPT-4o-mini to call the next few minutes of SPY: up or down. Scored against what actually happened, not against its own guess.

Stack
Python · Whisper · Pinecone · GPT-4o-mini · sentence-transformers
Status
Research, 2021–2024 · GitHub ↗︎
  • 33FOMC conferences
  • 58.7%directional accuracy
  • 0.74weighted F1 score

FedTalk

Python · Whisper · PineconeView code
FedTalk: the market's reaction to the 2:00 PM ET statement, charted against transcription, retrieval and prediction

01 · Problem

Fed statements move markets in minutes.

Every FOMC statement nudges prices within minutes, but the reaction depends on how the language shifted, not just what was said, and that's hard to score by eye across dozens of conferences.

02 · Solution

Transcribe it, ground it, then ask the model to call it.

Whisper transcribes each conference; embedding search pulls the closest statement and news sentences from Pinecone; GPT-4o-mini reads the transcript against that context and calls SPY up or down over the next 1, 5 or 10 minutes.

03 · Engineering

Statement and news sentences sit in two separate Pinecone indexes, so a prediction can point to which one it actually leaned on.

04 · Key decisions

  • GPT-3.5 filters, GPT-4o-mini predicts
  • Three window sizes: 1, 5 and 10 minutes
  • Scored on realized price, not its own features
  • Two Pinecone indexes: statement text, news text
  • Stratified split across 2023–2024

Engineering note

The model that shipped isn't the one I reached for first. GPT-4o-mini won on cost without losing accuracy; a DeepSeek-R1 swap stayed commented out.

Every prediction call pins gpt-4o-mini-2024-07-18, with GPT-3.5-turbo doing the cheaper news-rating pass beneath it. A second version of the same function, wired for DeepSeek-R1, still sits in the file commented out, from the point where I tried it and kept the mini model instead.