← Zurück0606
AI/ML2023 – 2026·Fallstudie

NQ Trading Agent

NQ Trading Agent ist eine quantitative Forschung am NASDAQ-100-Future: eine Rust-Pipeline für saubere L2-Daten, eine TCN mit Quantile-Head und acht unabhängige Probes mit chronologischen Splits und klaren Ergebnissen.

Rolle

Solo

Status

Forschung

Jahr

2023 – 2026

Stack

PY

Python + PyTorch

TCN, Quantile-Head, Probes

RS

Rust + Polars

Validierung, Pipeline, Cache

L2

L2 Order-Book

10 Level, 2-Sek-Bars, 205 Tage

OOS

Walk-Forward

Chrono-Splits, Holdout-Lock

Kern des Projekts

Vorhersage

Die Anfangsfrage klang einfach: kann ein ML-Modell die NQ-Richtung im 10-Sekunden-bis-10-Minuten-Fenster nach Kosten profitabel vorhersagen? Acht Probes später ist die Antwort gut dokumentiert. Nicht die Richtung. Aber Bewegungsgröße — Spearman ~0,48, top/bottom-Dezil-Spread ~7× — und genau diese Erkenntnis trägt die nächste Iteration.

8

unabhängige Probes, chrono + kostenrealistisch

519

NQ-ES Sessions ausgewertet

7x

Top/Bottom-Dezil-Spread bei Bewegungsgröße

~50%

OOS-Richtungs-Accuracy — über alle Probes

Problem

Was immer wieder schiefging

Problem

Ein Modell auf Sekunden-Daten den nächsten Schritt im NQ-Future vorhersagen zu lassen klingt zuerst wie ein klassisches Quant-Problem. Praktisch ist es vor allem ein Problem aus Rauschen, Kosten und Selbsttäuschung. Kleine Fehler im Resampling erzeugen Look-ahead, K-Fold wirkt auf Zeitreihen sauberer als es ist, und post-hoc Filter machen aus fast jedem Backtest kurzzeitig einen Gewinner. Die eigentliche Aufgabe war deshalb nicht nur ein besseres Modell, sondern eine Pipeline, die solche Abkürzungen sichtbar macht und erst dann misst, ob überhaupt noch Signal übrig bleibt.

Ansatz

Fünf Iterationen, jede strenger als die vorige. Alpha war ein erster Random Forest auf rohen OHLC-Daten. Beta brachte Walk-Forward. Gamma ersetzte Pandas durch eine Rust-Pipeline (CSVValidator), nachdem ein leiser Resampler-Off-by-One Wochen gekostet hatte. Delta wechselte auf eine TCN mit Quantile-Head, damit das Modell Unsicherheit ausdrücken konnte. NQNN, die fünfte Iteration, ist nicht das Modell sondern die Methodik: ein Probe-First-Workflow, in dem jede Hypothese auf ein eigenständiges, kleines, gut prüfbares Skript reduziert wird. Acht solcher Probes — linear, GBM, TCN, Cross-Asset NQ und ES, Reference-Level-Fade, Breakout, Regime — alle mit chronologischen Splits und realistischen Kosten. Aus dem Ergebnis ist der nächste Schritt entstanden: weg vom generischen Direction-Predictor, hin zu einem selektiven, falsifizierbaren Trade-Decision-System.

Pipeline

Frage zu Verdikt

Jeder Schritt hat eine Aufgabe: validieren vor Features, cachen vor Training, proben vor Modell, Verdikt vor Pivot. Der Probe-First-Workflow hat aus drei Jahren Forschung eine dokumentierbare Antwort gemacht statt einer offenen Frage.

Datenprüfung

Rust-Validator auf NinjaTrader-L1/L2 — Schema, Lücken, Dedup, Zeitzone

Parquet-Cache

2-Sek-L2-Bars, 205 Sessions, schema-fest, partitioniert

Probe

Standalone-Skript, eine Hypothese, Chrono-Split, realistische Kosten

Verdikt

In-Sample-vs-OOS-Gap, Dezil-Monotonie, Bootstrap-Konfidenzintervall

Pivot

Signal behalten (Volatilität), Ziel verworfen (Richtung), System neu gebaut

Was sich geändert hat

Was sich über die Iterationen geändert hat

Pipeline vor Modell

Drei Iterationen sind an stillen Datenbugs gestorben — ein Pandas-Resampler hat Sekundenbars dedupliziert, Feature-Joins hatten Look-ahead, Exports Zeitzonen-Drift. Ab Gamma steht die Validierung vor dem Training und ist dort geblieben. CSVValidator (Rust + Polars) prüft Schema, Lücken und Duplikate auf jedem Roh-Export; nichts erreicht das Modell, was nicht durch ist.

Quantile-Head statt Punktvorhersage

Eine Zahl pro Vorhersage sagt nichts über Sicherheit. Die TCN bekam einen Pinball-Loss-Quantile-Head (q10/q50/q90), damit Position-Sizing mit Unsicherheit skaliert. Ab dieser Iteration haben Backtests nicht mehr aus den falschen Gründen schön ausgesehen.

Probe-first, Modell-second

