← Alle Insights

Synthetic Data für Backtests: GANs & Diffusion Models in der Praxis.

Historische Marktdaten sind begrenzt. Wer eine Strategie ehrlich auf Tail-Risk und Regime-Wechsel testen will, stößt schnell an die Wand. Synthetic Data — generiert via GAN, TimeGAN oder Diffusion Models — bietet einen Ausweg. Aber: synthetisch ist nicht echt. Wie ich sie nutze, ohne mich selbst zu täuschen.

Eine 10-Jahres-Historie eines liquiden Asset-Universums ist nominell viel Daten. Effektiv aber: ein Bullen-Markt, eine kurze Korrektur, eine Erholung, vielleicht ein größerer Crash. Für statistische Aussagen über Strategie-Robustheit gegen Regime-Wechsel ist das wenig. Synthetic Data verspricht: zehntausende plausibler Marktphasen, beliebig konfigurierbar. Die Frage ist nur, was „plausibel“ in dem Kontext bedeutet.

Warum klassische Bootstraps nicht reichen.

Block-Bootstrap und Stationary Bootstrap erzeugen neue Pfade durch Re-Sampling existierender Returns. Das funktioniert für mittelfristige Statistik gut. Aber:

Generative Modelle lernen die Verteilung der Marktdynamik und können daraus neue, nie gesehene Pfade generieren, die statistisch plausibel sind.

QuantGAN und TimeGAN.

QuantGAN (Wiese et al., 2020): adaptiert die Architektur von Wavenet (temporal convolutions) für Finanzdaten. Generiert univariate Return-Reihen, die zentrale Stylized Facts reproduzieren — Volatility Clustering, Heavy Tails, Leverage Effect.

TimeGAN (Yoon et al., 2019): kombiniert ein autoregressives supervisiertes Netzwerk mit einem GAN-Setup. Speziell für multivariate Zeitreihen ausgelegt. Gut für Cross-Asset-Generierung, etwa korrelierte Aktienindizes oder gekoppelte FX-Paare.

Beide haben Schwächen: Modus-Kollaps (das Modell generiert nur einen Teil der echten Verteilung) und Trainings-Instabilität. In der Praxis braucht es mehrere Trainings-Runs und sorgfältige Hyperparameter-Suche.

Diffusion Models (DDPM) für Returns.

Denoising Diffusion Probabilistic Models — seit 2020 dominant in Bildgenerierung — haben sich seit etwa 2023 auch für Finanzdaten etabliert. Idee: ein Vorwärtsprozess fügt iterativ Rauschen zu echten Returns hinzu, ein neuronales Netz lernt den Rückwärtsprozess. Nach Training generiert das Netz aus reinem Rauschen plausible Return-Pfade.

Vorteile gegenüber GANs:

Nachteil: Generierung ist langsam. Pro Pfad braucht es oft 50–1.000 Reverse-Steps. Für Strategie-Stress-Tests mit 10.000 Pfaden ist GPU-Zeit Pflicht.

Python-Snippet mit ydata-synthetic.

Die Bibliothek ydata-synthetic bündelt TimeGAN, DoppelGAN und einige Diffusion-Varianten für Tabellen- und Zeitreihen-Daten.

# TimeGAN auf Returns trainieren und Pfade samplen
import numpy as np
import pandas as pd
from ydata_synthetic.synthesizers.timeseries import TimeGAN
from ydata_synthetic.synthesizers import ModelParameters, TrainParameters

returns = pd.read_csv('returns.csv', parse_dates=['date'], index_col='date')
# Multivariate Return-Reihen: SPY, TLT, GLD, DBC, VIX

seq_len = 60   # 60-Tage-Sequenzen
n_seq   = 5    # 5 Assets

model_args = ModelParameters(
    batch_size=128, lr=5e-4, noise_dim=32,
    layers_dim=128, latent_dim=24
)
train_args = TrainParameters(epochs=10000, sequence_length=seq_len,
                             number_sequences=n_seq)

gan = TimeGAN(model_parameters=model_args, hidden_dim=24, seq_len=seq_len,
              n_seq=n_seq, gamma=1)
gan.train(returns.values, train_args)

# 10.000 synthetische Pfade à 60 Tage erzeugen
synthetic = gan.sample(10000)
# shape: (10000, 60, 5)

Validierung: sind die synthetischen Daten brauchbar?

Ohne Validierung ist Synthetic Data wertlos — ein Mandant zeigte mir 2031 ein TimeGAN-Setup, das auf S&P-Returns trainiert war, aber Renditen mit Standardabweichung 11 % pro Tag generierte. Klar unbrauchbar, aber niemand hatte es geprüft.

Mein Validierungs-Stack:

  1. Marginal Distributions: KS-Test pro Asset, ob synthetische und echte Returns aus derselben Verteilung kommen. Plus QQ-Plots.
  2. Autocorrelation: ACF und PACF auf Returns und auf |Returns| (für Volatilitäts-Cluster) vergleichen.
  3. Cross-Correlation: synthetische Cross-Asset-Korrelations-Matrix vs. echte. Mit Frobenius-Norm der Differenz.
  4. Stylized Facts: Heavy Tails (Hill-Estimator), Leverage Effect, Volatility Clustering messen — bei echten und synthetischen Daten.
  5. Train-on-Synthetic-Test-on-Real (TSTR): ein Klassifikator wird auf synthetischen Daten trainiert, auf echten getestet. Performance vergleichen mit Train-on-Real-Test-on-Real.

Erst wenn alle fünf Tests akzeptabel sind, lasse ich synthetische Daten in die Backtest-Pipeline.

Bedingte Generierung: gezielter Stress-Test.

Der wahre Mehrwert von Synthetic Data liegt in conditional generation. Beispiele aus echten Projekten:

Conditional DDPMs sind hier das Werkzeug der Wahl. TimeGAN kann conditional generieren, ist aber technisch klobiger.

Anwendung: Strategy-Stress-Testing.

Aus einem Mandanten-Projekt 2032: ein systematisches Vol-Carry-Setup auf VIX-Futures. Historisches Backtest: Sharpe 1,3, Max Drawdown 18 %. Synthetic-Stress-Test mit 10.000 Pfaden, davon 1.000 conditional auf „Vol-Spike auf 50 % innerhalb von 5 Tagen“:

Das hat den Mandanten dazu gebracht, einen Vol-Trigger einzubauen, der die Strategie bei VIX > 35 in Cash-Modus schickt. Mit Trigger: 5 %-Quantil Drawdown bei 22 %. Live-tauglich.

Caveats und Risiken.

Meine Praxis.

Synthetic Data nutze ich ausschließlich als Ergänzung, nie als Ersatz für echte Historie. Konkret:

Was Synthetic Data nicht ist: ein Generator für unbegrenzte Datenmengen, mit dem Sie Multiple-Testing-Probleme wegzaubern können. Wer 50.000 Strategien auf synthetischen Daten testet, hat 50.000 Strategien getestet — die DSR-Korrektur gilt unverändert.

Was Synthetic Data ist: ein präzises Werkzeug, um spezifische Schwachstellen einer Strategie sichtbar zu machen. Eingesetzt mit Validierung und kritischem Blick, ist es eine echte Bereicherung des Methoden-Stacks. Eingesetzt ohne Validierung, ist es teurer Selbstbetrug auf GPU-Basis.

Sie wollen Ihre Strategie auf 10.000 synthetische Marktphasen testen — mit ehrlicher Validierung der Daten? Erstgespräch buchen — wir bauen das Synthetic-Data-Setup gemeinsam auf.