Ich bin Mamas Algo-Händler: Ich suche nach kostenlosen Frameworks zum Testen von Hypothesen und zum Starten im Kampfmodus (Python).

Angenommen, Sie hatten zuvor etwas mit der Börse zu tun. Oder, ohne einen zu haben, wurde von dem heißen (aber in den letzten Monaten bereits merklich gekühlten ...) Kryptowährungsthema mitgerissen. Wir gehen auch davon aus, dass Sie noch weiter gegangen sind und entschieden haben, dass die „manuelle Steuerung“ von Flügen bereits unwirksam ist und dass Sie Ihre guten Ideen automatisieren und den Affen in etwas Technologischeres verwandeln müssten. Genau an dieser Stelle beginnen die Fragen, die ich im Artikel diskutieren möchte: Gibt es eine vorgefertigte Lösung für das Backtesting von Handelsideen (kostenlos ist wünschenswert), wo historische Daten abgerufen werden können (idealerweise kostenlos) und was später mit all dem zu tun ist? d.h. Was sind die Lösungen für den Kampfstart von automatisierten Handelssystemen, die erfolgreich auf einem Backtest getestet wurden? Anmerkung eins und zwei: Der Artikel ist für Python-basierte Bibliotheken und Systeme geschrieben. Ich kann nicht beurteilen, wie die Zugänglichkeit für andere Sprachen sein kann. Ausländische Märkte und / oder Kryptowährungen haben Vorrang, und ich gehe auch nicht davon aus, zu beurteilen, wie sie auf den russischen Aktienmarkt anwendbar sind.

Bild

Dieses Material ist keine erschöpfende Anleitung oder Überprüfung, sondern ein Vorschlag zum Austausch von Arbeitsideen auf der Grundlage einer praktischen Suche nach einer normalen Arbeitsgruppe für den persönlichen Gebrauch. Angesichts der Notwendigkeit, selbst einfache Handelsstrategien (Momentum-Handel, Trendfolge usw.) zu automatisieren, traten sofort eine Reihe von Problemen auf. Lassen Sie uns darauf hinweisen, was wir brauchen:

  • Formulieren Sie eine Hypothese und algorithmisieren Sie sie
  • Testen Sie die Hypothese anhand historischer Daten. Ein sehr wichtiger Hinweis: Sie müssen auch verstehen, welche historischen Daten in die Kategorie „geeignet“ für die Verwendung im Backtest von Handelssystemen fallen. Ich werde mich nicht verpflichten, jetzt einen separaten Beitrag darüber zu schreiben (obwohl dies dies erfordert, aber es gibt viele Materialien zu diesem Thema im öffentlichen Bereich). Ich werde einige Schlüsselprobleme mit historischen Daten skizzieren: Werden Unternehmen, die aus den Indizes ausgestiegen sind oder bankrott gehen, berücksichtigt, werden Aktien aufgeteilt, und auch, wie die Rentabilität berücksichtigt wird - unter Berücksichtigung von Dividenden (Gesamtrendite) oder nicht. Ich entschuldige mich wirklich für die Kürze, aber in diesem Beitrag geht es noch nicht darum, und dies ist kein erschöpfender Satz von Datenanforderungen.
  • Wenn die Überprüfung erfolgreich ist, wie die Hypothese auf ein reales Handelskonto übertragen wird, indem ein System des Risikomanagements, des Auftragsmanagements, des Neuausgleichs und der Bewertung des Ergebnisses hinzugefügt wird.

