Earnings-Calls mit LLMs parsen: vom Transkript zur Trade-Idee.
Earnings-Calls sind die wertvollste regelmäßige Informationsquelle, die ein börsennotiertes Unternehmen freiwillig liefert. Vorher waren sie unstrukturiert und nur mit echtem Lese-Aufwand auswertbar. Mit aktuellen LLMs lässt sich der ganze Prozess so weit automatisieren, dass ein einzelner Mensch hunderte Calls pro Quartal abdecken kann — ohne wirklich oberflächlicher zu werden.
Warum Earnings-Transkripte so wertvoll sind.
In einem typischen Quartals-Earnings-Call stecken Informationen, die kein anderes Dokument so kompakt liefert:
- Forward Guidance: Umsatz, Margen, Capex für das nächste Quartal und das Geschäftsjahr
- Management-Ton: wie sicher oder unsicher das Management klingt, oft wichtiger als die nackten Zahlen
- Neue Risiken: was zum ersten Mal als Risiko genannt wird, ist häufig die wertvollste Information
- Geographische und segmentbasierte Akzente: welche Märkte das Management hervorhebt, welche es leise begräbt
- Q&A-Druck: welche Analysten welche Fragen mehrfach stellen — ein Signal für unausgesprochene Sorgen
Wer 30 Calls pro Quartal manuell liest, weiß, wie zeitaufwendig das ist. Mit einer sauberen LLM-Pipeline schafft eine einzelne Person 300 Calls in derselben Zeit — und zwar mit strukturierten, vergleichbaren Outputs, die in eine Datenbank wandern können.
Die Standard-Pipeline.
Vier Schritte, die bei uns seit Jahren gleich aufgebaut sind:
- Beschaffung: Transkripte kommen entweder aus SEC-Filings (8-K mit Anhang), von Anbietern wie SeekingAlpha und Motley Fool, oder direkt vom Investor-Relations-PDF. Letzteres ist meist die sauberste Quelle.
- Aufbereitung: PDF → Text, Trennung in „Prepared Remarks" und „Q&A", Identifikation der Sprecher (Management vs. Analyst), Markierung der Firmen-Affiliation der Analysten. Hier rettet ein LLM dramatisch viel Arbeit gegenüber Regex.
- Strukturierte Extraktion: Zweite LLM-Stufe mit einem festen JSON-Schema. Hier wird der eigentliche Wert geschaffen.
- Speicherung: alles landet in einer SQLite- oder Postgres-Tabelle pro Ticker und Quartal, plus Roh-Output für spätere Audits.
Ich nutze Claude für Schritt 3, weil die Konsistenz strukturierter Outputs hier am besten ist. Für die einfache Aufbereitung in Schritt 2 reicht ein Haiku-Modell.
Konkretes Prompt-Engineering für strukturierte Extraktion.
Der wichtigste Trick: nicht alles in einem Prompt erzwingen. Stattdessen pro Themenblock einen separaten, eng definierten Aufruf. Hier ein Auszug aus dem Guidance-Prompt, den ich produktiv nutze:
SYSTEM_PROMPT = """Du extrahierst aus Earnings-Call-Transkripten strukturierte
Guidance-Daten. Antworte ausschließlich mit gültigem JSON nach folgendem Schema:
{
"fiscal_period": "Q3 2029" | "FY 2029" | null,
"revenue_guidance": {
"low": number | null,
"high": number | null,
"unit": "USD_M" | "USD_B" | null,
"comparison_to_prior": "raised" | "maintained" | "lowered" | "new" | null
},
"margin_guidance": {...},
"capex_guidance": {...},
"confidence_phrases": [string] // wörtliche Zitate, die Sicherheit/Unsicherheit signalisieren
}
Wenn etwas nicht eindeutig im Transkript steht: setze null. Niemals raten."""
USER_PROMPT = f"""Transkript-Auszug (Prepared Remarks, CFO-Abschnitt):
{section_text}
Liefere das JSON."""
Wichtig sind drei Disziplinen: erstens das harte „setze null"-Gebot — sonst halluziniert das Modell Zahlen aus dem Kontext. Zweitens wörtliche Zitate verlangen — die lassen sich später gegen das Original prüfen. Drittens jeden Roh-Output speichern, damit man bei Modell-Updates dieselben Calls wieder durchlaufen lassen kann und Drift quantifizieren kann.
Sentiment-Scoring pro Section.
Sentiment auf einem Earnings-Call lohnt sich nur, wenn man es pro Abschnitt misst, nicht global. „Prepared Remarks" sind hochgradig vorbereitet und werden vom Management optimiert. Q&A ist dort, wo unter Druck improvisiert wird — und wo der echte Ton zum Vorschein kommt.
Bei mir laufen drei Sentiment-Scores pro Call:
- PR-Sentiment (Prepared Remarks): stabil hoch, Veränderungen gegenüber dem Vorquartal sind das Signal
- Q&A-Management-Sentiment: nur die Antworten des Managements, gewichtet nach Antwort-Länge
- Hedge-Frequenz: wie oft tauchen Wörter wie „expect", „believe", „assuming", „pending" pro 1 000 Wörter auf
Die Hedge-Frequenz ist überraschend nützlich — sie ist objektiv zählbar und korreliert mittel-fristig negativ mit Forward-Returns. Wenn ein Management in Q3 plötzlich doppelt so häufig hedget wie in Q2, ist das messbar relevant.
Tone-Change-Detection gegenüber dem Vorquartal.
Der vielleicht stärkste systematische Use-Case: nicht das absolute Sentiment, sondern die Veränderung. Pipeline-Schritt:
- Embedde Prepared-Remarks von Q (aktuell) und Q-1 (vorheriges Quartal) mit demselben Embedding-Modell
- Berechne kosinusähnliche Ähnlichkeit zwischen beiden, plus Distanz im 768-dimensionalen Raum
- Lasse einen LLM-Aufruf zusätzlich strukturieren: „Welche Themen sind in Q neu, welche aus Q-1 verschwunden, welche dramatisch erweitert"
- Speichere beide Outputs — die Distanz als Zahl und die thematische Diff als Liste
Calls mit ungewöhnlich hoher thematischer Distanz zum Vorquartal haben in meinen Backtests in den Folgewochen signifikant höhere realisierte Volatilität — unabhängig von der Richtung des Moves. Das macht es zu einem brauchbaren Volatilitäts-Forecast, nicht zu einem Direktions-Signal. Den Fehler haben viele Earnings-NLP-Setups: sie versuchen, Richtung aus Text vorherzusagen, was empirisch deutlich schwerer ist als Volatilität.
Kosten-Realität.
Ein typischer Call hat etwa 8 000–12 000 Wörter, also rund 15 000–20 000 Tokens. Wenn ich mit Claude Sonnet vier Extraktionen pro Call mache (Guidance, Risiken, Sentiment, Tone-Diff), bin ich bei etwa 80 000 Input-Tokens und 5 000 Output-Tokens. Das kostet bei aktuellen Tarifen rund 0,30 € pro Call. Bei 200 Calls pro Quartal ergibt das 60 € Quartalsausgaben — vernachlässigbar.
Die teurere Komponente ist der Datenkauf. Hochwertige Transkripte über einen API-Anbieter kosten zwischen 200 € und 1 500 € im Monat, abhängig vom Coverage-Universum. Wer mit SEC-Filings und IR-PDFs auskommt, spart das.
Backtest-Idee: Tone-Drift als Signal.
Eine Strategie, die ich seit mehreren Quartalen produktiv laufen lasse, in der Kurzfassung: Long-Short-Portfolio auf S&P-500-Aktien, das jede Woche rebalanced wird, basierend auf dem letzten verfügbaren Tone-Drift-Score je Aktie.
import pandas as pd
calls = pd.read_parquet("earnings_extractions.parquet")
prices = pd.read_parquet("sp500_prices.parquet")
# Drift = Distanz Q vs Q-1, normalisiert nach Sektor
calls["drift_z"] = calls.groupby(["sector","quarter"])["pr_distance"]\
.transform(lambda x: (x - x.mean()) / x.std())
# Long bottom-Quintil (wenig Drift = Konsistenz), Short top-Quintil (hoher Drift)
weekly = pd.merge_asof(prices.sort_index(), calls.sort_values("call_date"),
left_on="date", right_on="call_date", by="ticker")
weekly["signal"] = pd.qcut(weekly["drift_z"], 5, labels=False)
longs = weekly[weekly["signal"] == 0]
shorts = weekly[weekly["signal"] == 4]
Ehrliche Backtest-Ergebnisse über 6 Jahre, mit realistischen Kosten und sektor-neutral: Sharpe um 0,8, jährliche Rendite vor Fees rund 9 %, maximaler Drawdown 14 %. Das ist kein Hochfrequenz-Edge, aber es ist eine ordentlich diversifizierte Faktorstrategie, die niedrig korreliert zu klassischen Faktoren wie Momentum oder Value läuft. Genau das macht sie portfolio-tauglich.
Wo der Aufwand nicht lohnt.
Drei Anwendungen, von denen ich nach mehreren Versuchen abrate:
- Direktions-Forecast einzelner Calls: zu viel Rauschen, Backtests zerfallen out-of-sample fast immer
- Live-Trading auf Call-Audio: die paar Sekunden Latenz holen Spezialisten mit besseren Pipelines auf, der Edge ist weg, bevor man liest
- Small-Cap-Coverage ohne sauberen Transkript-Provider: hier sind die Texte oft so schlecht, dass auch das beste LLM müllige Outputs produziert
Wo es wirklich Hebel hat: mittelgroße bis große Unternehmen, vier Quartale Historie pro Ticker, kombinierte Signale aus Sentiment, Guidance-Diff und Tone-Drift. Genau dort liegt nach meiner Erfahrung der nutzbare Edge.
Sie wollen eine Earnings-NLP-Pipeline für Ihren Anlageprozess aufbauen? Erstgespräch buchen — ich zeige Ihnen das Setup, das wirklich Mehrwert bringt.