← Alle Insights

POV: Percentage of Volume.

Während VWAP gegen ein historisches Volumenprofil handelt, orientiert sich POV am realen Marktvolumen — in Echtzeit. Der Trader gibt vor, wie viel Prozent des jeweils handelnden Volumens er ausmachen will, und der Algorithmus passt seine Aktivität sekündlich an. Klingt einfach, ist aber einer der mächtigsten und am häufigsten falsch eingesetzten Execution-Stile.

Die Grundidee.

POV — auch Participation oder Volume Inline genannt — folgt einer simplen Regel: Wenn am Markt gerade viel gehandelt wird, handle ich proportional mit; ist wenig los, halte ich mich zurück. Konkret: bei einer Participation Rate von 10 % und einem realen Volumenfluss von 1.000 Aktien pro Minute kauft der Algorithmus 100 Aktien pro Minute. Steigt das Marktvolumen auf 5.000, kauft er 500. Sinkt es auf 200, kauft er nur 20.

Damit ist POV der natürlichste „liquiditätsadaptive" Algorithmus überhaupt. Er macht genau dann den meisten Lärm, wenn ohnehin viel Lärm da ist — und schweigt, wenn der Markt still ist.

Vorteile gegenüber VWAP und TWAP.

Der entscheidende Trade-off: kein Zeitlimit.

Der zentrale Nachteil von POV: Sie wissen nicht, wann Ihre Order fertig ist. Bei niedriger Liquidität kann eine 100.000-Aktien-Order, die mit 5 % Participation laufen sollte, deutlich länger brauchen als geplant — und im Extremfall bei Marktschluss nur teilweise ausgeführt sein.

Genau deshalb wird POV in der Praxis fast immer mit zusätzlichen Begrenzungen kombiniert: einem maximalen Zeithorizont, einer Mindest-Participation falls der Markt zu still wird, oder einer Eskalationsstufe, die den Algorithmus bei zu langsamen Fortschritt in einen aggressiveren Modus schaltet.

import pandas as pd
import numpy as np

def pov_step(remaining_qty: int, market_volume_last_period: int,
             participation: float, max_qty_per_step: int = None) -> int:
    """
    Bestimmt die Menge, die im nächsten Step gehandelt wird.
    market_volume_last_period: kürzlich beobachtetes Volumen.
    participation: Ziel-Quote (z.B. 0.10 für 10%).
    """
    target = int(market_volume_last_period * participation)
    qty = min(target, remaining_qty)
    if max_qty_per_step is not None:
        qty = min(qty, max_qty_per_step)
    return max(qty, 0)

def simulate_pov(total_qty: int, market_volume: pd.Series,
                 participation: float) -> pd.DataFrame:
    remaining = total_qty
    executions = []
    for ts, vol in market_volume.items():
        if remaining <= 0:
            break
        qty = pov_step(remaining, vol, participation)
        if qty > 0:
            executions.append({"timestamp": ts, "qty": qty, "mkt_vol": vol})
            remaining -= qty
    return pd.DataFrame(executions), remaining

mkt = pd.Series(
    [4500, 3800, 2100, 1500, 1200, 900, 1100, 1700, 2400, 3900, 5200, 6800],
    index=pd.date_range("2026-05-15 09:30", periods=12, freq="30min")
)
fills, rest = simulate_pov(total_qty=3000, market_volume=mkt, participation=0.10)
print(fills)
print(f"Restmenge: {rest}")

Eskalation: Wenn POV nicht mitkommt.

In jeder ernsthaften POV-Implementierung gibt es eine Eskalationslogik. Die Standardlösung: Der Algorithmus rechnet permanent aus, wie weit er hinter einem linearen oder VWAP-orientierten Idealpfad zurückliegt. Wird ein Schwellwert überschritten, steigt die Participation Rate temporär — beispielsweise von 8 % auf 15 % — bis der Rückstand abgebaut ist.

Sauberer ist allerdings die umgekehrte Variante: cap-basiertes POV. Sie geben einen Minimum- und einen Maximum-Anteil vor (z. B. 5 %–12 %), und der Algorithmus bewegt sich innerhalb dieses Korridors abhängig vom Zeitfortschritt. Liegt er zurück, läuft er am oberen Rand; ist er voraus, am unteren.

import numpy as np
import pandas as pd

class AdaptivePOV:
    """POV mit Eskalation bei Rückstand gegenüber linearem Zeitplan."""

    def __init__(self, total_qty, start_ts, end_ts,
                 base_rate=0.08, min_rate=0.04, max_rate=0.15):
        self.total = total_qty
        self.remaining = total_qty
        self.start = start_ts
        self.end = end_ts
        self.base = base_rate
        self.lo = min_rate
        self.hi = max_rate

    def current_rate(self, now_ts):
        elapsed = (now_ts - self.start).total_seconds()
        total_sec = (self.end - self.start).total_seconds()
        target_fill = self.total * (elapsed / total_sec)
        actual_fill = self.total - self.remaining
        ratio = actual_fill / max(target_fill, 1)

        if ratio < 0.85:    # weit zurück
            return self.hi
        if ratio < 0.95:    # leicht zurück
            return min(self.hi, self.base * 1.4)
        if ratio > 1.10:    # voraus
            return self.lo
        return self.base

    def step(self, now_ts, mkt_vol):
        rate = self.current_rate(now_ts)
        qty = min(int(mkt_vol * rate), self.remaining)
        self.remaining -= qty
        return qty, rate

Wann POV der richtige Algorithmus ist.

POV passt vor allem bei fließenden Strategien — solchen, deren Signal nicht zeitkritisch ist und bei denen es wichtiger ist, sauber im Markt unterzugehen, als schnell durch zu sein. Klassische Anwendungsfälle: Portfolio-Rebalancing, Aufbau mittelfristiger Positionen, Liquidation größerer Bestände ohne Stress.

Schlecht passt POV bei Signal-getriebenen Strategien mit kurzer Halbwertszeit. Wenn Ihr Modell einen Edge mit 30 Minuten Halbwertszeit findet und Ihre POV-Order zwei Stunden braucht, haben Sie zwar einen tollen Shortfall gegen VWAP — aber die Strategie hat keinen Edge mehr.

Praxisfehler und wie man sie vermeidet.

Der häufigste Fehler in POV-Setups ist eine zu hohe Participation Rate. Viele Trader denken: „10 % ist doch nicht viel" — bis sie merken, dass 10 % an einem illiquiden Tag in einem mittelgroßen Wert problemlos 30 oder 40 Basispunkte Impact erzeugen können. Faustregel aus der Praxis: Bei Large Caps sind 8–12 % ein vernünftiger Korridor, bei Mid Caps eher 4–7 %, bei Small Caps oder Krypto mit dünnen Orderbüchern selten mehr als 3 %.

Der zweithäufigste Fehler ist die naive Messung des Marktvolumens. Wenn der Algorithmus selbst signifikant zum Volumen beiträgt, schaut er beim nächsten Schritt auf sein eigenes Volumen und feuert nach — ein klassischer Feedback-Loop. Saubere Implementierungen ziehen das eigene Volumen aus der Berechnung heraus oder verwenden Volumen aus konkurrierenden Venues.

Der dritte Fehler: keine Auseinandersetzung mit Sweep- und Iceberg-Volumen. Manche Volumendaten enthalten Block-Trades, die zwar gemeldet werden, aber nichts mit dem regulären Orderbuch zu tun haben. Wer diese Trades als „verfügbares Volumen" interpretiert, überschätzt seine eigene erlaubte Aktivität.

Sie wollen einen POV-Algorithmus konzipieren oder testen? Erstgespräch buchen — wir prüfen, ob POV zu Ihrer Strategie passt und kalibrieren die Parameter.