Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 18 Min.

Algo Trading

Mit C#- oder Python-Apps auf der Plattform QuantConnect handeln.
© dotnetpro
Der algorithmische Handel [1], auch als Algo Trading bezeichnet, hat das Gesicht der Finanzmärkte im letzten Jahrzehnt revolutioniert. Die Fähigkeit, komplexe Handelsstrategien durch Algorithmen zu automatisieren, hat die Art und Weise, wie man mit Finanzmärkten interagiert, grund­legend verändert und eine neue Ära der Handelstechnologie eingeleitet. Mehr zum Begriff Algo Trading finden Sie im ­Kasten Computerhandel. Eine der führenden Open-Source-­Finanztechnologien für den elektronischen Handel mit Finanzinstrumenten ist QuantConnect [2].

Computerhandel

Automatisierter oder algorithmischer Handel (auch bekannt als Algorithmic Trading, Algo Trading, Black Box Trading oder Grey Box Trading) bezeichnet umgangssprachlich allgemein den automatischen Handel von verschiedenen Finanzinstrumenten wie zum Beispiel Wertpapieren, Devisen und Kryptowährungen durch Computerprogramme an einer Börse. Dabei entscheidet der Computeralgorithmus automatisch über die Ausführung und die Parameter des Auftrags. Diese Art des automatisierten Handels setzt an einer Börse ein elektronisches Handelssystem voraus.
QuantConnect ist eine Cloud-basierte, algorithmische Handelsplattform, die sowohl professionellen Händlern als auch Hobbyisten die Möglichkeit bietet, ihre eigenen Handels­algorithmen zu entwerfen, zu testen und zu implementieren. Mit einer ständig wachsenden Bibliothek von Daten aus verschiedenen Anlageklassen und Ländern sowie diversen Broker-Anbindungen bietet QuantConnect eine fortgeschrittene Entwicklungs-, Laufzeit- und Testing-Umgebung für alle denkbaren Handelsalgorithmen und gewährt darüber hinaus Zugriff auf eine Community von Quant-Profis, Analysten und Entwicklern [3].Dieser Artikel wirft einen tiefschürfenden Blick auf die QuantConnect-Plattform, von ihrer intuitiven Benutzeroberfläche über die Vielfalt der Datenquellen bis hin zum Implementieren und Optimieren eines eigenen Handelsalgorithmus. Zudem geht er auf die Auswirkungen des Algo-Handels auf die Finanzmärkte und die Rolle von Plattformen wie QuantConnect ein.

Vor- und Nachteile von Algo Trading

Der algorithmische Handel hat sehr viele Vorteile, gleichzeitig aber auch einige Nachteile, die beachtet werden sollten. Die wichtigsten Vorteile sind:
  • Geschwindigkeit und Effizienz. Handelsalgorithmen können Marktdaten in Echtzeit analysieren und Handelsentscheidungen innerhalb von Bruchteilen einer Sekunde treffen. Im Vergleich zum manuellen Handel ermöglicht dies eine schnellere Reaktion auf Marktbewegungen und eine effi­zientere Ausführung von Aufträgen.
  • Disziplin und Emotionslosigkeit. Handelsalgorithmen basieren auf vordefinierten Regeln und Parametern, die ohne emotionale Einflüsse oder menschliche Fehler angewendet werden. Dies hilft, disziplinierte Handelsentscheidungen zu treffen und potenziell unrentable Impulse oder übermäßige Risiken zu vermeiden.
  • Backtesting und Optimierung.Handelsalgorithmen können anhand historischer Daten getestet werden, um deren Leistung und Rentabilität zu bewerten. Durch das Backtesting [4] können Händler ihre Strategien optimieren, um bessere Ergebnisse zu erzielen, bevor sie sie im Live-Handel einsetzen.
  • Automatisierung und Skalierbarkeit. Algo Trading ermöglicht das Automatisieren von Handelsaktivitäten, was den Händlern Zeit und Aufwand spart. Darüber hinaus können Handelsalgorithmen auf mehreren Märkten und Instrumenten gleichzeitig eingesetzt werden, was eine hohe Skalierbarkeit ermöglicht.
  • Beseitigung menschlicher Fehler. Da Algo Trading auf vordefinierten Regeln basiert, werden menschliche Fehler, die zu Verlusten führen können, minimiert oder eliminiert. Handelsalgorithmen können konsistente und präzise Ausführungen gewährleisten, ohne von Emotionen oder impulsiven Entscheidungen beeinflusst zu werden.
Zu den Nachteilen des algorithmischen Handels zählen vor allem die folgenden Faktoren:
  • Technische Anforderungen und Komplexität. Algo Trading erfordert gewisse technische Kenntnisse und Programmierfähigkeiten. Die Entwicklung und Implementierung von Handelsalgorithmen erfordert Zeit, Forschung und gegebenenfalls kontinuierliche Anpassungen, die sich ändernde Marktbedingungen berücksichtigen.
  • Abhängigkeit von Datenqualität und -verfügbarkeit. Die Qua­lität und die Verfügbarkeit von Marktdaten sind entscheidend für den Erfolg algorithmischer Handelsstrategien. Mangelnde Datenqualität oder Verzögerungen können zu Fehlern in den Handelsalgorithmen führen und die Rentabilität beeinträchtigen.
  • Systemrisiken und technische Ausfälle. Algo Trading ist anfällig für Systemrisiken wie Hardware- oder Softwarefehler, Netzwerkausfall et cetera.
  • Overfitting. Das zugrunde liegende Handelsmodell kann überoptimiert / überangepasst sein (man spricht dabei von „Overfitting“). Beim Backtesting besteht die Gefahr der Überoptimierung darin, dass die Algorithmen perfekt an historische Daten angepasst werden. Dadurch kann jedoch die zukünftige Leistung beeinträchtigt werden, da die Handelsalgorithmen möglicherweise nicht auf neue Marktbedingungen reagieren können. Es ist wichtig, Backtesting-Ergebnisse mit Vorsicht zu interpretieren und die Robustheit der Strategien zu gewährleisten.
  • Unvorhergesehene Ereignisse. Handelsstrategien basieren beim Algo Trading auf vordefinierten Regeln und Parametern. Wenn unvorhergesehene Ereignisse eintreten, wie zum Beispiel plötzliche politische Entwicklungen oder überraschende wirtschaftliche Daten, können Handelsalgorithmen möglicherweise nicht angemessen reagieren. In solchen Situationen kann menschliches Eingreifen erforderlich sein, um Anpassungen vorzunehmen.
  • Wettbewerb und Latenzzeiten. Mit dem Anstieg des algorithmischen Handels nimmt auch der Wettbewerb zu. Große ­institutionelle Händler und Hedgefonds setzen ebenfalls auf algorithmische Handelsstrategien, was zu einer erhöhten Konkurrenz und möglicherweise zu höheren Latenzzeiten führen kann. Für kleine Trader oder individuelle Investoren kann es schwierig sein, mit den Geschwindigkeiten und Ressourcen großer Marktteilnehmer mitzuhalten. Aus diesem Grund ist der sogenannte Hochfrequenzhandel (High Frequency Trading) für kleine Trading-Firmen und Amateur-Investoren nicht empfehlenswert.
  • Systemrisiko. In extremen Marktbedingungen können algorithmische Handelssysteme dazu beitragen, die Volatilität zu verstärken oder sogar direkt unvorhersehbare Markt­bewegungen auszulösen. Ein Beispiel dafür ist der Flash-Crash von 2010, bei dem algorithmische Handelssysteme zu einem plötzlichen Einbruch der Aktienkurse führten. Solche Ereignisse demonstrieren die potenzielle Anfälligkeit des algorithmischen Handels für systemische Risiken auf dem Finanzmarkt.
