Für Aktien- und Derivatehändler sind Daten entscheidend für die Entwicklung erfolgreicher Handelsstrategien. Die Idee dahinter ist, dass Sie mit Hilfe historischer Daten die Geschichte zurückspulen können, um zu simulieren, wie sich eine Strategie entwickelt hätte - das so genannte Backtesting. Historische Daten sind daher für einen profitablen Handel und ein effektives Risikomanagement unerlässlich.
Bei GoDataDriven haben wir eine Plattform für skalierbares Backtesting entwickelt: Backtesting-as-a-Service oder BaaS. Neben dem Backtesting ermöglicht BaaS auch die Strategieoptimierung und -entdeckung, um automatisch datengesteuerte Handelsstrategien zu finden!
Was ist BaaS
BaaS ist im Wesentlichen eine verteilte Backtesting-Plattform: Sie unterstützt Analysten und Händler bei der schnelleren Entwicklung besserer Handelsstrategien. Die benutzerfreundliche Python-API ermöglicht eine mühelose:
- Validierung von Handelsstrategien,
- Prototyping von neuen Handelsstrategien,
- Optimierung der Handelsparameter, und
- automatische Generierung neuer datengesteuerter Strategien.
Handelsstrategien sind in der Regel parametrisiert: Die Regeln, die den Kauf und Verkauf steuern, können angepasst werden. Gute Strategieparameter müssen vom Analysten festgelegt werden - eine schwierige Aufgabe angesichts der vielen verschiedenen Einstellungen.
BaaS löst diese Aufgabe, indem es modernste Optimierungstechniken und eine schnelle Backtesting-Engine einsetzt, um Parameter zu optimieren und Strategien automatisch zu generieren.
Die vier Vorteile von BaaS
1. BaaS ist zugänglich
BaaS verfügt über eine benutzerfreundliche Python-API, für die keine fortgeschrittenen Python-Kenntnisse erforderlich sind. Um einen Backtest durchzuführen, definiert der Benutzer zunächst die Merkmale (oder technischen Indikatoren), auf die sich die Strategie stützt. Wenn die Strategie beispielsweise auf dem Index der relativen Stärke basiert, richten wir sie wie folgt ein:
features = {
"rsi": baas.features.RelativeStrengthIndex(
name="rsi", col="price", span=14
)
}
Hier ist span ein Parameter, der sich auf den Index der relativen Stärke bezieht, und col bestimmt, auf welcher Variablen der Index der relativen Stärke berechnet werden soll. Neben den Standardfunktionen von BaaS können wir auch benutzerdefinierte Funktionen implementieren, indem wir pandas, scikit-learn oder eine andere Python-basierte Bibliothek verwenden.
Um die Merkmale in tatsächliche Kauf- und Verkaufssignale umzuwandeln, legt der Analyst die Parameter für den Handel fest. Eine einfache Strategie könnte darin bestehen, zu kaufen, wenn der Relative-Stärke-Index unter 35 fällt, und wieder zu verkaufen, wenn er wieder auf 50 steigt:
rules = {
"buy": "rsi < 35",
"revert_positive_position": "rsi > 50",
}
Nachdem Sie die Funktionen und die Handelsregeln definiert haben, müssen Sie nur noch die einzelnen Komponenten zusammenfügen, um den Backtest durchzuführen:
# Initialize strategy
strategy = baas.strategy.Strategy(rules, features)
# Initialize the backtest
backtest = baas.backtest.BackTest(
strategy,
latency=20, budget=100, execution="passive"
)
# Run the backtest
backtest.run(order_book)
Wenn der Backtest abgeschlossen ist, wird eine Gewinn- und Verlustrechnung (P&L) erstellt, zusammen mit einem detaillierten Protokoll aller getätigten Trades.
2. BaaS ist datengesteuert
Neben dem Backtesting bestehender Handelsstrategien kann BaaS die Handelsparameter automatisch optimieren und sogar neue Strategien aus den Daten finden. Um Parameter zu optimieren, muss BaaS nur wissen, welches Intervall von Parameterwerten berücksichtigt werden soll:
# Initialize optimizer object
optimizer = baas.strategy.StrategyOptimizer(strategy, latency=20)
# Set intervals to search over
parameter_grid = {
# Strategy parameters
"strategy__buy__rsi": (0, 50),
"strategy__revert_positive_position__rsi": (50, 100),
# Feature parameters
"feature__rsi__span": (1, 20)
}
# Optimize the parameters
optimizer.optimize(order_book, parameter_grid, budget=100)
Das bedeutet, dass BaaS Käufe in Betracht zieht, wenn der RSI zwischen 0 und 50 liegt, und wieder verkauft, wenn der RSI zwischen 50 und 100 liegt. Für den Parameter span berücksichtigt es Werte zwischen 1 und 20 Minuten.
BaaS verwendet modernste Optimierungstechniken, um effizient nach gewinnbringenden Parametern zu suchen. Dies ermöglicht die Optimierung der Parameter - selbst bei komplexen Strategien mit vielen Parametern.
3. BaaS ist skalierbar
Eine der Stärken von BaaS ist die horizontale Skalierung in Bezug auf die Anzahl der verarbeiteten Tage. Das bedeutet, dass die Ausführung eines Backtests für eine Woche oder für zehn Jahre Daten (nach dem Laden der Eingabedaten) ungefähr die gleiche Zeit in Anspruch nimmt: BaaS stellt auf transparente Weise zusätzliche Maschinen bereit.
BaaS skaliert auch horizontal in Bezug auf die Anzahl der Aktien, mit denen eine Strategie getestet wird. Wenn eine Strategie zum Beispiel mit zwei Aktien gleichzeitig handelt, möchten Sie oft überprüfen, wie die Strategie bei vielen verschiedenen Aktienpaaren abschneidet. Mit BaaS ist das kein Problem: die Laufzeit würde sich nicht verlängern.
Die Laufzeit erhöht sich nur mit der Anzahl der Aktien, mit denen eine Strategie gleichzeitig handelt. Wenn Sie also eine einzelne Strategie haben, die mit zehn Aktien handelt, wird dies im Allgemeinen langsamer sein als das Testen einer Strategie, die nur mit einer Aktie handelt. Für die meisten Anwendungsfälle ist dies jedoch kein Problem, da die Strategien in der Regel nur eine Handvoll Aktien verwenden.
Die Simulationen werden mit Hilfe von Apache Spark oder Dask, die sowohl in der Cloud als auch vor Ort ausgeführt werden können, auf einen Cluster von Arbeitern verteilt.
Um die Leistung von BaaS zu veranschaulichen, haben wir ein Backtesting einer Intraday-Strategie auf der Google Cloud Platform durchgeführt. Die Strategie verwendet vier Funktionen für hochfrequente Orderbuchdaten (auf Tick-Ebene) und wird auf einen Korb von Aktien angewendet. Die folgende Tabelle zeigt die Laufzeitleistung von BaaS:
Backtest-Laufzeiten:
| 10 Tage | 30 Tage | 150 Tage | 2500 Tage | |
|---|---|---|---|---|
| 3 Aktien | 7s | 7s | 7s | 7s |
| 5 Aktien | 20s | 20s | 20s | 20s |
| 6 Aktien | 24s | 24s | 24s | 24s |
| 8 Aktien | 30s | 30s | 30s | 30s |
| 10 Aktien | 45s | 45s | 45s | 45s |
| 20 Aktien | 120s | 120s | 120s | 120s |
Die Tabelle zeigt, dass die Berechnungszeit nur mit der Anzahl der Aktien in der Strategie, nicht aber mit der Anzahl der Handelstage zunimmt. Das liegt an der Verteilung der Simulationen durch die BaaS Backtesting-Engine.
4. BaaS macht Backtesting in großem Maßstab erschwinglich
BaaS wurde entwickelt, um die Laufzeit von Backtests zu minimieren, was zu niedrigen Rechenkosten führt. Die Laufzeiten des vorangegangenen Experiments können in die in der folgenden Tabelle dargestellten Berechnungskosten umgerechnet werden:
Kosten für Backtest-Läufe auf Google Cloud Platform
| 10 Tage | 30 Tage | 150 Tage | 2500 Tage | |
|---|---|---|---|---|
| 3 Bestände | < $0.01 | < $0.01 | $0.02 | $0.27 |
| 5 Aktien | < $0.01 | < $0.01 | $0.03 | $0.45 |
| 6 Bestände | < $0.01 | $0.02 | $0.10 | $1.73 |
| 8 Aktien | < $0.01 | $0.02 | $0.08 | $1.37 |
| 10 Aktien | < $0.01 | $0.02 | $0.10 | $1.69 |
| 20 Aktien | $0.01 | $0.04 | $0.19 | $3.23 |
Der Backtest einer Strategie auf Hochfrequenzdaten, die mit einem Korb von 10 Aktien über 2500 Tage hinweg handelt, ist billiger als ein Kaffee bei Starbucks!
Fazit
BaaS ist eine verteilte Backtesting-Plattform: Sie unterstützt Analysten und Händler bei der schnelleren Entwicklung besserer Handelsstrategien. Die benutzerfreundliche Python-API ermöglicht die mühelose Validierung und das Prototyping von Handelsstrategien. Außerdem kann BaaS zur Optimierung von Handelsparametern und zur automatischen Generierung neuer datengesteuerter Strategien verwendet werden.
Wir möchten BaaS auf die Probe stellen, indem wir es auf Ihre Daten und Strategien anwenden. Wenn Sie auf der Suche nach schnellem und verteiltem Backtesting und datengesteuerter Strategieoptimierung sind, zögern Sie nicht, uns zu kontaktieren.
Verfasst von
Diederik Greveling
Unsere Ideen
Weitere Blogs
Contact