Jetzt ist es an der Zeit, zwei wichtige Abweichungen in Bezug auf die „Einführung“ zu machen, mit der wir in diesem Artikel arbeiten. Das erste ist die Wahl der Sprache: Viele werden sagen, dass C # zum Erstellen von Handelsrobotern / automatisierten Handelssystemen viel häufiger und schneller als Python ist. Ich kann nicht widersprechen, aber ich muss den zweiten wichtigen Punkt berücksichtigen - den Unterschied zwischen algorithmischem Handel und Automatisierung von Handelssystemen. Aus Gesprächen mit Praktikern des quantitativen Handels und einfach aus theoretischen Materialien kann geschlossen werden, dass der algorithmische Handel (häufig als Synonym für „Hochfrequenzhandel (HFT)“ verwendet) eine Taktik für die Arbeit mit Aufträgen ist, bei der Daten je nach Geschwindigkeit zu verschiedenen Börsen fließen Zugriff auf sie (und abhängig von Millisekunden), und dort kann ausschließlich C # die Aufgaben bewältigen. Gleichzeitig sind die Aufgaben, die der Algo-Händler „zu Hause“ verfolgt, höchstwahrscheinlich Python, da wir kurz- und mittelfristige spekulative Handelssysteme automatisieren wollen, deren Portfolioumsatz nicht 100% pro Tag erreicht, sowie die Anzahl der Aufträge und Anforderungen Die Geschwindigkeit ihrer Ausführung überschreitet nicht einen vernünftigen Schwellenwert, der den Hochfrequenzhandel und den kurz- / mittelfristigen automatisierten Handel trennt.

Wie Handelssysteme bewertet werden, wie Handelsalgorithmen geschrieben werden und so weiter - all dies geht jetzt über den Rahmen hinaus, sonst gibt es keine Möglichkeit, in den Artikel zu passen. Schauen wir uns ein konkretes Beispiel an: Ich habe ein Handelssystem, das auf dem im Buch „Aktien in Bewegung: Den Markt mit Hedge-Fonds-Momentum-Strategien schlagen“ beschriebenen System basiert. Die Handelsstrategie ist in Python geschrieben und enthält keine superkomplexen Elemente. Das erste, was Sie brauchen, ist die Möglichkeit, die Strategie anhand historischer Daten zu testen. Ich habe kein Problem damit, die Wahl des Brokers zu diskutieren. Ich nutze die Dienste von Interactive Brokern und sie haben bereits eine native API für Python. Die Möglichkeit eines Backtests auch bei kostenpflichtigen Datenabonnements ist dort jedoch nicht gegeben. Folgendes habe ich für den Backtest gefunden:

1) Jeder hört - Quantopian.com

Es wird nur Python 2.7 unterstützt. Es ist möglich, Handelssysteme kostenlos zu erstellen und zu testen. Es stehen kostenlose historische Daten zur Verfügung (US-Aktien und Futures). Online ist verfügbar. Eine lokale Installation ist nicht möglich. Ich werde keine lange Rezension schreiben, ich werde sofort die Problembereiche skizzieren, die bereits auf einer grundlegenden Ebene gefunden wurden: Da sie die Möglichkeit der Verknüpfung mit einem Brokerage-Konto beseitigt haben, gibt es keine Möglichkeit, die entwickelten und getesteten Handelssysteme für den Live-Handel zu verwenden. Dies führt sofort zu Einschränkungen (einige von ihnen helfen bei der Lösung von Zipline-Live, mehr dazu weiter unten), weil Quantopian basiert auf der Zipline-Bibliothek. Darüber hinaus gibt es einige Funktionen, die nur innerhalb des Systems funktionieren. Wenn Sie also Ihr selbstgeschriebenes und getestetes System von einem Broker auf dieselbe native API übertragen möchten, müssen Sie die Hälfte davon neu schreiben, um zu funktionieren Entscheiden Sie auch, was mit Zipline-basierten Codefragmenten geschehen soll. Das Minus (für einige Systeme) kann auch als Verbot dynamischer Ticker angesehen werden, aber wir lassen diese These vorerst ohne Details.

Das Hauptplus von Quantopian (IMHO) (zusätzlich zu einem kostenlosen System für Tests und historische Daten) ist eine sehr aktive Community, viele Beiträge zu Analysen und den Nuancen von Gebäudesystemen. Wichtig: Die dort verfügbaren historischen Daten berücksichtigen einige der Probleme (Sie können nicht nur mit Live-Unternehmen zusammenarbeiten, sondern auch Listen mit Indizes der vergangenen Jahre abrufen, um Abbrüche, Insolvenzen usw. zu berücksichtigen), Splits werden ebenfalls berücksichtigt, und es gibt sogar (!) Total Return-Datensätze, dh Sie können Rentabilitätsindikatoren mit Dividenden verwenden.