Es ist wichtig, die Vor- und Nachteile abzuwägen und sicherzustellen, dass der algorithmische Handel auf die individuellen Bedürfnisse und Fähigkeiten eines Traders abgestimmt ist. Eine Kombination aus algorithmischem und manuellem Handel kann eine effektive Strategie sein, um die Vorteile des algorithmischen Handels zu nutzen und gleichzeitig menschliche Intuition und Anpassungsfähigkeit einzubeziehen.

Die QuantConnect-Architektur

Die Architektur von QuantConnect in der Cloud (Bild 1) ist darauf ausgelegt, eine flexible und skalierbare Plattform für den algorithmischen Handel bereitzustellen. Sie besteht aus mehreren Teilen und Komponenten, die zusammenarbeiten, um Benutzern das Erstellen und Testen sowie die Bereitstellung und Live-Ausführung von Handelsstrategien zu ermöglichen.
QuantConnectCloud-Plattform(Bild 1) © Autor
Bei einem Blick auf die Architektur der QuantConnect-Plattform sollte man die nachfolgend beschriebenen wichtigen Elemente besonders beachten.QuantConnect Cloud. Die QuantConnect Cloud [2] bildet die Kerninfrastruktur der Plattform. Sie bietet eine sichere und skalierbare Umgebung, auf die Benutzer via Webbrowser zugreifen und alle wichtigen Funktionen von QuantConnect wie Kommunikation, Forschung, Entwurf sowie Implementierung, Backtesting und schließlich Live-Bereitstellung und Live-Trading nutzen können. Die Cloud-Infrastruktur gewährleistet hohe Verfügbarkeit, Zuverlässigkeit und Leistung, sodass Benutzer ihre Algorithmen effizient, stabil und performant ausführen können.Finanzdaten-Anbieter. QuantConnect integriert mehrere Anbieter von Finanzdaten [5], um Benutzern eine Vielzahl von Marktdaten zur Verfügung zu stellen. Diese Datenanbieter liefern historische und Echtzeit-Marktdaten für verschiedene Finanzinstrumente wie etwa Aktien, Optionen, Futures, Devisen, CFDs, Kryptowährungen et cetera [6]. Benutzer können auf diese Daten für Backtesting, Strategieentwicklung und Live-Handel zugreifen.LEAN-Algorithmus-Engine. Im Herzen von QuantConnect ­befindet sich die leistungsstarke LEAN-Algorithmus-Engine. Dabei handelt sich um ein C#-Open-Source-Projekt [7], das sowohl die QuantConnect-Cloud-Plattform als auch On-Premise-Trading-Lösungen [8] als leistungsstarker „Laufzeitmotor“ unterstützt. Die Engine ermöglicht es Benutzern, ihre Handelsstrategien mit Code zu definieren und auszuführen. Sie unterstützt mehrere Programmiersprachen, darunter C#, Python und F#. Man kann seine bevorzugte Sprache nutzen, um eigene Algorithmen zu implementieren. Die Algorithmus-Engine bietet Zugriff auf eine umfangreiche Sammlung von APIs und Bibliotheken, mit denen Benutzer mit Marktdaten interagieren, Trades ausführen und Positionen verwalten können.Algorithm Lab ist eine Cloud-basierte Forschungs- und Entwicklungsumgebung, in der Benutzer ihre Handelsideen erkunden, entwickeln und testen können [9]. Diese Umgebung umfasst Tools für Datenanalyse, Backtesting und Optimierung. Benutzer können auf historische Daten zugreifen, statistische Analysen durchführen und die Leistung ihrer Algorithmen mithilfe anspruchsvoller Metriken und Visualisierungstools bewerten. Bei der Forschungsumgebung (Research Environment) handelt es sich um ein Jupyter-Notebook [10] für die jeweilige Zielsprache, und die Entwicklungsumgebung besteht in einer angepassten Web-Version von VS Code [11].Strategie-Bibliotheken. Nebst eigenen Trading-Algorithmen können QuantConnect-User auf eine umfangreiche Bib­liothek von Handelsalgorithmen zugreifen, die von QuantConnect selbst oder von der Community beigetragen wurden [12]. Zusätzlich gibt es unter [13] eine Sammlung von Live-Algorithmen (auch bekannt als Alphas) sowie bei Quantpedia [14] eine Strategie-Sammlung. Diese Strategie-Bibliotheken dienen Benutzern als wertvolle Ressource und liefern vorgefertigte Algorithmen, die als Ausgangspunkt und Inspiration für die Entwicklung eigener Strategien dienen können. Man kann per Knopfdruck ausgewählte interessante Trading-Algorithmen aus der jeweiligen Strategie-Bibliothek in die eigene Cloud-Entwicklungsumgebung klonen.Brokerage-Integration. QuantConnect bietet Integrationen mit verschiedenen Brokerage-Plattformen [15], die es Benutzern ermöglichen, Trades direkt auf der Plattform auszuführen. Benutzer können ihre Brokerage-Konten mit QuantConnect verbinden und so eine nahtlose Echtzeit-Orderausführung möglich machen.QuantConnect-Community. QuantConnect fördert eine lebhafte Community von Tradern, Entwicklern und Datenwissenschaftlern (Quants). Benutzer können über das QuantConnect-Forum mit der Community interagieren und haben so die Möglichkeit, Unterstützung zu suchen, Ideen zu teilen und Handelsstrategien zu diskutieren.Live-Trading. Bietet eine nahtlose Integration mit verschiedenen Brokerage-Plattformen, sodass Benutzer ihre Handels­algorithmen direkt im Live-Handel einsetzen können. Durch die Verbindung eines QuantConnect-Kontos mit einem Brokerage-Konto können Benutzer Handelsaufträge automatisch und in Echtzeit ausführen. Dies ermöglicht ihnen, ­ihre Strategien unter den tatsächlichen Marktbedingungen zu testen und potenzielle Gewinne zu erzielen. Die Live-Trading-Integration von QuantConnect bietet Benutzern eine bequeme und effiziente Möglichkeit, ihre Algorithmen auf vielen Handelsmarktplätzen in Echtzeit (Live) auszuführen.Backtesting. Ein entscheidender Bestandteil der QuantConnect-Architektur ist das Backtesting-Framework. Benutzer können historische Marktdaten verwenden, um ihre Handels­algorithmen auf vergangene Marktbedingungen anzuwenden und deren Leistung zu bewerten. Das Backtesting ermöglicht es Benutzern, die Rentabilität ihrer Strategien zu analysieren, potenzielle Risiken zu identifizieren und ihre Algorithmen zu optimieren. QuantConnect bietet leistungsstarke Optimierungswerkzeuge, die es Benutzern erlauben, verschiedene Strategieparameter gegen umfangreiche historische Daten zu optimieren. Dies ermöglich den Benutzern, ihre Algorithmen vor dem Einsatz im Live-Handel gründlich zu prüfen und anzupassen.Insgesamt erlaubt es die Architektur von QuantConnect Benutzern, anspruchsvolle Handelsstrategien zu entwickeln und umzusetzen, während sie die Vorteile von Daten, Technologie und gemeinschaftlicher Zusammenarbeit nutzen. Die Kombination von Live-Trading und Backtesting ermöglicht es Benutzern, ihre Handelsstrategien anhand historischer Daten zu testen, sie zu optimieren und sie dann im Live-Handel auszuführen. Dieser ganzheitliche Ansatz gewährleistet, dass Benutzer ihre Algorithmen gründlich prüfen und optimieren, bevor sie reale finanzielle Risiken eingehen. Sowohl Live-Trading als auch Backtesting sind essenzielle Komponenten der QuantConnect-Architektur, die Benutzern helfen, fundierte und gut getestete Handelsentscheidungen auf dem Finanzmarkt zu treffen.

