← Alle Insights

Reinforcement Learning für Order-Execution.

Reinforcement Learning hat im Trading einen schweren Stand für reine Signal- Generierung. Für Order-Execution ist die Lage anders: Hier gibt es klare kurzfristige Rewards, eine wohldefinierte Episode und einen Markt, der auf Aktionen nachvollziehbar reagiert. Genau die Bedingungen, unter denen RL funktioniert.

Das Execution-Problem in einer Zeile.

Sie haben in den nächsten 60 Minuten 100 000 Aktien zu kaufen. Wenn Sie alles sofort über Market-Order schicken, drücken Sie den Preis nach oben — Market- Impact. Wenn Sie zu langsam handeln, läuft der Markt davon — Timing-Risiko. Klassisch löst das ein TWAP- oder VWAP-Algorithmus mit festen Slicing-Regeln. RL lernt aus Daten, wann diese Regeln verletzt werden sollten.

State, Action, Reward.

Die Modellierung als Markov-Decision-Process:

Simulator: ohne ihn geht es nicht.

RL braucht Millionen Trajektorien. Echte Markt-Replays liefert kein Broker. Ein realistischer Order-Book-Simulator ist die anspruchsvollste Komponente des gesamten Setups. Mindestbestandteile:

import numpy as np

class ExecutionEnv:
    def __init__(self, lob_snapshots, total_shares, horizon_steps, impact=1e-4):
        self.lob = lob_snapshots
        self.total = total_shares
        self.H = horizon_steps
        self.impact = impact
        self.reset()

    def reset(self):
        self.t = 0
        self.remaining = self.total
        self.arrival_price = self.lob[0]["mid"]
        return self._state()

    def _state(self):
        s = self.lob[self.t]
        return np.array([
            self.remaining / self.total,
            (self.H - self.t) / self.H,
            s["spread"],
            s["imbalance"],
            s["vol_1m"],
        ], dtype=np.float32)

    def step(self, action):
        # action in [0, 1]: Anteil des Rest-Volumens dieses Steps
        qty = int(round(action * self.remaining))
        s = self.lob[self.t]
        # einfaches linear-impact-Modell
        slip = self.impact * qty
        fill_price = s["ask"] + slip
        cost = qty * (fill_price - self.arrival_price)
        self.remaining -= qty
        self.t += 1
        done = self.t >= self.H or self.remaining <= 0
        if done and self.remaining > 0:
            # Rest-Cleanup mit Penalty
            cost += self.remaining * (s["ask"] - self.arrival_price + 5 * slip)
            self.remaining = 0
        reward = -cost / self.total
        return self._state(), reward, done, {}

Algorithmus: PPO als robuster Default.

Proximal Policy Optimization ist im Execution-Kontext der pragmatische Default. Off-Policy-Algorithmen wie SAC funktionieren auch, sind aber empfindlicher gegen schlechte Simulator-Daten. Eine kleine Policy mit zwei Hidden-Layern à 64 Units reicht für die meisten Setups.

import torch
import torch.nn as nn

class ExecPolicy(nn.Module):
    def __init__(self, n_state=5, hidden=64):
        super().__init__()
        self.shared = nn.Sequential(
            nn.Linear(n_state, hidden), nn.Tanh(),
            nn.Linear(hidden, hidden), nn.Tanh(),
        )
        self.mu = nn.Linear(hidden, 1)
        self.log_std = nn.Parameter(torch.zeros(1))
        self.value = nn.Linear(hidden, 1)

    def forward(self, s):
        h = self.shared(s)
        mu = torch.sigmoid(self.mu(h)).squeeze(-1)
        std = self.log_std.exp().expand_as(mu)
        return mu, std, self.value(h).squeeze(-1)

Benchmarks: gegen wen treten Sie an?

Ein RL-Agent ist nichts wert, wenn er TWAP nicht schlägt. Definieren Sie vor dem Training klare Baselines:

Ein gut trainierter Agent schlägt TWAP und VWAP über das Mittel hinweg um 5–15 % in Implementation-Shortfall — je nach Volatilität, Liquidität und Order-Größe.

Risiken und Realitäts-Check.

Der größte Fehler: zu sehr auf den Simulator vertrauen. Wenn der Impact-Schätzer zu mild ist, lernt der Agent, alles am Ende zu dumpen. Praktische Schutz- maßnahmen:

Wo RL noch nicht ankommt.

Für reine Signal-Generierung — also "soll ich long oder short gehen" — ist RL im Vergleich zu Supervised Learning meist unterlegen. Die Reward-Signale sind zu spärlich, das Sample-Efficiency-Problem zu groß. Execution ist die Domäne, in der RL aktuell den klarsten Mehrwert liefert. Wer hier startet, baut Erfahrung mit der Methodik, bevor er sie auf risikoreichere Probleme anwendet.

Sie wollen Ihre Execution mit RL verbessern oder zumindest sauber benchmarken? Erstgespräch buchen — wir bauen Simulator, Agent und A/B-Setup so auf, dass Sie die Mehrwerte messen können.