2) Möchte wirklich von allen gehört werden, hat es aber noch nicht - Backtrader.com

Python 2.7, 3.2-3.6 wird unterstützt und ist nur für die Verwendung auf dem lokalen Computer verfügbar.
Es scheint eine Integration mit Brokern zu geben, und es wird möglich sein, Systeme, die diese Bibliothek verwenden, mit minimalem Integrationsaufwand in den Kampf zu ziehen. Ehrlich gesagt - es ist sehr zweifelhaft, ich habe keine lebenden Beispiele gesehen, die Community ist fast tot - es herrscht Stille im Forum. Der Autor der Bibliothek bewirbt sie aktiv auf Quora und anderen Ressourcen. Da es keine historischen Daten gibt, müssen Sie entweder kostenlose Quellen kaufen oder suchen - aber dort beginnen die Probleme von „Überlebenden“, Dividenden (unabhängig davon, ob sie in den Daten enthalten sind oder nicht), Spaltungen und anderen Dingen. Ich freue mich über echtes Feedback zur Praxis der Nutzung dieser Bibliothek.

3) QuantConnect - quantconnect.com

Dies ist eine Online-Plattform (die jeweils Python unterstützt), die sowohl Daten als auch Backtest und Integration mit beliebten Brokern bietet. Nehmen wir jedoch gleichzeitig an, dass Sie für das Abonnieren von QuantConnect mindestens 20 US-Dollar pro Monat zahlen müssen, um über Interactive Brokers live handeln zu können. Dabei werden Abonnements von Daten des Brokers usw. nicht berücksichtigt.
Meine subjektive Meinung ist, dass die Plattform für den ständigen Gebrauch nicht sehr praktisch ist, irgendwie ist alles zu überlastet und unpraktisch, plus bezahlt, plus es wurde ursprünglich in C # geschrieben und nur verpackt, damit Sie Python verwenden können. Nachdem ich versucht hatte, dort mehrere Strategien zu testen, weigerte ich mich, sie weiter zu verwenden. Obwohl wir Tribut zollen müssen - die Community dort ist weniger aktiv, es gibt viel Material in den Foren und Probleme können schnell gelöst werden. Ich würde mich freuen, wenn Sie echte Bewertungen teilen - vielleicht hatte ich einfach keine Benutzererfahrung.

4) QuantRocket - quantrocket.com

Nach der Beschreibung zu urteilen - es ist nur ein "Lied". Es gibt alles - sowohl Online- als auch lokale Installation, Backtesting und historische Daten, die vom Broker gesammelt oder von Ihnen selbst bereitgestellt werden können (für 9 USD pro Monat), und sofortige Integration mit Brokern. Die Integration ist so gut, dass sie versprechen, nichts neu zu schreiben Ich muss ... Und sie versprechen sogar, dass sie, wenn Sie zuvor von Quantopian abhängig waren und einige Dinge auf Ihrer Zipline geschrieben wurden, beim Übergang zu ihrer Plattform und zur internen Bibliothek (Moonshot) helfen werden, sodass der Live-Handel über einen Broker mit minimalem Aufwand implementiert werden kann ... Alles klingt perfekt, wenn nicht für einen über "aber" - mindestens 30 US-Dollar pro Monat für die Möglichkeit, wie jeder andere wirklich zu testen. Ich habe es nicht gewagt, weil es Monate gibt, in denen Ihre Teilnahme am Markt nicht erforderlich ist (z. B. alle Filter für den Markteintritt "still sitzen"), und dann eine Gebühr von 30 USD für die Möglichkeit, Hypothesen zu testen, zu ungerechtfertigt erscheint. Aber ich werde dankbar sein für echte Bewertungen - wer hat es versucht, was sind die Vor- und Nachteile und so weiter. Ein weiterer peinlicher Punkt ist die Bindung an die Plattform und die Bibliothek, die nur auf dieser Plattform verwendet wird und dann mit einem Anstieg der "Kosten für den Wechsel" behaftet ist, d. H. Morgen liefern sie statt 30 US-Dollar für einen einfachen Tarif alle 150 US-Dollar, und Sie haben ihn an ihre einzigartige Moonshot-Bibliothek gebunden und über ihre Plattform bereitgestellt ... Wie sie sagen, Ihre Eier in einem Korb ...)