Lebenszyklus einer Algo-Trading-Strategie

Eine Algo-Trading-Strategie durchläuft verschiedene Phasen im Lebenszyklus, angefangen von der Konzeption bis hin zur Implementierung und Überwachung (Bild 2).
LebenszykluseinerAlgo-Trading-Strategie(Bild 2) © Autor
Jede Phase spielt eine wichtige Rolle bei der Entwicklung einer robusten und rentablen Handelsstrategie. Man darf folgende wichtige Meilensteine im Lebenszyklus einer Algo-Trading-Strategie hervorheben:
  • Konzeption. In der Konzeptionsphase werden die Grundlagen der Handelsstrategie festgelegt. Dies umfasst das Identifizieren von Handelszielen, die Auswahl der Märkte und Instrumente, des Strategietyps [16] und der Strategieart (etwa Trendfolge, Mean Reversion, Arbitrage) und das Festlegen von Risiko- und Renditezielen. Während dieser Phase werden auch grundlegende Annahmen und Hypothesen über den Markt und seine Verhaltensweisen getroffen.
  • Design. Im Designprozess werden die spezifischen Regeln und Bedingungen festgelegt, nach denen die Handelsstrategie funktioniert. Dies umfasst die Bestimmung der Handelssignale, der Ausstiegsstrategien und der Risikomanagementparameter. Das Design berücksichtigt auch technische und praktische Aspekte wie die Handelsplattform, die Programmiersprache und die Datenquellen, die für die Implementierung der Strategie verwendet werden sollen.
  • Entwicklung. In der Entwicklungsphase findet die Umsetzung der strategischen Konzepte in einen ausführbaren Algorithmus statt. Die Programmierung erfolgt in einer geeigneten Programmiersprache (C# oder Python). Dabei werden Handelsregeln und -logik implementiert sowie die Datenintegration und -verarbeitung durchgeführt. Während der Entwicklung werden auch Verfahren zur Fehlerbehandlung und zum Debugging eingeführt.
  • Backtesting. Im Backtesting werden die entwickelten Algorithmen anhand historischer Marktdaten getestet, um die Leistung der Strategie unter vergangenen Marktbedingungen zu bewerten. Ein Beispiel: Weist ein Handels-Algorithmus gute Performance-Metriken für die zurückliegenden fünf Jahre auf, geht man davon aus, dass der getestete Algorithmus auch in Zukunft profitabel arbeitet. Dies ermöglicht es, die Rentabilität, das Risiko und andere statistische Kennzahlen zu analysieren. Backtesting erlaubt zudem, die Auswirkungen von Parameteränderungen, Filtern und Handelsregeln zu untersuchen, um die Strategie zu optimieren und zu verfeinern.
  • Optimierung. Die Optimierungsphase beinhaltet die Feinabstimmung der Handelsstrategie, um die besten Ergebnisse zu erzielen. Dazu gehören das Anpassen von Parametern, Filtern oder Handelsregeln, um die Rentabilität zu maximieren und das Risiko zu minimieren. Es ist wichtig, während der Optimierung auf ein eventuelles Überoptimieren (Overfitting) zu achten, bei dem die Strategie zu sehr auf historische Daten abgestimmt wird und möglicherweise in zukünftigen Marktbedingungen nicht mehr effektiv und/oder zu riskant ist und als Folge davon zu geringeren Gewinnen oder gar zu Verlusten führen könnte.
  • Live-Trading. Nach Abschluss der Entwicklungs- und Optimierungsphasen wird die Strategie für den Live-Handel bereitgestellt. Dies umfasst die Integration der implementierten und getesteten Strategie in eine Handelsplattform und die Verbindung mit einem Brokerage-Konto, um die Ausführung von Trades in Echtzeit zu ermöglichen. In der Live-Trading-Phase empfiehlt es sich, zuerst für gewisse Zeit Live-Trading-Tests auf einem Demokonto durchzuführen, um die Funktionalität und Performance der Trading-Strategie unter realen Marktbedingungen zu überprüfen, bevor man mit echtem Geld zu handeln beginnt.
  • Überwachung und Anpassung. Nachdem eine Strategie im Live-Trading bereitgestellt ist und ausgeführt wird, ist es wichtig, sie kontinuierlich zu überwachen und anzupassen. Dies umfasst das regelmäßige Überprüfen der Handelsergebnisse, die Analyse von Performance-Kennzahlen, das Monitoring von Marktentwicklungen und das Identifizieren von Anpassungsbedarf. Basierend auf den gesammelten Daten können Anpassungen an den Handelsparametern vorgenommen werden.
  • Bewertung und Weiterentwicklung. Eine regelmäßige Bewertung der Strategie ist essenziell, um ihre langfristige Rentabilität zu gewährleisten. Dies umfasst die Analyse von Handelsprotokollen, Performance-Berichten und statistischen Metriken, um Stärken und Schwächen der Strategie zu identifizieren. Basierend auf diesen Erkenntnissen kann die Strategie weiterentwickelt, optimiert und an sich ändernde Marktbedingungen angepasst werden. Es ist dennoch wichtig, optimale Bewertungsperioden festzulegen – zum Beispiel monatlich, jährlich und so weiter –, sonst steigt die Gefahr einer Überanpassung (Overfitting – viel zu oft bewertet) oder Unteranpassung (Underfitting – zu wenig bis gar nicht bewertet). Man sollte versuchen in der „goldenen Mitte“ zu bleiben, das heißt, das optimale Trading-Modell wäre spezifisch genug, um dem vergangenen Trend eines Finanzinstruments zu folgen, und gleichzeitig generisch genug, um auch noch in der Zukunft aussagekräftig genug zu sein.
  • Beendigung oder Fortführung. Im Lauf der Zeit kann es notwendig werden, eine Algo-Trading-Strategie zu beenden, wenn sie nicht mehr rentabel oder effektiv ist. Alternativ kann eine erfolgreiche Strategie weitergeführt und möglicherweise auf andere Märkte oder Instrumente ausgeweitet werden. Die Entscheidung, eine Strategie fortzuführen oder zu beenden, basiert auf einer umfassenden Analyse der Performance in der Vergangenheit und darauf basierenden Vorhersagen für die zukünftigen Erfolgschancen.
  • Risikomanagement und Risikokontrolle. Während des gesamten Lebenszyklus der Trading-Strategie ist ein effektives Risikomanagement von entscheidender Bedeutung. Denn wie die statistischen Daten zeigen: Dauerhaft profitabel sind solche Strategien, die in erster Linie das ins Trading investierte Kapital schützen, das heißt mögliche Verluste vermeiden beziehungsweise minimieren und erst dann etwas dazuverdienen. Genau darüber hat der weltberühmte Investor Warren Buffet gesprochen, als er einmal sagte: „The first rule of an investment is don’t lose [money]. And the second rule of an investment is don’t forget the first rule. And that’s all the rules there are.“ Ein Risikomanagement kann zum Beispiel durch Risikoparameter wie Positionsgröße (zum Beispiel maximal ein Prozent des Kapitals in einen Trade investieren) und maximale Verlustgrenzen (zum Beispiel Stop-Loss-Wert) realisiert werden.
Der Lebenszyklus einer Algo-Trading-Strategie ist ein iterativer Prozess, der fortlaufende Analyse, Anpassung und Optimierung erfordert. Es ist wichtig, jede Phase sorgfältig zu durchlaufen und die Strategie basierend auf den gesammelten Daten und Erfahrungen anzupassen, um langfristigen Erfolg zu gewährleisten. Durch eine systematische Vorgehensweise kann man die Handelsstrategien kontinuierlich verbessern und an sich ändernde Marktbedingungen anpassen.Nun, da eine allgemeine Vorstellung über Algo Trading und die QuantConnect-Plattform besteht, ist es Zeit, zum praktischen Teil überzugehen und Algo Trading auszuprobieren.

Lab 1: Einrichtung und Übersicht

Zunächst können Sie sich auf der QuantConnect-Plattform kostenlos registrieren [17] und anmelden [18]. Für die Labs dieses Artikels genügt die kostenlose Variante. Damit können Sie über die QuantConnect-Cloud-Umgebung auf viele Finanzdaten zugreifen, Handelsstrategien in Form von C#- oder Python-Algorithmen umsetzen und anschließend die Backtests dafür durchführen. Eine der kostenpflichtigen Varianten ist erst dann erforderlich, wenn Live-Trading auf einer gehostete Server-Instanz benötigt wird und/oder Trading-Algorithmen in einer On-Premise-Umgebung entwickelt und ausgeführt werden sollen beziehungsweise wenn Team- oder institutionelle Arbeit anstehen.Im nächsten Schritt wird die bevorzugte Sprache für die Entwicklung vom Trading-Algorithmen eingerichtet – C# oder Python. Dafür genügt ein Klick auf den Profilnamen im horizontalen Menü an der rechten oberen Ecke und ein weiterer Klick auf My Account(Bild 3). In der Mitte der Seite erfolgt dann die Sprachauswahl. Auf der gleichen Einrichtungsseite wählen Sie das dunkle oder das helle Farbschema.
Anpassungsfälleeines Trading-Modells(Bild 3) © Autor
Auswahlder Standard-Programmiersprache(Bild 3) © Autor
Zusätzlich dazu lässt sich über Change Profile Image das Profilbild ändern, via My Profile die Bio anpassen und mit Change Password das Anmeldekennwort ändern. Darüber hinaus liefert das horizontale Menü noch die nachfolgenden Optionen:
  • Über den Punkt Pricing – [19] lassen sich kostenpflichtige Dienste buchen. Neben dem kostenlosen Free Plan gibt es die Pläne Quant Researcher, Team, Trading Firm sowie Institution.
  • Der Punkt Strategies präsentiert diverse im Live-Trading laufende Strategien – benutzerspezifische sowie Strategiemuster von QuantConnect für verschiedene Finanzinstrumente. Man kann dort eigene Strategien verwalten sowie die Musterstrategien anschauen/analysieren, klonen und unverändert oder angepasst backtesten und dann gegebenenfalls in der Live-Trading-Umgebung ausführen.
  • Der Punkt Forum ist der Platz, an dem alle Neuigkeiten, Tipps und Tricks sowie Unterhaltungen zu diversen Themen zu finden sind. Hier können Anfänger ihre Fragen stellen sowie erfahrene Quants [20] ihre Ideen und/oder Trading-Strategien mit der Öffentlichkeit teilen.
  • Unter Data finden Sie eine große Auswahl an Datenquellen für diverse Finanzinstrumente wie Aktien, Kryptowährungen, Devisen-Paare et cetera. Klickt man auf eines der Datenquellensymbole, öffnet sich eine spezifische Seite mit allgemeinen Informationen, Codebeispielen sowie Informationen zu Lizenzen und Preisen. Die Cloud-Variante von QuantConnect stellt viele Datenquellen kostenfrei zur Verfügung.
  • Unter Docs finden Sie die umfangreiche Dokumentation zu allen relevanten Themen, unter anderem auch zur LEAN-Engine [7], der interaktiven Jupyter-Umgebung [10] und dem LEAN CLI [21], einer plattformübergreifenden Kommandoschnittstelle, die es einfacher macht, mit der LEAN-Engine lokal und in der Cloud zu entwickeln.
  • Algorithm Lab (Lab) ist die Projekte-Hauptseite, auf der man einen neuen Algorithmus erstellen (Create New Algorithm), einen bestehenden öffnen (Open Project) sowie laufende Strategien erkunden kann (Explore Strategies).
Zusätzlich gibt es ein bequemes und zusammenklappbares vertikales Menü (Bild 4), das folgende Punkte bietet:
Das Hauptmenüim Algorithm Lab(Bild 4) © Autor
  • Projects: die Projekt-Hauptseite.
  • Organization: Dient zur Kontoverwaltung. Members verweist auf benutzerspezifische Lernmaterialien (Courses) und Zahlungsinformationen (Billing).
  • Learning Center: Beinhaltet diverse Video-Kurse. Über den dortigen Articles-Link gelangt man zu einer Seite mit Artikeln zu diversen Themen, etwa zur Investment Strategy Library, zu Financial Python oder zu Alternative Data.
  • Data: Die Datenquellen-Seite.
  • Strategies: Strategien für das Live-Trading.
  • Support: Hier kann man Support-Tickets erstellen und verwalten. Alle drei Support-Features (Bronze, Silver und Gold) sind kostenpflichtig.

Lab 2: Schnellstart

Bevor Sie mit diesem Schnellstart weitermachen, sollten Sie sich mit den grundlegenden Konzepten des Algo Trading und mit der QuantConnect-Cloud-Plattform bereits eingehend beschäftigt haben. Ist das der Fall, dann können Sie daran gehen, Ihren ersten Trading-Algorithmus zu erstellen, anhand von Vergangenheitsdaten zu testen und vielleicht sogar schon im Live-Trading auszuführen. Dafür sind folgende Aktionen erforderlich:Loggen Sie sich in QuantConnect ein und wechseln Sie zur Projects-Seite im Algorithm-Lab [9]. Im Bereich Start klicken Sie auf Create New Algorithm.Auf der nächsten Seite Choose a Template wählen Sie die Standard-Vorlage (Default Template) aus. Alternativ können Sie eine Vorlage einer der im Live-Trading laufenden Muster-Strategien auswählen – dort geschieht das im Bereich Use Strategy Explorer Template). Dann wird mit der gewählten Vorlage ein neues Projekt erstellt, vergleiche Bild 5.
Entwicklungder Lab-1–Strategie BuyAndHold_1(Bild 5) © Autor
Nun ändern Sie den Projektnamen in BuyAndHold_1, indem Sie den Projektnamen mit dem Mauszeiger auswählen und dann auf Edit Project-Icon klicken. Sie können ein Projekt jederzeit öffnen, indem Sie in im vertikalen Menü links Projects anklicken und dann auf der Projects-Seite Open Project wählen.Jetzt wird das aktuelle Projekt erstellt – dafür klicken Sie auf das Build-Icon (Bild 5). In der Cloud-IDE von QuantConnect entfällt dieser Schritt, weil die Projekte nach jeder Änderung automatisch erstellt werden.Den Backtest starten Sie, indem Sie auf das Run-Icon klicken. Dadurch wird das aktuelle Projekt übersetzt, bereitgestellt und als Backtest ausgeführt. In Bild 6 sehen Sie ein mögliches Ergebnis des Backtests.
Backtest-Ergebnisder Lab-1–Strategie BuyAndHold_1(Bild 6) © Autor
Mithilfe der Schaltfläche Optimitze (Bild 5) können Sie die Algorithmus-Parameter optimieren. Diese Aktion ist jedoch kostenpflichtig und optional.Mit der Schaltfläche Live können Sie das aktuelle Projekt entweder für sogenanntes Paper-Trading (virtuelles Trading auf der QuantConnect-Plattform) oder für das echte Live-Trading bei einem passenden Broker [15] bereitstellen. Folgen Sie dabei den weiteren Hinweisen auf der Seite zur Live-Bereitstellung und lesen Sie das zugehörige Kapitel in der Dokumentation [22].Auch die Live-Bereitstellung ist kostenpflichtig und funktioniert daher nicht mit einem kostenfreien QuantConnect-Konto. Außerdem muss man für das Live-Trading ein Konto bei einem geeigneten Broker anlegen. Über die Schaltfläche Backtests lässt sich eine Liste von bereits durchgeführten Backtests aufrufen.Wie Sie in Bild 5 und Listing 1 sehen, wird ein Trading-Algorithmus von der Basisklasse QCAlgorithm abgeleitet. Diese Klasse hat eine virtuelle Initialize-Methode, in der alle Parameter, Objekte und Daten initialisiert werden können. Außerdem gibt es den Eventhandler OnData, welcher der primäre Einstiegspunkt für den Trading-Algorithmus ist. Jeder neue Datenpunkt wird hier mit bestimmter Regelmäßigkeit (Resolution.Minute) aktualisiert, so kommen im Beispiel jede Minute „frische“ Daten für die gewählten Items (hier AAPL, SPY und BND) und man kann darauf reagieren. Die aktuelle Variante aus Listing 1 reagiert allerdings noch nicht auf neue Daten. Die Strategie Buy&Hold kauft, sofern noch nicht investiert wurde, und hält die Titel dann, ohne weitere Aktionen durchzuführen.

