Gedanken zum Vibe Trading: Wann sollte man KI einsetzen, wann nicht.
In letzter Zeit gibt es ein Konzept namens Vibe Trading – die Beschreibung von Handelsabsichten in natürlicher Sprache, die KI führt sie aus. Sage "konservative Strategie, bevorzugt low-volatile Vermögenswerte", und die KI konfiguriert automatisch. Hört sich schön an.
Bevor wir über Vibe Trading sprechen, möchte ich eine aktuelle Begebenheit erzählen, die besser als jede Theorie zeigt, "wo KI eingesetzt werden sollte".
Am 31. März legte Anthropics Claude Code in einem npm-Update versehentlich den Quellcode offen – etwa 512.000 Zeilen TypeScript (Anm.: Dies ist die Gesamtcodeanzahl nach dem Bündeln, einschließlich Abhängigkeiten und generiertem Code). Die Reverse-Engineering-Analysen der Community verbreiteten sich schnell, Entwickler auf der ganzen Welt durchforsteten den Code nach neuen Funktionen.
Die für mich überraschendste Entdeckung hatte jedoch nichts mit KI zu tun. Die Entdeckung selbst hatte auch nichts mit Trading zu tun, aber die dahinterstehende Ingenieursphilosophie sollte bei quantitativen Tradern Anklang finden.
In einem Modul, das von Analysten als userPromptKeywords markiert wurde, gab es einen regulären Ausdruck, der Schimpfwörter wie shit, wtf, fucking broken abgleicht – um schnell zu erkennen, ob ein Benutzer flucht.
Das weltweit führende Unternehmen für große Sprachmodelle verwendet reguläre Ausdrücke zur Emotionserkennung.
Nicht Claude für Sentimentanalyse einsetzen. Kein Klassifikator trainieren. Sondern ein im Mikrosekundenbereich laufendes String-Matching.
Warum?
1. Warum Anthropic nicht seine eigene KI nutzt
Das ist keine Faulheit. Es ist eine wohldurchdachte Ingenieursentscheidung.
Claude Code verarbeitet täglich Hunderttausende von Benutzerinteraktionen. Bei jeder Interaktion muss beurteilt werden, "ob der Benutzer Frustration ausdrückt", um die Antwortstrategie anzupassen. Wenn man jedes Mal das LLM für diese Beurteilung aufruft:
- Latenz: Eine LLM-Inferenz dauert mindestens Hunderte Millisekunden, Regex-Matching wenige Mikrosekunden
- Kosten: LLM-Aufrufe werden pro Token abgerechnet, Regex-Matching ist nahezu kostenlos
- Determinismus: Regex matcht entweder oder nicht, Ergebnis 100% eindeutig; die Ausgabe von LLMs ist nicht deterministisch, derselbe Input kann zu unterschiedlichen Beurteilungen führen
Daher die Wahl von Anthropic: Regex für schnelles Filtern (niedrige Schwelle, schnell, deterministisch), die Rechenleistung des LLMs den Entscheidungen vorbehalten, die wirklich semantisches Verständnis benötigen.
Das ist kein technisches Detail. Es ist eine Architekturphilosophie: Nicht jedes Problem verdient es, mit KI gelöst zu werden.
Quantitative Trader sollten mit diesem Satz besonders viel anfangen können.
2. Die gleiche Wahl im quantitativen Trading
In Ihrer Strategie gibt es zwei Arten von Entscheidungen:
Deterministische Entscheidungen – sollten "Regeln" verwenden
Wer auf FMZ Strategien geschrieben hat, weiß, dass die grundlegende Handelslogik oft nur aus wenigen deterministischen Codezeilen besteht:
javascript
// 均线交叉信号 —— FMZ JavaScript 示例
var records = exchange.GetRecords(PERIOD_D1)
var ma5 = TA.MA(records, 5)
var ma20 = TA.MA(records, 20)
var idx = records.length - 1
// 金叉开多
if (ma5[idx] > ma20[idx] && ma5[idx-1] <= ma20[idx-1]) {
exchange.SetDirection("buy")
exchange.Buy(records[idx].Close, 1)
Log("均线金叉,开多")
}
Bedingungen klar, Ergebnis deterministisch, kein "Verstehen" der Semantik nötig. Mit if-else geschrieben, 100% zuverlässig, Ausführung in Millisekunden.
Es ist ein ähnlicher Ansatz wie Anthropic mit Regex zur Emotionserkennung – Deterministische Probleme mit deterministischen Werkzeugen lösen. Natürlich ist Regex String-Matching, gleitende Durchschnitte sind mathematische Berechnungen, die Werkzeuge sind unterschiedlich, aber ihre Rolle in den jeweiligen Systemen ist ähnlich: beides sind deterministische Urteile ohne KI-Eingriff.
Stop-Loss: die Zuverlässigkeit von if-else ist 100%, die von KI ist "hohe Wahrscheinlichkeit". Ihr Konto kann diese kleine Wahrscheinlichkeit nicht verkraften.
Unschärfe-Entscheidungen – sollten KI verwenden
Aber manche Entscheidungen lassen sich nicht mit if-else schreiben:
- Nachrichten-Sentimentanalyse: Die Fed-Erklärung ist draußen, ist sie hawkish oder dovish? "Den aktuellen Leitzins unverändert lassen, aber der Ausschuss wird die Datenentwicklung genau beobachten" – ist das bullisch oder bärisch? Der gleitende Durchschnitt kann es dir nicht sagen, und ein regulärer Ausdruck kann dieses Urteil auch nicht fällen.
- Anomalieerkennung: Die Social-Media-Diskussion über einen bestimmten Altcoin ist innerhalb von 3 Stunden um 800% gestiegen, aber der Preis hat sich noch nicht bewegt. Ist das "intelligentes Geld, das Positionen aufbaut" oder "jemand macht vor einer Rallye Stimmung"? Es erfordert mehrdimensionale Informationen für eine vage Beurteilung.
- Strategiegenerierung: Du hast ein Bauchgefühl – "Nach dieser Formation gibt es oft einen Anstieg". Aber du kannst die genauen Bedingungen nicht beschreiben. Du kannst dieses Gefühl dem LLM beschreiben und es in einen rücktestbaren quantitativen Faktor umwandeln lassen.
Gemeinsame Merkmale dieser Szenarien: Eingabe ist unstrukturiert, Beurteilungskriterien sind vage, erfordern "Verstehen" und nicht nur "Abgleichen".
3. Ein nachahmenswerter Schichtenansatz
Zurück zur Architektur von Claude Code. Die Community-Analyse offenbarte eine klare Schichtung:
| Ebene | Mechanismus in Claude Code | Entsprechung im quantitativen Trading |
|---|---|---|
| Schnelle Filtersebene | Reguläre Ausdrücke, Keyword-Matching | Gleitende Durchschnitte, Schwellwert-Stop-Loss, Positionslimits |
| Engineering-Infrastrukturebene | Prozessmanagement, Nachrichtenübermittlung, Zugriffskontrolle | Börsen-API, Orderverwaltung, Risikocontrolling-Engine |
| Semantische Entscheidungsebene | LLM-Prompt | Nachrichten-Sentimentanalyse, Erkennung anomaler Muster, Strategieerkundung |
Natürlich sind Claude Code und quantitatives Trading zwei völlig unterschiedliche Bereiche, die Entsprechungen hier sind keine exakte Abbildung. Aber die Resonanz in der Designphilosophie ist echt – in jeder Schicht das geeignetste Werkzeug wählen, nicht mit einem Hammer auf alle Nägel schlagen.
Auch die Open-Source-Community praktiziert einen ähnlichen Ansatz. TradingAgents ist ein aktuell beachtenswertes Multi-Agent-Framework für quantitatives Trading (basiert auf LangGraph, mit zugehörigem wissenschaftlichem Paper). Es simuliert die Teamstruktur eines realen Trading-Unternehmens: Technische Analysten kümmern sich um Kerzencharts und Indikatorberechnungen, Sentimentanalysten interpretieren Nachrichten und Stimmungen, verschiedene Trader-Stile bündeln die Meinungen für die finale Entscheidung. Nicht eine allmächtige KI, die alles erledigt, sondern verschiedene Rollen, die ihre Aufgaben erfüllen.
Es ist erwähnenswert, dass TradingAgents ein Forschungsframework ist, das die Frage "Wie trifft KI Handelsentscheidungen?" löst. Aber im Live-Handel benötigst du die andere Hälfte: Börsenanbindung, Orderverwaltung, Risikokontrollausführung, Log-Audit – diese Engineering-Infrastruktur wird von Quant-Plattformen wie FMZ bereits für dich erledigt.
4. Wie Vibe Trading umgesetzt wird: Ein Beispiel für eine Schichtenarchitektur
Zurück zum Vibe Trading. Die Richtung ist richtig, aber die Voraussetzung ist, dass die Schichten klar sind.
Angenommen, heute gibt es einen Golden Cross bei BTC, aber die Nachrichten sind voller regulatorischer Negativmeldungen. Was tust du? Rein nach gleitendem Durchschnitt müsstest du long gehen; rein nach Nachrichten wagst du dich nicht zu bewegen. Dies ist ein typisches Szenario, das eine Schichtung erfordert.
Auf FMZ könnte eine vereinfachte Schichtenarchitektur wie folgt implementiert werden (Anm.: Nachfolgend ein vereinfachtes Beispiel, für Live-Handel bitte selbst Vertragseinstellungen und Risikokontrolle ergänzen):
python
# 伪代码示意:分层决策
def vibe_trade(signal_dict):
# 快速筛选层:规则引擎
# 均线金叉信号
if signal_dict.get('ma_cross') == 'golden':
# 第二层:语义分析
sentiment = analyze_news_sentiment(signal_dict['news'])
if sentiment < -0.5:
# 强烈利空,不执行
return "hold"
elif sentiment < 0:
# 轻微利空,减半仓位执行
return "half_trade"
else:
# 非利空,正常
return "full_trade"
else:
return "hold"
In diesem Beispiel verwendet die schnelle Filtersebene Regeln zur Beurteilung des Golden Cross, die semantische Entscheidungsebene nutzt KI zur Analyse der Nachrichtenstimmung.
Nur wenn wir "Signale der gleitenden Durchschnitte + keine extreme Nachrichtenstimmung" beurteilen, wird der Handel ausgeführt. Das ist Schichtung – Regeln als Basis, KI als Unterstützung. Dadurch werden sowohl Fehlurteile der KI, die zu Verlusten führen, als auch das Verpassen von Chancen durch reine Regeln vermieden.
Natürlich ist diese Struktur im Live-Handel viel komplexer: Die Risikokontrollschicht (Gesamtpositionslimit, Einzel-Stop-Loss) muss über allen Entscheidungen liegen; die Orderausführungsschicht muss Stornierungen, Wiederholungen, Teilausführungen behandeln. Aber das alles benötigt keine KI.
Zusammenfassung
Zurück zur Eingangsfrage: Wie sollte Vibe Trading eingesetzt werden?
Von Anthropics Verwendung von Regex zur Emotionserkennung über die Multi-Agent-Arbeitsteilung von TradingAgents bis zur Schichtenarchitektur auf FMZ – das Kernprinzip ist konsistent:
Betrachte KI nicht als Allheilmittel. Setze sie dort ein, wo sie hingehört.
Konkret in deiner Strategie:
- Stop-Loss, Limits, Positionsmanagement → schreibe if-else, in die Strategie, in das Risikocontrolling. Das ist die Firewall deines Kontos.
- Nachrichtenstimmung, Mustererkennung, Strategieexploration → kannst du KI einbinden. Das ist deine Chancenerkennung.
- Und die Verbindung dieser beiden Welten – nutze FMZ zur Verwaltung der Handelsausführung, des Backtestings und des Live-Wechsels. Das ist deine Engineering-Infrastruktur.
—— Wenn du auf FMZ eine Strategie schreibst und bemerkst, dass du ein LLM verwendest, um zu prüfen, ob sich gleitende Durchschnitte kreuzen, halt inne. Du brauchst nur ein if.
Der Ingenieur bei Anthropic, der diesen regulären Ausdruck entworfen hat, hat wahrscheinlich nicht gedacht, dass sein Vorgehen eine quantitative Trading-Architektur inspirieren würde. Aber gute Ingenieursprinzipien sind so – bereichsübergreifende Resonanz ist oft am stärksten.
javascript
/*
Strategieparameter (im Bereich "Parameter" der FMZ-Strategie-Seite hinzufügen):
OPENROUTER_API_KEY : String-Typ, gib deinen OpenRouter API Key ein
AI_MODEL : String-Typ, Standardwert "google/gemini-2.5-flash", kann durch andere Modelle ersetzt werden
*/
// Semantische Entscheidungsebene: Marktstimmung über OpenRouter per KI abrufen
function getAISentiment() {
var prompt = "Analysiere aktuelle Kryptomarkt-Nachrichten, gib eine Stimmungsbewertung (-1 bis 1, -1 extreme Panik, 1 extreme Gier), gib nur eine Zahl zurück"
var response = HttpQuery("https://openrouter.ai/api/v1/chat/completions", {
method: "POST",
body: JSON.stringify({
model: AI_MODEL,
messages: [{role: "user", content: prompt}],
temperature: 0
}),
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + OPENROUTER_API_KEY
},
timeout: 15000
})
var score = parseFloat(JSON.parse(response).choices[0].message.content)
// Bei ungewöhnlicher KI-Ausgabe auf neutralen Wert zurückfallen – Systemzuverlässigkeit hängt nicht von jeder korrekten KI-Ausgabe ab
if (isNaN(score) || score < -1 || score > 1) {
Log("KI-Rückgabeformat ungewöhnlich, verwende Standardwert 0")
score = 0
}
Log("KI-Stimmungsbewertung:", score)
return score
}
function main() {
var lastSignalTime = 0 // Zeit des letzten Signal-Kerzenstrichs, um wiederholte Auslösung im selben Kerzenstrich zu vermeiden
while (true) {
var records = exchange.GetRecords(PERIOD_D1)
if (!records || records.length < 20) { Sleep(1000); continue }
var ma5 = TA.MA(records, 5)
var ma20 = TA.MA(records, 20)
var idx = records.length - 1
var curTime = records[idx].Time
var isBullCross = ma5[idx] > ma20[idx] && ma5[idx-1] <= ma20[idx-1]
var isBearCross = ma5[idx] < ma20[idx] && ma5[idx-1] >= ma20[idx-1]
// Positionsstatus prüfen
var pos = exchange.GetPosition()
var hasPosition = pos && pos.length > 0
// Erste Ebene: Deterministisches Signal als "Schwelle", Golden Cross + keine Position + noch nicht in diesem Kerzenstrich bearbeitet, erst dann KI fragen
if (isBullCross && !hasPosition && curTime !== lastSignalTime) {
lastSignalTime = curTime
var sentiment = getAISentiment()
// Zweite Ebene: KI-Stimmung als "Referenz", beeinflusst Positionsgröße, löst aber nicht unabhängig Trades aus
if (sentiment > 0.2) {
exchange.SetDirection("buy")
exchange.Buy(records[idx].Close, 1)
Log("Golden Cross + KI bullish, volle Position eröffnet")
} else if (sentiment > -0.3) {
exchange.SetDirection("buy")
exchange.Buy(records[idx].Close, 0.5)
Log("Golden Cross + KI neutral, halbe Position eröffnet")
} else {
Log("Golden Cross aber KI bärisch, Signal übersprungen")
}
}
// Bear Cross schließen: deterministische Regel, ohne KI
if (isBearCross && hasPosition) {
exchange.SetDirection("closebuy")
exchange.Sell(records[idx].Close, pos[0].Amount)
Log("Gleitender Durchschnitt Bear Cross, Position geschlossen")
}
// Dritte Ebene: Stop-Loss ist "ehernes Gesetz", ohne KI
if (hasPosition) {
var curPrice = records[idx].Close
var entryPrice = pos[0].Price
if (curPrice < entryPrice * 0.97) { // 3% unter Eröffnungskurs
exchange.SetDirection("closebuy")
exchange.Sell(curPrice, pos[0].Amount)
Log("Stop-Loss ausgelöst, bedingungslos geschlossen, Verlust", ((curPrice/entryPrice - 1)*100).toFixed(2), "%")
}
}
Sleep(60 * 1000)
}
}
Die Kernlogik dieses Codes lohnt sich, näher erläutert zu werden:
1. Golden Cross des gleitenden Durchschnitts ist die "Schwelle". Nur wenn das deterministische Signal zuerst auslöst, wird die KI aufgerufen. Nicht jeder Kerzenstrich fragt das große Modell – das spart Kosten (große Modell-APIs werden pro Token abgerechnet) und vermeidet Rauschen. Dies entspricht dem Ansatz von Anthropic: Zuerst wird mit regulären Ausdrücken gefiltert; wenn eine Übereinstimmung gefunden wird, wird die aufwändigere Verarbeitung gestartet.
2. KI-Stimmung ist die "Referenz". Sie beeinflusst die Positionsgröße und ob das Signal übersprungen wird, löst aber nicht unabhängig Trades aus. Beachte die Ausnahmebehandlung des KI-Rückgabewerts im Code – wenn das große Modell nicht interpretierbaren Inhalt zurückgibt, wird direkt auf den neutralen Wert 0 zurückgefallen. Die Zuverlässigkeit des Systems sollte nicht von jeder korrekten Ausgabe der KI abhängen.
3. Stop-Loss ist das "eherne Gesetz". Bei 3% unter dem Eröffnungskurs wird die Position bedingungslos geschlossen, ohne die Meinung der KI einzuholen. Die KI mag sagen "langfristig bullisch", aber dein Konto wartet nicht auf die langfristige Perspektive. Hier wird ein harter Stop-Loss mit prozentualem Kurs verwendet, der keine schwammigen Urteile durchlässt.
Das ist die richtige Herangehensweise für Vibe Trading: Mit natürlicher Sprache die KI die Marktatmosphäre "spüren" lassen, mit deterministischem Code die Handelsaktionen "ausführen". Die Grenze zwischen beiden darf nicht verschwimmen.
Praktischer Tipp: Im Backtest-System von FMZ zuerst eine reine Gleitender-Durchschnitts-Strategie als Baseline laufen lassen, dann die KI-Stimmungsschicht hinzufügen und Gewinn sowie Drawdown vergleichen. Wenn die KI das Ergebnis verschlechtert – ist die Schichtung falsch; möglicherweise greift die KI dort ein, wo sie nicht sollte. Jedes KI-Ergebnis mit Log() aufzeichnen, um später jede Entscheidung nachvollziehen zu können.
5. Ein Satz zum Mitnehmen
Die fortschrittlichsten KI-Unternehmen verwenden reguläre Ausdrücke, um Stimmungen zu erkennen – nicht, weil sie keine bessere KI bauen könnten.
Sondern weil sie wissen: Das richtige Werkzeug auszuwählen ist wichtiger als das mächtigste Werkzeug.
Gleitende-Durchschnitts-Strategien sind nicht sexy, reguläre Ausdrücke sind nicht hoch entwickelt. Aber in ihrem eigenen Bereich sind sie zuverlässiger als jede KI.
Umgekehrt, wenn du aus einem 5000-Wörter-Makrobericht die Einschätzung extrahieren musst, "ob dieser Bericht für BTC bullisch oder bärisch ist" – da helfen weder gleitende Durchschnitte noch reguläre Ausdrücke. Erst hier sollte die KI zum Einsatz kommen.
Es geht nicht um die Frage "KI nutzen oder nicht", sondern "auf welcher Ebene nutzen".
Die unscheinbare reguläre-Ausdrücke-Datei im Claude-Code-Quelltext beantwortet eine oft übersehene Frage. Und FMZ bietet dir eine fertige geschichtete Infrastruktur – Börsenschnittstellen, Indikatorberechnung, Live-Management, Log-Audit sind bereits erledigt. Du musst nur klarstellen: Welche Entscheidungen übergibst du an TA.MA(), welche an die KI?
Quellen:
- Alex Kim - The Claude Code Source Leak — Analyse der Frusterkennung mittels regulärer Ausdrücke
- FMZ - Building an AI-Powered Automated Trading System — KI-Gehirn + FMZ-Hände-Architektur
- TradingAgents - Multi-Agents LLM Financial Trading Framework — Open-Source-Framework für Multi-Agenten-Quantitative-Trading
- TradingAgents 论文 — Akademische Forschung zu Multi-Agenten-Finanzhandelsrahmen
- VentureBeat - Claude Code Source Code Leak
- 1