5) Zipline & Zipline-live (http://www.zipline.io, www.zipline-live.io )

Es ist lokal installiert, funktioniert mit Python 2.7 und 3.5 für Zipline und nur 2.7 für Zipline-Live.
Wir kamen zu dem geschätzten Bündel, das nach meinen Beobachtungen in der Gemeinschaft der Liebhaber automatisierter Handelssysteme zu Hause am häufigsten verwendet wird.
Was wir haben: Die Zipline-Bibliothek, die die Grundlage der Quantopian-Engine bildet (siehe Punkt 1), und ihr jüngerer Bruder Zipline-Live, die die Integration mit Interactive Brokers unterstützt und es Ihnen ermöglicht, mit Zipline in der Produktion erstellte Algorithmen mit minimalen Änderungen auszuführen. Kurz über die Geschichte des Problems - als sie vor einigen Jahren bei Quantopian beschlossen, den Live-Handel aufzugeben, wurde die Community aufgeregt, das Wasser schäumte und das Ergebnis kollektiver Bemühungen wurde geboren (einschließlich des Quantopian-Teams, das versprach, die Entwicklung der Live-Bibliothek auf uninteressierter Basis zu unterstützen). Danach wurde Zipline-live in der Tat die einzige (?) Bequeme Möglichkeit, kostenlos (und ohne Registrierung :) Systeme, die auf Quantopian (oder lokal auf Zipline) getestet wurden, an den realen Handel über interaktive Broker (mit denen es eine Integration gibt, jedoch ohne Nummer) anzupassen einige wichtige und nicht so zipline Funktionen). Was kann man über diesen Haufen sagen:

  • zipline ist für Sie vor Ort geeignet, wenn Sie über eine zuverlässige Quelle für historische Daten verfügen oder über genügend Quandl-Datensätze verfügen, die kostenlos in die Bibliothek integriert sind. Es sollte beachtet werden, dass die Bibliothek keine Online-Datenübersetzung unterstützt. Sie müssen diese herunterladen und dann für den Backtest hochladen ( hier finden Sie weitere Details dazu).
  • Zipline-Live ist theoretisch geeignet, wenn die Integration mit IB normal implementiert ist und die von Quantopian übertragenen Algorithmen aufgrund von Funktionen, die nicht in Zipline-Live implementiert sind, keine signifikante Verarbeitung und Trimmung erfordern.

6) QsTrader - github.com/mhallsmoore/qstrader

Dies ist eine Bibliothek der Macher des Portals quantstart, eine Community und eine Reihe von Lehrmaterialien, Vorträgen und so weiter. Lokal installiert, verwendet Python 3 und höher. Es gibt keine echte Handelsmöglichkeit durch einen Broker, aber sie versprechen, hinzuzufügen. Verlässt sich größtenteils auf den üblichen Data Science-Stack von Python - Pandas, Numpy, Scipy usw., sodass Sie alles auf einmal installieren müssen. Ich konnte keine objektiven Schätzungen der Verbreitung dieser Bibliothek erhalten, und ich werde ehrlich sagen: Ich habe es in der Praxis nicht versucht, da nach dem Aktualisierungsverlauf die Arbeit daran inaktiv ist und keine Funktionen hinzugefügt werden, was bedeutet, dass es für ein vollständiges, sogar "Heim" -System nicht funktioniert geeignet, aber wenn es Ergebnisse seiner Verwendung gibt und eine persönliche Meinung gebildet wird - teilen, plötzlich ist diese Lösung besser als andere.

7) Als nächstes werde ich die Bibliotheken auflisten, die ich gefunden habe, aber ich kann nicht viel darüber sagen. Meistens werden sie ausschließlich von den Autoren der Blogs unterstützt, die sie erstellt haben, und sie können sich nicht in einen Broker integrieren, was bedeutet, dass es sich nur um ein Backtesting handelt, ohne die Fähigkeit, im Kampf eingesetzt zu werden, ohne eine Community und mit einem langsamen Entwicklungstempo, d. H. erfüllt nicht alle zugewiesenen Aufgaben.

