RAG-Systeme für Trader: eigene Wissensbasis mit LLMs.
Über die Jahre sammelt sich an: hunderte Strategie-Notizen, archivierte Earnings-Calls, Research-PDFs, eigene Backtest-Reports, Compliance-Dokumente. Niemand liest das je wieder vollständig durch. Ein RAG-System macht aus diesem Friedhof eine durchsuchbare Wissensbasis — wenn man es richtig aufsetzt.
Was RAG eigentlich ist — und was nicht.
Retrieval-Augmented Generation kombiniert zwei Komponenten: ein Retrieval-System (meist eine Vector-DB mit Embeddings), das die relevantesten Dokument-Chunks zu einer Frage findet, und ein LLM, das auf Basis dieser Chunks eine Antwort formuliert.
RAG ist nicht Fine-Tuning. Sie trainieren das Modell nicht um. Sie geben ihm zur Laufzeit den passenden Kontext. Das hat zwei Konsequenzen, die viele unterschätzen: erstens, das Modell weiß nur, was es im retrievten Kontext sieht — und das Retrieval ist der Engpass. Zweitens, neue Dokumente müssen nur neu eingelesen werden, nicht ein neues Training auslösen.
Use-Cases, die im Trading wirklich tragen.
- Strategie-Dokumentation durchsuchen: „Welche Strategien habe ich je gegen VIX-Spikes gebaut? Was waren die Ergebnisse?" Das ist die häufigste produktive Anwendung in Mandaten, die ich begleite — Wissen, das nicht verloren geht, wenn der Lead-Quant das Unternehmen verlässt.
- Earnings-Call-Archive: 5–10 Jahre Earnings-Calls für 50 Beobachtungs-Werte sind 10.000+ Dokumente. „Wann hat Adobe das letzte Mal Margen-Druck angekündigt — und was ist danach passiert?" — diese Frage in 30 Sekunden statt drei Stunden.
- Research-Notizen und Trade-Journals: eigene Notizen zu jedem Trade, jedem Market-Regime. RAG macht den eigenen Erfahrungsschatz wieder zugänglich.
- Regulatorische Dokumente: MiFID-II-Texte, ESMA-Q&As, BaFin-Rundschreiben. Compliance-relevante Fragen mit Quellen-Verweis statt freier LLM-Antwort.
- Backtest-Report-Archiv: „Welche Strategien hatte ich mit Sharpe > 1.5 und max DD < 10 % im Bond-Sektor?" — wenn Reports strukturiert abgelegt und embedded sind, beantwortbar.
Stack: drei Komponenten, mehr nicht.
Ein RAG-System besteht im Kern aus drei Teilen:
- Vector-DB: pgvector für Single-User-Setups bis ~5 Mio. Chunks. Weaviate oder Qdrant für Mandanten mit komplexen Such-Anforderungen. Self-hosted, wenn Daten sensibel sind.
- Embedding-Modell: text-embedding-3-large oder voyage-finance-2 sind 2030 der Standard. Für Datenraum-Sensitivität: BGE-large lokal auf einer GPU.
- LLM: Claude Sonnet 4.x oder ein lokales Llama 4 70B für sensible Setups. Mit langen Kontexten kann das LLM 20–50 retrievte Chunks gleichzeitig verarbeiten.
Konkretes Setup — LangChain oder eigener Code.
Die ehrliche Antwort, nach Jahren in Mandaten: in 80 % der Fälle ist eigener Code besser. LangChain ist hilfreich für schnelle Prototypen, aber in Produktion sind die Abstraktionen oft im Weg. Für ein Trader-RAG mit ~100k Dokumenten reicht ein 300-Zeilen-Python-Modul. Ein minimales Beispiel:
import anthropic, openai, psycopg
from pgvector.psycopg import register_vector
oa = openai.OpenAI()
an = anthropic.Anthropic()
conn = psycopg.connect("postgresql://...")
register_vector(conn)
def embed(text: str) -> list[float]:
r = oa.embeddings.create(
model="text-embedding-3-large",
input=text, dimensions=1024)
return r.data[0].embedding
def ingest(doc_id: str, source: str, chunks: list[str]):
with conn.cursor() as cur:
for i, c in enumerate(chunks):
cur.execute(
"INSERT INTO rag_chunks "
"(doc_id, chunk_idx, source, text, embed) "
"VALUES (%s, %s, %s, %s, %s)",
(doc_id, i, source, c, embed(c)))
conn.commit()
def ask(question: str, k: int = 12) -> str:
qv = embed(question)
with conn.cursor() as cur:
cur.execute("""
SELECT source, text
FROM rag_chunks
ORDER BY embed <=> %s
LIMIT %s""", (qv, k))
hits = cur.fetchall()
context = "\n\n".join(
f"[{src}]\n{txt}" for src, txt in hits)
msg = an.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system=("Beantworte die Frage AUSSCHLIESSLICH "
"auf Basis des Kontextes. "
"Wenn der Kontext nicht reicht: sage das."),
messages=[{"role":"user",
"content":f"Kontext:\n{context}\n\n"
f"Frage: {question}"}])
return msg.content[0].text
Was hier fehlt und in Produktion dazukommen muss: Chunking-Strategie (Token-basiert mit Overlap, oder semantisch über Section-Header), Hybrid-Search (BM25 + Vector), Re-Ranking mit einem Cross-Encoder, Quellen-Zitate im Output, Logging, Token-Budgetierung.
Self-hosted vs. Cloud — der Datenschutz-Punkt.
Trader-Wissensbasen enthalten oft Material, das nicht in fremde Hände gehört: eigene Strategie-Logik, Positions-Größen, Mandanten-Informationen. Drei Konfigurationen, die ich in der Praxis sehe:
- Vollständig Cloud (OpenAI-Embeddings + Anthropic-LLM): schnellster Start, beste Modellqualität. Vertretbar nur für nicht-sensible Daten oder wenn ein Enterprise-Vertrag mit „No-Training"-Klausel besteht.
- Embedding lokal, LLM in Cloud: BGE oder E5 lokal auf einer A100 oder M3-Max, LLM-Calls gehen anonymisiert an Claude/GPT. Goldener Mittelweg für viele Boutiquen.
- Vollständig lokal: Llama 4 70B oder Mistral Large 3 auf eigener Hardware. Setup-Aufwand hoch, laufende Kosten Hardware-getrieben statt Token-getrieben. Für sensible institutionelle Setups die einzige seriöse Option.
Praxis-Beispiel: eigene Quant-Research-Bibliothek.
Ein Setup, das ich letztes Jahr für einen Mandanten gebaut habe: ca. 2.400 Research-PDFs (eigene Studien, externe Broker-Notes, akademische Papers) plus ein Markdown-Archiv mit ~600 Trade-Journal-Einträgen.
Pipeline: nächtlicher Cron-Job liest neue Dokumente aus einem S3-Bucket, extrahiert Text via Unstructured.io, chunked auf 800 Tokens mit 120 Overlap, embedded mit text-embedding-3-large auf 1024 Dimensionen, schreibt in pgvector. Eine kleine Web-UI (FastHTML, ein einziger Endpoint) erlaubt Fragen mit Quellen-Verweis.
Ergebnis nach drei Monaten: das Team nutzt die Suche täglich. Häufigste Fragen sind nicht „was ist Mean-Reversion?" — das weiß das Team — sondern „in welchem unserer eigenen Reports haben wir das schon behandelt, und mit welchem Resultat?" Genau dort ist RAG unschlagbar.
Kosten — realistisch durchgerechnet.
Ein typisches Setup mit ~100k Chunks und ~50 Anfragen pro Tag:
- Initiale Embeddings: 100k Chunks × ~800 Tokens × $0.13 / 1M Tokens ≈ $10 einmalig.
- Laufende Embeddings für neue Dokumente: ~$5 / Monat.
- LLM-Calls: 50/Tag × ~10k Input + 1k Output × Claude Sonnet Preise ≈ $25–40 / Monat.
- pgvector auf einer kleinen managed Postgres: $30 / Monat.
- Gesamt: 60–80 € / Monat für eine vollständige Trader-Wissensbasis. Self-hosted: höhere Initial-Investition, danach quasi nur Strom.
Was ich gelernt habe — und was nicht funktioniert.
RAG-Systeme klingen einfach und sind in der Demo immer beeindruckend. In Produktion ist das Retrieval der Punkt, an dem die meisten Setups scheitern. Drei Lektionen:
- Chunking matters. Naive 500-Token-Chunks zerschneiden Tabellen und Argumentationen. Investieren Sie in semantisches Chunking, oder verlieren Sie Antwort-Qualität.
- Hybrid-Search ist Pflicht. Reine Vector-Suche verfehlt Eigennamen und Ticker. BM25 dazu — sonst findet das System „NVDA" nicht, wenn das Embedding den Ticker nicht stark genug repräsentiert.
- Halluzinationen bleiben. Auch mit perfektem Retrieval erfindet das LLM gelegentlich Quellen. Erzwingen Sie Quellen-Zitate, prüfen Sie sie automatisch gegen die DB, verwerfen Sie Outputs ohne valide Belege.
Sie wollen Ihre eigene Trader-Wissensbasis RAG-durchsuchbar machen? Erstgespräch buchen — wir prüfen Datenlage, Datenschutz-Anforderungen und Stack-Wahl.