VWAP und TWAP: Execution-Algorithmen verstehen.
Wer eine größere Order in den Markt bringen will, hat ein Problem: Wird sie zu schnell ausgeführt, frisst der Market Impact die Marge. Wird sie zu langsam ausgeführt, läuft der Preis weg. VWAP und TWAP sind die beiden klassischen Antworten auf dieses Dilemma — und die Grundlage, auf der jeder anspruchsvollere Execution-Algorithmus aufbaut.
Worum es bei Execution wirklich geht.
Ein gutes Trading-Signal ist nur die halbe Miete. Wenn Sie eine Strategie mit erwartetem Edge von 8 Basispunkten pro Trade haben und die Execution Sie 12 Basispunkte kostet, haben Sie eine Strategie, die Geld verbrennt. Genau hier setzen Execution-Algorithmen an: Sie sollen den Unterschied zwischen Theoriepreis und realem Ausführungspreis minimieren.
Die zwei klassischen Vertreter sind TWAP (Time-Weighted Average Price) und VWAP (Volume-Weighted Average Price). Beide zerlegen eine große Order in kleinere Tranchen, unterscheiden sich aber fundamental darin, wie sie diese Tranchen über den Tag verteilen.
TWAP: Gleichmäßig über die Zeit.
TWAP ist der einfachste Algorithmus überhaupt. Sie wollen 10.000 Aktien über vier Stunden kaufen? TWAP teilt die Order in gleich große Stücke und feuert sie in regelmäßigen Abständen ab — zum Beispiel alle fünf Minuten 208 Aktien.
Der Vorteil: völlig vorhersehbar, einfach zu implementieren, keine Datenanforderungen. Der Nachteil: TWAP ignoriert, dass Liquidität über den Tag hinweg sehr ungleichmäßig verteilt ist. Wer in der mittäglichen Liquiditätsflaute eine Tranche feuert, bewegt den Markt deutlich stärker als jemand, der zur Eröffnung oder zum Schluss handelt.
import numpy as np
import pandas as pd
from datetime import datetime, timedelta
def twap_schedule(total_qty: int, start: datetime, end: datetime,
slice_minutes: int = 5) -> pd.DataFrame:
"""Erzeugt einen TWAP-Ausführungsplan mit gleich großen Tranchen."""
duration = (end - start).total_seconds() / 60
n_slices = int(duration // slice_minutes)
slice_qty = total_qty / n_slices
timestamps = [start + timedelta(minutes=i * slice_minutes)
for i in range(n_slices)]
return pd.DataFrame({
"timestamp": timestamps,
"qty": [slice_qty] * n_slices,
"cum_qty": np.cumsum([slice_qty] * n_slices),
})
plan = twap_schedule(10_000,
datetime(2026, 5, 15, 9, 30),
datetime(2026, 5, 15, 13, 30),
slice_minutes=5)
print(plan.head())
print(f"Tranchen: {len(plan)} | je {plan['qty'].iloc[0]:.0f} Aktien")
TWAP eignet sich vor allem dann, wenn Sie wenig über das erwartete Volumenprofil wissen, wenn die Liquidität über den Tag halbwegs konstant ist (Forex, große Krypto-Paare) oder wenn Sie bewusst keine vorhersagbaren Muster im Markt hinterlassen wollen.
VWAP: Mitschwimmen mit dem Volumen.
VWAP geht einen Schritt weiter. Statt gleichmäßig über die Zeit zu verteilen, orientiert sich der Algorithmus am historischen Volumenprofil des Wertpapiers. Bei US-Aktien sieht das Volumenprofil typischerweise wie ein U aus: viel Volumen zur Eröffnung, Flaute am Mittag, ein zweiter Peak zum Schluss.
Ein VWAP-Algorithmus schätzt, wie viel Prozent des Tagesvolumens in jedem Zeitfenster anfallen werden, und passt seine Tranchen entsprechend an. Wenn um 9:35 typischerweise 8 % des Tagesvolumens passieren, wird der Algorithmus dort auch 8 % seiner Order platzieren — und am Mittag deutlich weniger.
import numpy as np
import pandas as pd
def vwap_schedule(total_qty: int, volume_profile: pd.Series) -> pd.DataFrame:
"""
volume_profile: Series mit relativen Volumenanteilen pro Zeitfenster (Summe = 1.0).
Index ist der Timestamp am Beginn jedes Fensters.
"""
if not np.isclose(volume_profile.sum(), 1.0):
volume_profile = volume_profile / volume_profile.sum()
quantities = (volume_profile * total_qty).round().astype(int)
# Rundungsdifferenz im letzten Slot ausgleichen
diff = total_qty - quantities.sum()
quantities.iloc[-1] += diff
return pd.DataFrame({
"timestamp": volume_profile.index,
"qty": quantities.values,
"vol_share": volume_profile.values,
"cum_qty": np.cumsum(quantities.values),
})
# Beispiel: U-förmiges Profil aus historischen Daten
times = pd.date_range("2026-05-15 09:30", "2026-05-15 16:00", freq="30min")
raw_profile = np.array([0.18, 0.12, 0.08, 0.06, 0.05, 0.05,
0.05, 0.06, 0.07, 0.08, 0.10, 0.10, 0.00])
profile = pd.Series(raw_profile[:len(times)], index=times)
profile = profile / profile.sum()
plan = vwap_schedule(50_000, profile)
print(plan)
Der Hebel liegt im Volumenprofil. Wer ein gutes Modell hat — gleitender Median der letzten 20 Tage plus Anpassung für bekannte Events wie Earnings oder Fed-Entscheidungen — kann signifikant bessere Execution-Qualität erzielen als ein statisches TWAP.
VWAP als Benchmark, nicht nur als Algorithmus.
Ein wichtiger Punkt, den viele übersehen: VWAP ist nicht nur ein Ausführungsstil, sondern auch der wichtigste Execution-Benchmark der Industrie. Wenn ein institutioneller Trader eine Order an einen Broker gibt, lautet die Frage am Ende des Tages oft: „Wie hat meine Ausführung gegen den Tages-VWAP abgeschnitten?"
Diese Benchmark-Funktion hat eine paradoxe Konsequenz: VWAP-Algorithmen werden verwendet, weil sie gegen VWAP gemessen werden. Wer den Benchmark schlagen will, muss eigentlich anders handeln — aber dann trägt er das Risiko, schlechter als der Benchmark abzuschneiden. Eine klassische Spieltheorie-Situation, in der sich die meisten Marktteilnehmer für die konservative Variante entscheiden.
Wann TWAP, wann VWAP?
- TWAP bei: geringer Liquidität, FX-Märkten, Krypto rund um die Uhr, wenn Sie keine Muster im Markt hinterlassen wollen, bei sehr kleinen Orders relativ zum Tagesvolumen.
- VWAP bei: stark zyklischen Märkten (Aktien, Futures), bei Orders, die mehr als 1 % des Tagesvolumens ausmachen, wenn Sie gegen einen VWAP-Benchmark bewertet werden.
- Beides nicht: bei sehr kleinen Orders (einfacher Market- oder Limit-Order reicht), bei extrem zeitkritischen Trades (dann Aggression vor Algorithmus) und bei illiquiden Instrumenten (dort hilft nur Hand-Trading).
Was in der Praxis schiefgeht.
Drei Fehler sehe ich bei Mandanten regelmäßig. Erstens: das Volumenprofil wird einmal geschätzt und nie wieder angepasst. Volumen-Patterns ändern sich mit Volatilität, mit Marktregimen und mit der Index-Zusammensetzung. Ein VWAP-Modell aus 2022 hilft Ihnen 2026 nur begrenzt.
Zweitens: keine Anpassung an Markterwartungen. Wenn um 14:30 die Fed-Entscheidung ansteht, ist das historische Profil wertlos. Vor solchen Events muss ein gutes Modell entweder die Order vorzeitig abschließen oder die Tranchen explizit verschieben.
Drittens: zu mechanisches Verhalten. Wer immer um Punkt 9:30:00 die erste Tranche feuert, wird von HFT-Algorithmen erkannt und gefrontrunnt. Etwas Jitter — kleine zufällige Verschiebungen — kostet wenig und verhindert das Schlimmste.
Erweiterungen: Adaptive VWAP und POV-Beimischung.
In der Realität werden VWAP-Algorithmen selten in der reinen Lehrbuchform eingesetzt. Die meisten Broker-Implementierungen sind adaptiv: Wenn der reale Volumenfluss stark vom prognostizierten Profil abweicht, passt der Algorithmus seine Tranchen dynamisch an. Liegt er hinter dem Plan zurück, wird aggressiver gehandelt; ist er vorne, wird gewartet.
Auch eine Beimischung mit POV-Logik (Percentage of Volume) ist üblich: Solange der Algorithmus im Plan ist, läuft er als VWAP. Sobald er signifikant zurückfällt, schaltet er in einen POV-Modus mit definierter Participation Rate. So bleibt die Order auch in volatilen Märkten kontrolliert.
Sie wollen Ihre Execution professionalisieren? Erstgespräch buchen — wir prüfen, wo Sie Slippage verlieren und wo Algorithmen Sinn ergeben.