- bt (Backtesting für Python)
- Pysystemhandel

Zusammenfassend fasse ich die subjektiven Schlussfolgerungen zusammen:

  • Wenn Ihnen die Verwendung von Online-Plattformen, die in Python 2.7 veraltet sind, nichts ausmacht und Ihre Zielinstrumente in Strategien Aktien / Futures auf US-Websites (und IB-Broker) sind, ist eine Kombination aus Quantopian + Zipline-Live bequem und definitiv kostenlos (!) Sie erhalten kostenlose historische Daten (± Erfüllung der Qualitätskriterien), eine kostenlose IDE zum Testen von Hypothesen sowie eine lokale Bibliothek, mit der Sie Ihre Erfolge unter Berücksichtigung aller Klauseln in ein Maklerkonto integrieren und das System in einem Kampfflug starten können und eine Kombination von Grenzen, die hier oben offenbart wurden. Ich persönlich habe diese Option aufgrund des Komforts, der kostenlosen Grundfunktionen und einer sehr aktiven Community für Sie ausgewählt. Im nächsten Beitrag werde ich Ihnen erklären, wie einfach (oder nicht einfach) es war, die Strategie für Momentum-Aktien von Quantopian online zu testen und auf dem lokalen Computer auf Zipline-Live zu übertragen, wie gut die Integration mit dem Brokerage-Konto in IB in dieser Bibliothek funktioniert und welche Details zur Verwendung des Native bekannt sind Python-API von IB.
  • Wenn die Priorität eine lokale Installation ist, die vollständige Kontrolle über das System hat und nicht die Notwendigkeit besteht, historische Daten in Form von Datenbündeln zum Testen von Hypothesen herunterzuladen, oder wenn es eine Quelle für diese Daten gibt oder sie frei von Problemen sind, wäre eine mögliche Lösung das Zipline + Zipline-Live-Paket, das dies ermöglicht Sie können Strategien implementieren, die auf einem lokalen Computer anhand von historischen Daten (von Ihnen selbst oder kostenlos) über IB getestet wurden. Dies alles ist im Rahmen der Funktionalität der angegebenen Bibliotheken und des Python-API-Brokers kostenlos.

  • Wenn Sie kein Konto bei Interactive Brokern eröffnen können oder wollen, reicht ein Großteil der oben genannten Liste im Großen und Ganzen aus, weil QuantConnect arbeitet beispielsweise mit anderen Brokern zusammen, die auch den FX / Crypto-Handel unterstützen, und so weiter. Und wenn die Aufgaben im Prinzip keinen Live-Handel über einen Broker ausführen müssen, können Sie alle beschriebenen Bibliotheken / Plattformen zum Backtesting ausprobieren und diejenige auswählen, die Ihren Aufgaben am besten entspricht.

PS Abschließend möchte ich darauf hinweisen, dass die Auswahl einer Plattform / Bibliothek nicht nur bequem ist, sondern auch die „Skalierbarkeit“ von Systemen. Nehmen wir an, ich habe etwas Verständliches entwickelt und es auf einer Zipline getestet. Dann entschied er sich, es ohne einen Backtest von einem Broker über seine API zu implementieren - und hier beginnt eine Million zusätzlicher Details, die Sie im Sandbox-Modus nicht berücksichtigen - wie Aufträge ausgeführt werden, wie Ihr System in verschiedenen Handelsmodi verarbeitet und ob Nach dem Quartalsbericht gibt es eine Lücken- / Post-Trading-Supervoltaik-Sitzung usw. Daher ist es meiner subjektiven Meinung nach wichtig, eine solche Baugruppe zu wählen, dass der Code sowohl für den Backtest als auch für die Implementierung des Handelssystems im Kampf funktioniert. Dann werden die Fehler behoben. h die Qualität der beiden zu verbessern.

Source: https://habr.com/ru/post/de434244/


All Articles