Lab 3: Aktives Handeln

Listing 1: Strategie BuyAndHold_1 (C#-Variante)
#region imports ... <br/>namespace QuantConnect.Algorithm.CSharp <br/>{ <br/>  public class BuyAndHold1 : QCAlgorithm <br/>  { <br/>    public override void Initialize() { <br/>      SetStartDate(<span class="hljs-number">2021</span>, <span class="hljs-number">12</span>, <span class="hljs-number">28</span>);  //<span class="hljs-keyword">Set</span> Start Date <br/>      SetCash(<span class="hljs-number">100000</span>);            //<span class="hljs-keyword">Set</span> <span class="hljs-keyword">Strategy</span> Cash <br/>      // add S&P <span class="hljs-number">500</span> ETF<br/>      AddEquity(<span class="hljs-string">"SPY"</span>, Resolution.Minute);  <br/>      // add Vanguard Bond ETF<br/>      AddEquity(<span class="hljs-string">"BND"</span>, Resolution.Minute);  <br/>      // add Apple Inc.<br/>      AddEquity(<span class="hljs-string">"AAPL"</span>, Resolution.Minute);  <br/>    } <br/>    public override void OnData(Slice data) <br/>    { <br/>      <span class="hljs-keyword">if</span> (!Portfolio.Invested) <br/>      { <br/>        // invest <span class="hljs-number">1</span>/<span class="hljs-number">3</span> <span class="hljs-built_in">in</span> S&P <span class="hljs-number">500</span> ETF<br/>        SetHoldings(<span class="hljs-string">"SPY"</span>, <span class="hljs-number">0.33</span>); <br/>        // invest <span class="hljs-number">1</span>/<span class="hljs-number">3</span> <span class="hljs-built_in">in</span> Vanguard Bond ETF<br/>        SetHoldings(<span class="hljs-string">"BND"</span>, <span class="hljs-number">0.33</span>);  <br/>        // invest <span class="hljs-number">1</span>/<span class="hljs-number">3</span> <span class="hljs-built_in">in</span> Apple Inc.<br/>        SetHoldings(<span class="hljs-string">"AAPL"</span>, <span class="hljs-number">0.33</span>); <br/>      } <br/>    } <br/>  } <br/>}  
Eine schlichte Buy&Hold-Strategie bräuchte freilich keine Automatisierung mit einem Algo-Trading-Algorithmus. Dieses Lab geht deshalb einen Schritt weiter zum aktiven Handeln. Dafür sind folgende Schritte durchzuführen:Als Beispiel dient die EMA Crossover Strategy. Sie wird ausgewählt, indem Sie den Link unter [23] im Browser öffnen und auf den Button Clone Algorithm klicken.Wählen Sie die Datei main.py aus und setzen Sie einen Breakpoint fürs Debuggen, vergleiche Bild 7 und Listing 2.
Debuggender Strategie EMA-Crossover(Bild 7) © Autor
Listing 2: Code zur Strategie EMA-Crossover (Python)
from AlgorithmImports import * <br/><br/>class EmaCrossoverAlgo(QCAlgorithm): <br/>  def Initialize(<span class="hljs-keyword">self</span>): <br/>    <span class="hljs-keyword">self</span>.SetStartDate(<span class="hljs-number">2022</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>) # start date <br/>    <span class="hljs-keyword">self</span>.SetEndDate(<span class="hljs-number">2022</span>, <span class="hljs-number">12</span>, <span class="hljs-number">31</span>) # end date <br/>    <span class="hljs-keyword">self</span>.SetCash(<span class="hljs-number">10_000</span>) # trading capital <span class="hljs-number">10.000</span> $ <br/>    <span class="hljs-keyword">self</span>.stopLoss = -<span class="hljs-number">300</span> # stop loss at <span class="hljs-number">3</span>% of trading <br/>                        # capital <br/>    <span class="hljs-keyword">self</span>.Ticker = <span class="hljs-string">"SPY"</span>  # SPDR S&P <span class="hljs-number">500</span> ETF Trust <br/><br/>    <span class="hljs-keyword">self</span>.Symbol = <span class="hljs-keyword">self</span>.AddEquity(<span class="hljs-keyword">self</span>.Ticker, \<br/>      Resolution.Hour).Symbol <br/>    <span class="hljs-keyword">self</span>.EMA_Fast = <span class="hljs-keyword">self</span>.EMA(<span class="hljs-keyword">self</span>.Symbol,<span class="hljs-number">50</span>, \<br/>      Resolution.Hour) # EMA Indicator (fast) <br/>    <span class="hljs-keyword">self</span>.EMA_Slow = <span class="hljs-keyword">self</span>.EMA(<span class="hljs-keyword">self</span>.Symbol,<span class="hljs-number">100</span>, \<br/>      Resolution.Hour) # EMA Indicator (slow) <br/>    <span class="hljs-keyword">self</span>.Tolerance = <span class="hljs-number">0.0015</span> # cross-over tolerance <br/><br/>    # get buy&hold param <br/>    <span class="hljs-keyword">self</span>.BuyAndHoldParam = False <br/>    <span class="hljs-keyword">self</span>.BuyAndHoldParam = <span class="hljs-keyword">self</span>.GetParameter( \<br/>      <span class="hljs-string">"Buy_and_Hold"</span>, <span class="hljs-string">"False"</span>) == <span class="hljs-string">"True"</span> <br/><br/>  def OnData(<span class="hljs-keyword">self</span>, data): <br/>    # <span class="hljs-keyword">return</span> <span class="hljs-keyword">if</span> indicators aren<span class="hljs-symbol">'t</span> ready  <br/>    <span class="hljs-keyword">if</span> not <span class="hljs-keyword">self</span>.EMA_Slow.IsReady or not \<br/>      <span class="hljs-keyword">self</span>.EMA_Fast: <br/>      <span class="hljs-keyword">return</span> <br/><br/>    <span class="hljs-keyword">if</span> <span class="hljs-keyword">self</span>.BuyAndHoldParam: <br/>      # buy and hold mode <br/>      <span class="hljs-keyword">if</span> not <span class="hljs-keyword">self</span>.Portfolio.Invested: # one-time buy <br/>    <span class="hljs-keyword">if</span> not invested <br/>        <span class="hljs-keyword">self</span>.SetHoldings(<span class="hljs-keyword">self</span>.Symbol, <span class="hljs-number">1</span>) <br/>      <span class="hljs-keyword">return</span> <br/>    <span class="hljs-keyword">else</span>: <br/>      # make trades <br/>      holdings = <span class="hljs-keyword">self</span>.Portfolio[<span class="hljs-keyword">self</span>.Symbol].Quantity <br/>      <span class="hljs-keyword">if</span> holdings <= <span class="hljs-number">0</span>: <br/>        # go long (buy) <span class="hljs-keyword">if</span> fast EMA-Indicator crosses<br/>        # above slow one <br/>        <span class="hljs-keyword">if</span> <span class="hljs-keyword">self</span>.EMA_Fast.Current.Value > \<br/>          <span class="hljs-keyword">self</span>.EMA_Slow.Current.Value * \<br/>          ( <span class="hljs-number">1</span> + <span class="hljs-keyword">self</span>.Tolerance): <br/>          <span class="hljs-keyword">self</span>.Debug(f<span class="hljs-string">"BUY  >> {self.Securities[ \</span><br/><span class="hljs-string">            self.Symbol].Price}"</span>) <br/>          <span class="hljs-keyword">self</span>.SetHoldings(<span class="hljs-keyword">self</span>.Symbol, <span class="hljs-number">1</span>) <br/>      <span class="hljs-keyword">else</span>:      <br/>        # go short (sell) <span class="hljs-keyword">if</span> fast EMA-Indicator <br/>        # crosses below slow one <br/>        <span class="hljs-keyword">if</span> <span class="hljs-keyword">self</span>.EMA_Fast < <span class="hljs-keyword">self</span>.EMA_Slow: <br/>          <span class="hljs-keyword">self</span>.Debug(f<span class="hljs-string">"SELL  >> {self.Securities[ \</span><br/><span class="hljs-string">            self.Symbol].Price}"</span>) <br/>          <span class="hljs-keyword">self</span>.SetHoldings(<span class="hljs-keyword">self</span>.Symbol, -<span class="hljs-number">1</span>) <br/>      <br/>      # Risk management: <br/>      # liquidate open position <span class="hljs-keyword">if</span> unrealized profit <br/>      # is greater then Stop-Loss value <br/>      <span class="hljs-keyword">if</span> <span class="hljs-keyword">self</span>.Portfolio[<span class="hljs-keyword">self</span>.Symbol]. \<br/>        UnrealizedProfit <= <span class="hljs-keyword">self</span>.stopLoss: <br/>        <span class="hljs-keyword">self</span>.Debug(f<span class="hljs-string">"Stop loss at {self.Securities[ \</span><br/><span class="hljs-string">          self.Symbol].Price}"</span>) <br/>        <span class="hljs-keyword">self</span>.Liquidate()  
Nun debuggen Sie den Algorithmus (Button Debug Project) und führen einen Backtest mit dem Parameter Buy_and_Hold=True durch. Als Ergebnis fürs letzte Jahr liefert der Test rund neun Prozent Verlust, siehe Bild 8.
Backtest-Ergebniszur passiven Strategie EMA-Crossover(Bild 8) © Autor
Debuggen und testen Sie den Algorithmus nun erneut, diesmal aber mit dem Parameter Buy_and_Hold=False. Das Ergebnis für das letzte Jahr liefert diesmal rund 15 Prozent Profit, siehe Bild 9 und Bild 10. Offensichtlich kann aktives Handeln durchaus profitabler sein als das einfache Halten von Finanzinstrumenten.
Backtest-Ergebniszur aktiven Strategie EMA-Crossover(Bild 9) © Autor
Ergebnismerkmalezur aktiven Strategie EMA-Crossover(Bild 10) © Autor
Wiederholen Sie nun das Klonen und Debuggen für die einfache Bitcoin-Strategie unter [24]. Hier sieht man wie einfach ein Trading-Algorithmus sein kann (Listing 3), wenn man das QuantConnect Algorithm Framework [25] verwendet.
Listing 3: Einfache Bitcoin-Strategie (Python)
<span class="hljs-selector-tag">from</span> <span class="hljs-selector-tag">AlgorithmImports</span> <span class="hljs-selector-tag">import</span> * <br/><br/><span class="hljs-selector-tag">class</span> <span class="hljs-selector-tag">DualThrustAlgorithm</span>(<span class="hljs-selector-tag">QCAlgorithm</span>): <br/><br/>  <span class="hljs-selector-tag">def</span> <span class="hljs-selector-tag">Initialize</span>(<span class="hljs-selector-tag">self</span>): <br/>    # <span class="hljs-selector-tag">set</span> <span class="hljs-selector-tag">date</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.SetStartDate</span>(2021, 10 , 1) <br/>    # <span class="hljs-selector-tag">set</span> <span class="hljs-selector-tag">trade</span> <span class="hljs-selector-tag">cash</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.SetCash</span>(1_000_000) <br/>    # <span class="hljs-selector-tag">set</span> <span class="hljs-selector-tag">brokerage</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.SetBrokerageModel</span>(<span class="hljs-selector-tag">BrokerageName</span><span class="hljs-selector-class">.GDAX</span>, \<br/>      <span class="hljs-selector-tag">AccountType</span><span class="hljs-selector-class">.Cash</span>) <br/>    # <span class="hljs-selector-tag">add</span> <span class="hljs-selector-tag">crypto</span> <span class="hljs-selector-tag">symbol</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.AddCrypto</span>("<span class="hljs-selector-tag">BTCUSD</span>", <span class="hljs-selector-tag">Resolution</span><span class="hljs-selector-class">.Minute</span>) <br/>    # <span class="hljs-selector-tag">add</span> <span class="hljs-selector-tag">trading</span> <span class="hljs-selector-tag">alpha</span> <span class="hljs-selector-tag">models</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.AddAlpha</span>(<span class="hljs-selector-tag">RsiAlphaModel</span>()) <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.AddAlpha</span>(<span class="hljs-selector-tag">EmaCrossAlphaModel</span>()) <br/>    # <span class="hljs-selector-tag">set</span> <span class="hljs-selector-tag">portfolio</span> <span class="hljs-selector-tag">construction</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.SetPortfolioConstruction</span>( \<br/>      <span class="hljs-selector-tag">EqualWeightingPortfolioConstructionModel</span>()) <br/><br/>    # <span class="hljs-selector-tag">set</span> <span class="hljs-selector-tag">risk</span> <span class="hljs-selector-tag">management</span> <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.AddRiskManagement</span>( \<br/>      <span class="hljs-selector-tag">MaximumDrawdownPercentPerSecurity</span>(0<span class="hljs-selector-class">.3</span>)) <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.AddRiskManagement</span>( \<br/>      <span class="hljs-selector-tag">MaximumUnrealizedProfitPercentPerSecurity</span>(0<span class="hljs-selector-class">.5</span>))<br/>    # <span class="hljs-selector-tag">set</span> <span class="hljs-selector-tag">execution</span> <span class="hljs-selector-tag">model</span>  <br/>    <span class="hljs-selector-tag">self</span><span class="hljs-selector-class">.SetExecution</span>(<span class="hljs-selector-tag">ImmediateExecutionModel</span>()) 
Wiederholen Sie das Klonen und Debuggen noch einmal für die Short Time Reversal Strategy [28]. In diesem Beispiel gibt es ein Portfolio von mehreren Finanzinstrumenten, die nach Dollar-Volumen sortiert sind und täglich gehandelt werden. Listing 4 zeigt einen Auszug des Python-Codes dazu, und unter [26] oder in der Datei main.py des daraus geklonten Projekts finden Sie den kompletten Code dazu.
Listing 4: Strategie Short Time Reversal (Python, Auszug)
#region imports <br/><span class="hljs-keyword">from</span> AlgorithmImports import * <br/>#endregion <br/><span class="hljs-keyword">class</span> ShortTimeReversal(QCAlgorithm): <br/>  def Initialize(<span class="hljs-keyword">self</span>): <br/>    ... <br/>    <span class="hljs-keyword">self</span>.UniverseSettings.Resolution = \<br/>      Resolution.Daily<br/>    <span class="hljs-keyword">self</span>.AddUniverse(<span class="hljs-keyword">self</span>.SelectCoarse) <br/>    ... <br/>  <br/>  def SelectCoarse(<span class="hljs-keyword">self</span>, coarse): <br/>    ... <br/>    # sort <span class="hljs-keyword">and</span> <span class="hljs-keyword">select</span> <span class="hljs-keyword">by</span> dollar volume <br/>    sortedByDollarVolume = sorted(coarse, \<br/>      key=lambda x: x.DollarVolume, <span class="hljs-keyword">reverse</span>=<span class="hljs-keyword">True</span>) <br/><br/>    selected = <span class="hljs-comment">{cf.Symbol: cf for cf in \</span><br/><span class="hljs-comment">      sortedByDollarVolume[ \</span><br/><span class="hljs-comment">      :self.dollar_volume_selection_size]}</span> <br/>    ... <br/>    # Define the top <span class="hljs-keyword">and</span> the bottom <span class="hljs-keyword">to</span> buy <span class="hljs-keyword">and</span> sell <br/>    <span class="hljs-keyword">self</span>.rocTop = [x[<span class="hljs-number">0</span>] <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> \<br/>      sortedByRateOfChange[:<span class="hljs-keyword">self</span>.roc_selection_size]] <br/>    <span class="hljs-keyword">self</span>.rocBottom = [x[<span class="hljs-number">0</span>] <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> \<br/>      sortedByRateOfChange[-<span class="hljs-keyword">self</span>.roc_selection_size:]] <br/>    return <span class="hljs-keyword">self</span>.rocTop + <span class="hljs-keyword">self</span>.rocBottom <br/><br/>  def OnData(<span class="hljs-keyword">self</span>, data): <br/>    # Rebalance <br/>    <span class="hljs-keyword">for</span> symbol <span class="hljs-keyword">in</span> <span class="hljs-keyword">self</span>.rocTop: <br/>      <span class="hljs-keyword">self</span>.SetHoldings(symbol, \<br/>        -<span class="hljs-number">0.5</span> * <span class="hljs-keyword">self</span>.leverage/len(<span class="hljs-keyword">self</span>.rocTop)) <br/>    <span class="hljs-keyword">for</span> symbol <span class="hljs-keyword">in</span> <span class="hljs-keyword">self</span>.rocBottom: <br/>      <span class="hljs-keyword">self</span>.SetHoldings(symbol, \<br/>        <span class="hljs-number">0.5</span> * <span class="hljs-keyword">self</span>.leverage/len(<span class="hljs-keyword">self</span>.rocBottom)) <br/>    <br/>    # Clear the list <span class="hljs-keyword">of</span> securities we have placed <br/>    # orders <span class="hljs-keyword">for</span> <span class="hljs-keyword">to</span> avoid <span class="hljs-keyword">new</span> trades before the next <br/>    # universe selection <br/>    <span class="hljs-keyword">self</span>.rocTop.clear() <br/>    <span class="hljs-keyword">self</span>.rocBottom.clear() <br/><br/>  def OnSecuritiesChanged(<span class="hljs-keyword">self</span>, changes): <br/>    <span class="hljs-keyword">for</span> security <span class="hljs-keyword">in</span> changes.RemovedSecurities: <br/>      <span class="hljs-keyword">self</span>.Liquidate(security.Symbol, \<br/>        <span class="hljs-string">'Removed from Universe'</span>)  
Noch eine letzte Bemerkung: Wenn man in einem Backtest-Ergebnis weiter nach unten scrollt, findet man die folgenden Merkmale und Features, vergleiche Bild 10:
  • Overview: Performance-Merkmale des aktuellen Tests wie etwa Gewinn-/Verlust-Rate, durchschnittlicher Gewinn/Verlust, Anzahl von Trades und vieles mehr.
  • Report: Backtest-Bericht als PDF generieren.
  • Orders: Liste der ausgeführten Trade-Aufträge.
  • Insights: Liste der Vorhersagen.
  • Logs: Backtest-Protokolle.
  • Code: Code der Backtest-Strategie.
  • Share: Erlaubt es, den Code und die Parameter des Backtests mit der Community zu teilen.

Fazit

Der Autor hofft, dass es ihm gelungen ist, einen Einblick in die faszinierende Welt des algorithmischen Handels im Allgemeinen und im Besonderen auf der Cloud-Plattform von QuantConnect zu geben. QuantConnect hat sich als eine führende Plattform etabliert, die Tradern und Entwicklern die Möglichkeit bietet, fortschrittliche Handelsalgorithmen zu erstellen, zu testen und einzusetzen. Mit seiner Cloud-Infrastruktur, der Integration von Brokern, Datenanbietern, der leistungsstarken Algorithmus-Engine und einer aktiven Community hat QuantConnect eine umfassende Architektur geschaffen, welche die Bedürfnisse von Händlern in den heutigen dynamischen Märkten erfüllt.Während der Artikel nicht alle Aspekte des algorithmischen Handels und der QuantConnect-Plattform abdecken konnte, bietet er einen umfassenden Überblick über den Lebenszyklus einer Algo-Trading-Strategie und die Schlüsselkomponenten von QuantConnect. Es ist wichtig zu betonen, dass der algorithmische Handel ein komplexes Unterfangen ist, das technische Fähigkeiten, Forschung und kontinuierliche Anpassungen erfordert. Dennoch bietet er eine Vielzahl von Möglichkeiten für Trader, ihre Handelsstrategien zu verbessern und ihre Erfolgschancen in den globalen Finanzmärkten zu erhöhen.Der algorithmische Handel bleibt ein spannendes Gebiet, das Tradern neue Möglichkeiten bietet, von den Finanzmärkten zu profitieren. Mit Plattformen wie QuantConnect können sowohl Hobby- als auch Profi-Trader ihre Handelsstrategien auf die nächste Stufe heben und innovative Ansätze nutzen, um ihre finanziellen Ziele zu erreichen.

Fussnoten

  1. Wikipedia, Automatisierter Handel, http://www.dotnetpro.de/SL2310AlgoTrading1
  2. QuantConnect, http://www.quantconnect.com
  3. QuantConnect, Community, http://www.quantconnect.com/forum/
  4. Wikipedia, Backtesting, http://www.dotnetpro.de/SL2310AlgoTrading2
  5. QuantConnect, Datenquellen, http://www.quantconnect.com/datasets
  6. Finanzinstrumente, http://www.dotnetpro.de/SL2310AlgoTrading3
  7. Open-Source-Algorithm-Engine LEAN, http://www.lean.io
  8. LEAN, GitHub-Repo, http://www.dotnetpro.de/SL2310AlgoTrading4
  9. QuantConnect, Algorithm-Lab, http://www.quantconnect.com/terminal
  10. Jupyter-Notebooks, https://jupyter.org
  11. QuantConnect, Cloud-IDE, http://www.dotnetpro.de/SL2310AlgoTrading5
  12. QuantConnect, Strategie-Bibliothek, http://www.dotnetpro.de/SL2310AlgoTrading6
  13. QuantConnect, Live-Strategie-Muster, http://www.quantconnect.com/explore
  14. Quantpedia, Strategie-Muster 2, https://quantpedia.com/screener
  15. QuantConnect, Brokerages, http://www.dotnetpro.de/SL2310AlgoTrading7
  16. Types of trading strategies, http://www.dotnetpro.de/SL2310AlgoTrading8
  17. QuantConnect, Registrierung, http://www.quantconnect.com/signup
  18. QuantConnect, Anmeldung, http://www.quantconnect.com/login
  19. QuantConnect, Pricing, http://www.quantconnect.com/pricing
  20. Investopedia, Quants, http://www.dotnetpro.de/SL2310AlgoTrading9
  21. QuantConnect, LEAN CLI, http://www.dotnetpro.de/SL2310AlgoTrading10
  22. QuantConnect, Documentation, http://www.quantconnect.com/docs/v2
  23. QuantConnect, EMA Crossover Strategy, http://www.dotnetpro.de/SL2310AlgoTrading11
  24. QuantConnect Forum, Einfache Bitcoin-Strategie, http://www.dotnetpro.de/SL2310AlgoTrading12
  25. QuantConnect Documentation, Algorithm Framework, http://www.dotnetpro.de/SL2310AlgoTrading13
  26. QuantConnect, Short Time Reversal Strategy in Stocks, http://www.dotnetpro.de/SL2310AlgoTrading14

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige