Pair-Trading & Statistical Arbitrage: marktneutral systematisch.
Pair-Trading war die erste „Quant"-Strategie überhaupt — entwickelt bei Morgan Stanley in den 80ern. Trotz Jahrzehnten der Konkurrenz funktioniert sie weiter, weil sie auf einem statistisch echten Phänomen aufbaut: mean-revertierende Spreads zwischen ökonomisch verwandten Assets.
Die Grundidee.
Zwei Aktien aus derselben Branche (z. B. Coca-Cola und Pepsi, Shell und BP) bewegen sich langfristig im Gleichschritt — getrieben von gemeinsamen ökonomischen Faktoren. Kurzfristig divergieren sie. Die Spread-Mean-Reversion ist Ihre Wette: Long-Aktie A, Short-Aktie B, wenn der Spread zu weit aufgegangen ist. Schließen, wenn er sich wieder normalisiert.
Vorteil: marktneutral. Wenn die Branche abstürzt, fallen beide Aktien — die Spread- Position ist davon nicht direkt betroffen.
Wie Sie passende Paare finden.
- Kointegration: Augmented Dickey-Fuller-Test auf den Residuen einer linearen Regression von A auf B. Wenn p-Value < 0,05, sind die zwei Serien kointegriert.
- Korrelations-Filter vorab: nur Paare mit Korrelation > 0,7 testen — sonst entstehen zufällige „Kointegrations"-Treffer.
- Sektoren-Filter: gleiche GICS-Sub-Industry. Mathematische Kointegration ohne ökonomische Basis ist nicht stabil.
- Liquiditäts-Filter: beide Aktien mit Tages-Volumen > 5 Mio. USD. Pair-Trading mit illiquiden Aktien wird durch Slippage gefressen.
Python-Beispiel: Pair-Test.
import numpy as np, pandas as pd
from statsmodels.tsa.stattools import coint, adfuller
import statsmodels.api as sm
def test_pair(price_a, price_b):
# 1. Kointegrations-Test
score, pval, _ = coint(price_a, price_b)
if pval > 0.05:
return None # kein kointegriertes Paar
# 2. Hedge-Ratio (Beta) via OLS
X = sm.add_constant(price_b)
model = sm.OLS(price_a, X).fit()
beta = model.params[1]
# 3. Spread berechnen + Z-Score
spread = price_a - beta * price_b
z = (spread - spread.mean()) / spread.std()
# 4. Half-Life der Mean-Reversion schätzen
spread_lag = spread.shift(1).dropna()
spread_diff = spread.diff().dropna()
reg = sm.OLS(spread_diff, sm.add_constant(spread_lag.iloc[:len(spread_diff)])).fit()
half_life = -np.log(2) / reg.params[1] if reg.params[1] < 0 else None
return dict(beta=beta, half_life=half_life,
z_current=z.iloc[-1], pval=pval)
Trading-Regeln.
Klassische Z-Score-Regeln:
- Entry: bei |Z| > 2 — Spread ist signifikant von Mittelwert abgewichen. Long-A/Short-B bei Z < −2, Short-A/Long-B bei Z > +2.
- Exit: bei |Z| < 0,5 — Spread ist wieder nahe Mittelwert.
- Stop-Loss: bei |Z| > 3,5 — Spread driftet ohne Mean-Reversion weiter. Setup gilt als invalidiert.
- Time-Stop: schließen nach 3× Half-Life, falls keine Reversion. Spätestens dann ist das Setup tot.
Die fünf Killer.
- Strukturbruch: Wenn ein Unternehmen seine Strategie ändert (Übernahme, Restrukturierung, Spinoff), ist die alte Kointegration weg. Pair läuft auseinander, Position wird zerstört. Beispiel: Coca-Cola/Pepsi war 30 Jahre stabil — bis Pepsi 2018 stark Richtung Snacks/Foods diversifiziert hat.
- Trading-Kosten: zwei Trades pro Pair pro Trade-Zyklus, plus Short-Borrowing-Costs (für die Short-Aktie). Bei niedrig-volatilen Paaren fressen die Kosten die Gewinne auf.
- Survivorship-Bias im Pair-Discovery: wenn Sie Paare auf aktueller Aktien-Liste testen, bevorzugen Sie überlebende Unternehmen. In Backtests bauen Sie Cointegrations-Signale, die in der Vergangenheit nicht erkennbar waren.
- Korrelations-Crashes: in Krisen brechen die meisten Korrelationen kurzfristig — auch die zwischen ökonomisch ähnlichen Aktien. Spread-Drawdowns von 30 % sind in Stress-Phasen normal.
- Capacity-Limits: Pair-Strategien skalieren schlecht. Wer mit 10 Mio. € Long-Short auf einem mittel-liquiden Paar fährt, bewegt selbst den Spread und macht die Strategie kaputt.
Was über Pair hinausgeht.
Statistische Arbitrage im weiteren Sinn nutzt nicht nur Paare, sondern größere Cluster: 10–50 Aktien pro Sektor, jeweils gegen einen Faktor-Mean (z. B. den durchschnittlichen Branchen-Return). Long die Underperformer, Short die Overperformer — Annahme, dass die relativen Abweichungen mean-revertieren.
Mathematisch: PCA auf Returns einer Sektor-Gruppe, Trade auf die Residuen des ersten Principal Components. Das ist die Architektur, die Renaissance, D. E. Shaw und andere seit Jahrzehnten nutzen.
Realistische Performance.
Für Retail-Setups mit 2–5 Paaren parallel: Sharpe-Ratios 0,6–1,0, annualisierte Returns 6–12 % nach Kosten. Marktneutral, also auch in Bear-Markets profitabel — aber kapitalintensiv (Margin-Anforderungen für Shorts) und psychologisch anstrengend (langweilig in Trend-Märkten).
Für institutionelle Setups mit 50+ Spreads in einem Sektor-Universum: Sharpe um 1,5, bei deutlich höheren Capacity-Limits. Aber: braucht professionelle Daten, Risk-Management und Infrastruktur, die für Retail kaum erreichbar ist.
Sie wollen marktneutrale Strategien systematisch evaluieren? Erstgespräch buchen — wir bauen ein Pair-Discovery-Setup auf Ihren Daten.