Ein voller TCN-Lauf dauert Stunden und verbirgt, was er fittet. Eine Probe sind fünfzig Zeilen, läuft in Sekunden, stellt eine Frage und druckt ein Verdikt. Acht Probes haben das Projekt weiter getragen als jeder Retraining-Zyklus — sie haben "Richtung ist nicht vorhersagbar" in Tagen statt Monaten beantwortet.

Pivot statt Patch

Nach drei Jahren Evidenz in eine Richtung wäre eine weitere Schicht nur Verleugnung gewesen. Das nächste System dreht die Frage um: Setup-Kontext erzeugt Kandidaten, Volatilität identifiziert Chancen, Path-Quality und EV entscheiden über den Trade, L2 filtert toxische Execution. Die Pipeline überlebt, das Framing ändert sich.

07 — Die Iterationen

Chapter 01

Erster Versuch — Random Forest

Kernpunkt

Raw OHLC + simple features + RF. Backtest sah gut aus.

Was fehlschlug

Klassisches Leakage. Future-Bars rutschten in den Feature-Vektor. Out-of-Sample war Coin-Flip.

Was übernommen wurde

Respekt vor Splits. "Wenn es zu gut aussieht, ist es zu gut."

Technische Entscheidungen

Warum so gebaut

Daten

  • +CSVValidator (Rust + Polars) prüft Schema, Lücken und Duplikate, bevor ein Feature das Modell erreicht.
  • +Parquet-Cache mit Schema- und Partitions-Fingerprint; Reruns sind Cache-Hits, niemals stille Reloads.

Auswertung

  • +Walk-Forward und chronologische Splits sind Pflicht; K-Fold auf Zeitreihen gilt als Bug.
  • +Reports trennen Gross von Net, zeigen Slippage-Stress-Tabellen, verstecken keinen Verlust-Tag.

Pivot

  • +Direction-Ziel verworfen, nachdem acht Probes über alle Modellklassen auf ~50 % OOS konvergiert sind.
  • +Bewegungsgröße bleibt als Opportunity-Signal — als Filter und Sizing-Input, nicht als Richtung.

Runtime

Vom Predictor zum Decision-System

Das klassische Framing — Richtung vorhersagen, dann handeln — ist an realistischen Kosten zerbrochen. Die nächste Architektur ist auf eine andere Frage gebaut: soll dieser konkrete Kandidat, in diesem Marktzustand, bei dieser Volatilität und Execution-Lage, genommen werden? Richtung ist nicht mehr der Output. Das Trade-Ergebnis ist es.

Selektives Decision-System

Setup-Logik erzeugt Kandidaten, Volatility-, Path- und EV-Modelle ranken sie, L2 filtert Execution-Toxizität, Risk-Governance setzt harte Caps. Das System darf "no trade" sagen — genau das ist der Sinn.

Triple-Barrier-Labels

Fixed-Horizon-Richtungs-Labels verfehlen den Pfad. Stop/Target/Timeout-Barrieren — plus MFE, MAE, Time-to-Target — beschreiben, was ein echter Trade tut, und genau das lernt der nächste Ranker zu bewerten.

Holdout unter Verschluss

Die letzten 20 % der Sessions werden einmal angefasst, nachdem die Validierung vorher festgelegte Gates besteht. Kein Retuning und keine wiederholten Versuche. Bricht der Holdout, wird die Setup-Familie gekillt — nicht gepatcht.

Was daraus rauskam

Gut / nicht gut

Hat funktioniert

  • +Probe-First-Workflow hat zu jeder Hypothese in Tagen ein eindeutiges Verdikt geliefert.
  • +Volatilitäts-/Move-Size-Forecast ist real: Spearman ~0,48, ~7× Top-vs-Bottom-Dezil-Spread, monatlich monoton.
  • +Rust-Pipeline (CSVValidator) hat Datenbugs gefangen, die Pandas wochenlang versteckt hat — bei ~80× Durchsatz.
  • +Quantile-Head, Walk-Forward und unangetastete Holdouts machen es Backtests unmöglich, zu gut auszusehen.

Hat nicht funktioniert

  • -Richtungs-Vorhersage auf 10-Sekunden-bis-10-Minuten — alle acht Probes konvergieren auf ~50 % OOS.
  • -Cross-Asset NQ/ES, Reference-Level-Fade und -Breakout, Regime-Konditionierung — keiner hat Richtung vom Rauschen getrennt.
  • -Größere Modelle auf einem signal-losen Ziel: TCN erreichte 55–63 % In-Sample auf Zellen, die OOS auf ~50 % kollabierten. Genau diese Lücke *ist* "kein Signal".
  • -Optimistische Fills, post-hoc Filter, K-Fold — jede Abkürzung hat einen Edge erzeugt, der die nächste Probe nicht überlebt hat.

Nächste Baustellen

Forschung als Methodik

eine schmale Setup-Familie zuerst (Opening Drive, First Pullback) bevor die Architektur wächst

Triple-Barrier-Labels mit Path-Quality-Features ersetzen Fixed-Horizon-Direction-Targets

L2 wird von Alpha-Quelle zum Execution-/Toxizitäts-Filter — mit hart verschlossenem Holdout

Galerie

03

Nächstes Projekt

BioCloth

Du arbeitest an
ähnlichen Themen?

Schreib mir kurz, worum es geht — ich melde mich.

Timo Wilde© 2026