Monday, 26 June 2017

Trading Strategie Matlab Code


Bitfinex gab heute den Beginn der Bergbau-Verträge als Handelsprodukt auf ihrer Plattform bekannt. Insgesamt wurden 100 THS (Terahashes pro Sekunde) mit einem Ablauf in 3 Monaten zum Handel unter dem Namen TH1BTC zur Verfügung gestellt. Die 100 THS sind Teil eines größeren Pools von 3500 THS, so dass weitere Minenverträge in Zukunft verfügbar sein könnten. Interessanterweise ist dies das erste Mal, dass es möglich ist, einen Bergbauvertrag zu schließen. Die Abkürzung eines Bergbauvertrags bedeutet, dass wir jetzt einen Betrag von Bitcoin erhalten (den Preis, den wir verkaufen) und anschließend Dividenden (in Bitcoin) über die folgenden 3 Monate, bis der Vertrag Mitte Dezember abläuft. Ein Gewinn wird gemacht, wenn die Summe aller ausgezahlten Dividenden (zuzüglich der Zinsen, die wir bezahlt haben, um den Vertrag zu kürzen) weniger als das, was wir zu Beginn erhalten haben, als wir den Vertrag verkauften (an einen anderen offensichtlich). Dies bedeutet, dass der Preis von TH1BTC von 3 Variablen abhängt (in absteigender Reihenfolge von Bedeutung): Die Änderung der Bergbau-Schwierigkeit bis zum 15. Dezember Die verbleibende Zeit bis zum 15. Dezember Der Zinssatz (Swap-Rate) Wenn Schwierigkeiten steigen, werden die Dividendenzahlungen kleiner, da 1 THS stellt einen kleineren Bruchteil der gesamten Netz-Hash-Leistung dar. Daher sollte der Preis eines Vertrages abnehmen, wenn Schwierigkeiten zunehmen. Je näher wir das Fieber beenden, so kann Bitcoins mit 1 THS gesorgt werden. Daher sollte der Preis eines Vertrages abnehmen, je näher wir anlaufen und bei Verfall einen Preis von 0 erreichen. Je höher der Zinssatz, desto teurer ist es, den Vertrag über die volle Länge von 3 Monaten zu betreten und zu halten. Bitfinex bietet nicht 90 Tage Swaps an und gibt damit einen Vertrag mit dem Ziel ein, es zu halten, bis das Ende ein bisschen Zinsrisiko enthält, da irgendwann ein neuer Swap (zu einem potenziell ungünstigen Zinssatz) entnommen werden muss. Dies ist weniger ein Problem, wenn man lange geht (Bitcoin-Raten sind in der Regel niedrig) als wenn man kurz (es gibt nur maximal 100 Verträge insgesamt verfügbar, keine nackte Kurzschluss). Um das Risiko zu kompensieren, sollten die Preise steigen, wenn die Swapsätze steigen. Das große Unbekannte ist natürlich die Veränderung der Bergbau-Schwierigkeit in den nächsten 90 Tagen. In der folgenden Abbildung sehen wir, wie sich die Schwierigkeiten in den letzten 6 Monaten geändert haben. Die Daten stammen aus Tradeblock und zeigen nicht nur eine grafische Darstellung vergangener Veränderungen in der Schwierigkeit (Schwierigkeitsänderungen alle 14 Tage je nach vergangener Hash-Rate. Weitere Informationen finden Sie im Wiki), aber auch einige grundlegende Summary Statistics. Durchschnittliche Schwierigkeiten haben sich in den letzten 30 Tagen um 27 erhöht und in den letzten 60 Tagen 77. Um den fairen Preis von einem TH1BTC abzuschätzen, gehen wir davon aus, dass die Schwierigkeit im Durchschnitt 15 pro Monat über den nächsten 3 Monaten steigen wird. Derzeit ist der Preis für den Kauf eines Vertrages im Wert von 1 THS 2 BTC. Die Poolgebühr beträgt 3 und wir werden die Zinsen ignorieren. Wenn wir alle Informationen erhalten, erhalten wir folgende Ergebnisse: Wenn wir also einen Vertrag auf der Grundlage unserer Annahmen machen, würden wir einen Verlust von etwa 0,39 Bitcoin machen (ein bisschen mehr in Wirklichkeit, da wir den Bergbau Mitte September bis zur Mitte beginnen werden Im Dezember), da die erwarteten Dividenden (monatliche Einnahmen) unsere anfänglichen Kosten von 2 BTC nicht abdecken werden, bevor der Vertrag abläuft. Auf der anderen Seite, knapp zu einem Preis von 2 Bitcoin hätte einen Gewinn von etwa 0,39 Bitcoin pro Vertrag generiert. Denken Sie daran, dass wir didn8217t enthalten Swap-Kosten, die derzeit bei etwa 1 pro Tag (). Es gibt zwei Möglichkeiten, die Ergebnisse zu betrachten. Entweder könnten wir sagen, dass die Preise für TH1BTC derzeit überbewertet sind und näher bei etwa 1,5 BTC liegen sollten. Wenn wir davon ausgehen, dass die Schwierigkeit mehr als 15 pro Monat ansteigen wird, dann sollten die Preise sogar noch niedriger sein. Oder wir könnten sagen, dass der Markt effizient ist und die Preise korrekt sind, was bedeutet, dass der Markt in den nächsten 90 Tagen im Durchschnitt etwa 2 pro Monat schwer abnehmen wird. So oder so werden die Ergebnisse in 90 Tagen mit Sicherheit bekannt. Kämpfen, um sich von dem jüngsten Bitcoin-Blitz-Crash zu erholen, der auf Bitfinex nur vier Tage entstand. Bitcoin-Preise haben heute einen weiteren Tauchgang gemacht, da die Margin-Trader ihre Positionen auf BTC-e liquidiert haben. Die Veranstaltung begann um 1:36 Uhr (UTC1), als große Verkaufsaufträge auf der drittgrößten westlichen Bitcoin-Börse BTC-e auftauchten. Die nach unten gerichtete Dynamik nahm stetig zu, da das Orderbuch immer dünner wurde und die Preise bis zu einem Tiefstkurs von USD 309 pro Bitcoin um 1,43 PM stürzten. In den folgenden Minuten erholten sich die Preise rasch auf dünnem Volumen zurück auf rund USD 442, als Arbitrage-Händler begannen, den Rabatt im Vergleich zu anderen Börsen zu nutzen. BTC-e ist einer der wenigen großen Börsen, die ihren Kunden über die MetaTrader-Plattform seit November 2013 einen Margin-Trading anbieten, aber die Details, wer exakt die für den Margin-Trading notwendigen Mittel zur Verfügung stellt, sind unklar. Die Form und vor allem das Timing des Crash-Punktes auf Margin-Trader, die liquidiert werden (oder Stopp-Aufträge ausgeführt werden), ähnlich wie auf Bitfinex vor ein paar Tagen passiert ist. Im Gegensatz zu Bitfinex, die über offene Swap-Positionen transparent ist. BTC-e liefert keine wichtigen Daten, die für eine gründlichere Analyse erforderlich sind, und so kann diese letzte Aussage nur als eine gute Vermutung angesehen werden. Im Gegensatz zu Bitfinex, die auf einem versteckten Algorithmus beruht, um den Auftragsablauf zu kontrollieren. BTC-e scheint keine besonderen Schutzmaßnahmen zu haben, um solche Ereignisse zu mildern. Der Fall unter 400 war vor allem auf einen Mangel an Angeboten im Orderbuch zurückzuführen und nicht, weil der Markt glaubte, dass der wahre Wert unter 400 lag, da der Rückschlag auf über 440 nur Minuten später grundsätzlich bewiesen wurde. Daher konnte das Stoppen des Handels bei extremer Abwärtsvolatilität das Blutvergießen unter den Margin-Händlern leicht abwenden, indem es anderen Marktteilnehmern mehr Zeit gab, das Orderbuch zu verdicken. Update 4:58 PM (UTC1): BrCapoeira posted on Reddit eine interessante Grafik basierend auf Daten aus der Metatrader-Plattform: Diese Grafik impliziert, dass eine einzige große Bestellung war die Ursache für dieses Ereignis. Ob diese Bestellung aufgrund eines Margin Call, ein einfacher Fehler, die Manipulation des Marktes oder eine große Short-Position eröffnet wurde, bleibt unklar. Der gesunde Menschenverstand würde vorschlagen, dass es wahrscheinlich das Ergebnis einer Margin Call von einem einzigen großen Händler war. Mein früherer Beitrag zu diesem Thema wurde während der Diskussionen nach dem jüngsten Bitcoin-Flash-Crash aufgeworfen. Coindesk war einer der ersten, der es abholte und seitdem verschiedene Beiträge über Transparenz und die mögliche Verantwortlichkeit des Austauschs zur aktiven Verwaltung der Auftragsabwicklung begannen zu erscheinen. Als Ergebnis dieser Ereignisse ging Josh Rossi, Vizepräsident der Geschäftsentwicklung bei Bitfinex, auf Reddit, um offenbar einige der Probleme aufzurufen, die gegen den Austausch erhoben wurden. Die Tatsachen, die wir sicher wissen, sind, dass es einige große Verkaufsaufträge kurz vor dem Absturz gab, zum Beispiel ein 500-Verkaufsauftrag auf Bitstamp um 9.49 Uhr (UTC1), etwa 6 Minuten vor einem großen Verkaufsauftrag auf Bitfinex ausgelöst den Crash. Doch die Daten sagen uns nicht, ob es Insiderhandel, irgendeine Form der Marktmanipulation war. Oder ein einfacher Fehler. Tatsache ist, dass nach dem Bitcoin-Blitz-Crash offenen Swap-Positionen von etwa 28m auf 24m abnahm, was bedeutet, dass etwa 8400 Margin-Long-Positionen geschlossen wurden (unter der Annahme eines Durchschnitts von 475) in einer Weise (Margin Call) oder einem anderen (Stop Order Hit). Die Daten sagen uns nicht, was das Verhältnis ist, sondern laut Josh nur etwa 650 Bitcoins wurden als Ergebnis von Margin Anrufe verkauft. Wie richtig von Jonathan Levin hervorgehoben wurde. Tatsache ist, dass etwa 24 Stunden vor dem Bitcoin Flash Crash, bis der Crash selbst eine zusätzliche 1000 Bitcoins wurden in kurzen Positionen genommen und etwa 2500 Shorts wurden anschließend während des Crashs geschlossen. Ob diese Shorts geöffnet wurden, um bestehende Positionen zu sichern, als bösartiger Versuch, einen Margin Call auszulösen, oder ein Weg, um den Markt mit privaten Informationen voranzutreiben, kann aus den verfügbaren Daten nicht ermittelt werden (es sieht seltsam verdächtig aus). Was war unerwartet Persönlich ist der interessante Punkt nicht, dass Bitcoin Flash abgestürzt ist. Plötzliche Preisschwankungen sind in der Vergangenheit passiert und werden in der Zukunft passieren, vor allem in illiquiden Märkten wie Bitcoin. Der interessante Punkt ist die Beteiligung von Bitfinex und die Art und Weise, wie sie die Auftragsabwicklung aktiv verwalteten, ohne die Marktteilnehmer im Voraus zu informieren. Die Bitfinex-Matching-Engine wurde während des ganzen Crashs nicht angehalten, obwohl es sich verlangsamte (aber nirgendwo so schlimm wie die berüchtigte 70-minütige Order auf dem jetzt verstorbenen MtGox-Tausch während des Crashs im Jahr 2012). Doch was Bitfinex tat, wurde sie eingeführt, was sie jetzt als Geschwindigkeitsstöße bezeichnen. Was es bedeutet, ist, dass sie im Wesentlichen Befehle kennzeichnen, die sie als ungültig oder potenziell gefährlich ansehen und sie absichtlich verlangsamen. Auf den ersten Blick könnte das wie eine nette Idee aussehen. Wer will einen Filter, um bösartige Befehle zu entfernen oder zu verlangsamen, aber so oft mit diesen Sachen ist der Teufel im Detail. Das Problem ist, dass Bitfinex nicht (und vielleicht auch nie) öffentlich machen wird, wie genau sie eine Bestellung als 8220bad8221 und 8220slow it down8221 kategorisieren. Wenn ein Marktteilnehmer beschließt, einen großen Verkaufsauftrag gegen ein dünnes Orderbuch aufzustellen, dann ist das seine Entscheidung. Ob seine Handlung beabsichtigt war oder nicht, ist nicht bis zum Austausch zu entscheiden. Es könnte sein, dass dieser Marktteilnehmer einfach die erste Person war, auf ein Großereignis zu reagieren und ist ganz bereit, die zusätzlichen Kosten des daraus resultierenden Schlupfes in Erwartung eines großen Preises zu tragen. Es gibt einfach keinen Weg, um Aufträge a priori als 8220good8221 oder 8220bad8221 genau zu klassifizieren, da dies automatisch die Kenntnis aller unmittelbaren zukünftigen Ereignisse übernehmen würde. Was kann verbessert werden Fehler (8220fat finger8221, Algorithmus gehen Chaos) passieren, Ränder angerufen werden und Menschen versuchen, das System in jeder möglichen Weise zu spielen. Logischerweise müssen Schutzmaßnahmen vorhanden sein, um die Märkte und ihre Teilnehmer zu schützen. Bitfinex war sich der potenziellen toxischen Auftragsabwicklung bewusst und bereitet Gegenmaßnahmen vor. Das einzige, was sie vergessen haben, war, ihre Kunden über die versteckten Sicherheitsmerkmale zu informieren. Das Verstecken dieser Schutzmaßnahmen aus der Öffentlichkeit fügt Unsicherheit für den Markt hinzu (vor allem jetzt, wo wir wissen, dass sie existieren und manchmal etwas tun) und im Wesentlichen alle Händler vertrauen in die Hände von Bitfinex. An dieser Stelle kann ein Händler nur hoffen, dass Bitfinex immer in den besten Absichten ihrer Kunden agieren wird. Diese Hoffnung könnte aber zwecklos sein, denn Bitfinex macht Geld aus Handelsgebühren, unabhängig davon, ob ein Trader tatsächlich Geld verdient. Man muss nicht lange darüber nachdenken, das verborgene Potenzial für Missbrauch in einem solchen System zu erkennen. Der Hauptgrund, der von Josh aufgeworfen wurde, warum Bitfinex nicht beabsichtigt, ihren Algorithmus zu veröffentlichen, ist es, den Händlern die Möglichkeit zu geben, sie auszunutzen, ist gefälscht und die folgenden zeigen, warum. Das sind die offiziellen marktführenden Leistungsschalter, die von NASDAQ verwendet werden, die für jeden Marktteilnehmer online und vollständig transparent sind. Diese Regeln sind sicher nicht perfekt, aber sie sind einfach, transparent und arbeiten für einen der größten Aktienmärkte der Welt. Jetzt habe ich großen Respekt für die Leute, die auf der Bitfinex-Plattform arbeiten, aber ich bezweifle, dass es ihnen gelang, einen Algorithmus zu finden, der die Marktteilnehmer besser schützt als die, die von einem großen Börsenhandel mit mehr als 900 Millionen Aktien pro Tag im Durchschnitt verwendet werden . Und wenn sie es taten, ist jetzt die Chance für Bitfinex, es der Welt zu beweisen und eventuell Geschichte zu schreiben, indem ich die großen Jungs lehre, wie man einen Austausch richtig ausführt. Wenn es um den öffentlichen Austausch geht, ist die Transparenz ein Muss, nicht nur für Bitfinex, sondern für jeden Austausch. Marktteilnehmer müssen genau wissen, was passiert, wenn sie einen Auftrag vergeben und unter keinen Umständen auf guten Glauben allein verlassen müssen. Schutzmaßnahmen sind wichtig, weil Unfälle passieren und Märkte abstürzen, aber es ist nicht bis zu dem Austausch, um in geheime Ordnung Diskriminierung zu engagieren. Es gibt verschiedene Möglichkeiten, die Finanzmärkte zu sichern und keiner von ihnen ist perfekt. Das Hinzufügen von Komplexität erhöht in der Regel die Chance für unbeabsichtigte Nebenwirkungen und daher ein einfacher, transparenter Ansatz scheint geeigneter als ein versteckter, komplexer. Vor zwei Tagen reduzierte BitMEX ihre Handelsgebühren auf 0 und feierte es, indem er einen grundlegenden Markt, der Bot auf Github machte, veröffentlichte. BitMEX läuft derzeit bis zum 29. August 2014 eine Handelsherausforderung, um ihre neue Plattform zu fördern. Die Freigabe einer Marktmarkierung bot ist wahrscheinlich eine interessante und effektive Möglichkeit, API-Verkehr zu erhöhen und Stress-Test die Plattform ein bisschen. Natürlich konnte ich nicht widerstehen und hatte einen Blick. Market-Maker ist ein Gabelung von Liquidbot. Die ursprünglich entworfen wurde, um auf dem jetzt obsolet MtGox Austausch zu laufen. Es gab einige kleinere Änderungen (neue api-Klasse, um mit BitMEX zu verbinden, einige zusätzliche Drucke zu konsolen, Änderungen an Futures-Kontrakten anzupassen, und ein riesiger und unnötiger Druck zu konsolen beim Start), aber keine signifikanten Änderungen an der Handelslogik. Der Algorithmus verwendet REST und überprüft nur alle 60 Sekunden auf Änderungen. Dies disqualifiziert den Bot, da es zu langsam ist, um auf laufende Änderungen im Orderbuch zu reagieren. BitMEX schränkt Anfragen an die REST-API auf 150 pro 5 Minuten, so dass Sie versuchen können, die 60 Sekunden auf etwas wie 3 zu reduzieren, aber es gewinnt die Tatsache, dass, sobald Märkte beginnen, Sie zu bewegen, die Grenze treffen und mit offenen Positionen festhalten werden. Um fair zu sein, bietet BitMEX den Bot mehr als Marketing-Stunt und erklärt ausdrücklich, dass die Umstellung auf WebSocket sehr vorteilhaft sein wird, da es Echtzeit-Updates ermöglicht. Insgesamt ist der Algorithmus solide geschrieben, technisch funktioniert und ist einfach einzurichten, aber es gewinnt dir kein Geld auf lange Sicht. Wenn jemand ernsthaft bedenkt, diesen bot zu verwenden, würde ich die folgenden kleinen Änderungen empfehlen, um den Code mehr nutzbar zu machen: 1. Wechseln Sie zu Websocket 2. Beenden Sie die Position in der Nähe: 3. Erstellen Sie Aufträge ab dem Mittelpunkt: Darüber hinaus würde ich empfehlen zu messen Volatilität in gewisser Weise und Anpassung der Distanz zwischen Aufträgen dynamisch sowie die Größe. Während meines Tests war die API immer reaktionsschnell und genau. Volumen an der Börse ist immer noch niedrig, aber die Grundlagen der Plattform sehen vielversprechend aus. Dieser Bot ist ein lustiges Werkzeug, um Benutzer in die Welt der Marktmacherei und algorithmischen Handel einzuführen, aber es gewinnt eine Chance gegen etablierte Algorithmen. Hinweis: Wenn Sie diesen Algorithmus in Erwägung ziehen, denken Sie daran, dass die Markteinführung ein Vollzeitjob ist. Alles, was weniger als komplette Hingabe, schnelle Reaktionszeit und 100 Uptime wird dazu führen, dass Sie Geld verlieren. Bearbeiten: Follow-up auf die Nachwirkungen hier Heute Bitcoin Preise nahm einen Tauchgang als Margin Trader auf einem der größten Austausch Bitfinex erhielt ihre Aufträge liquidiert. Für viele enge Marktbeobachter und anspruchsvollere Händler kam das nicht überraschend. Tatsächlich haben sich in den letzten paar Monaten lange Positionen in der Erwartung einer neuen Blase in Bitcoin-Preisen aufgebaut und erreichten so hoch wie 30m in hervorragenden Swap-Positionen auf Bitfinex. Nun, das wäre kein Problem für sich alleine, solange es genug Kapital zur Unterstützung des Darlehens gibt. Leider waren die meisten dieser Long-Positionen rund 600 8211 640 USDBTC und die Sicherheiten wurden meist in Bitcoins selbst zur Verfügung gestellt. Die folgende Grafik zeigt schön den Aufbau von Long-Positionen, peaking um 14. Juli mit knapp 32m in Swaps. Wenn Sie eine kleine Mathematik auf der Wartungsspanne von Bitfinex von 13 ausführen und Bitcoin als Sicherheiten annehmen, finden wir, dass Margin-Anrufe um die 520 8211 540 USDBTC-Marke beginnen sollten. Gestern sind die Preise nahe gekommen und heute sprangen sie endlich über die Klippe. Das Problem ist, dass einmal Margin Anrufe in Sie haben eine kaskadierende Wirkung, die durch das Orderbuch reißt, so dass noch mehr Aufträge den Punkt der keine Rückkehr zu erreichen und die Abwärtsbewegung weiter zu erhöhen. Diese Art von Veranstaltungen sind nicht auf Bitcoin-Börsen beschränkt, sondern können auch an großen Börsen auftreten, wie zum Beispiel während der 2010 Flash-Crash in den USA. Die Ursache eines solchen Blitzes kann variieren und geht von fetten Fingerfehlern zu Programmierfehlern zu Cascading Margin Anrufe. Es ist interessant zu sehen, wie sich der Austausch mit diesen Ereignissen beschäftigt. In den USA hat Nasdaq marktführende Leistungsschalter eingesetzt, die den Handel unter solchen extremen Umständen beenden werden. Bitcoin-Märkte sind noch nicht so fortgeschritten und gehen in der Regel weiter Handel. Wenn wir uns die Auftragsaktion auf Bitfinex anschauen, sehen wir etwas ganz Besonderes: Es scheint (und das ist nur eine Vermutung, da es keinen offiziellen Kommentar von der Börse gibt), als ob Bitfinex einen Algorithmus ausführt, um die Randanrufe zu behandeln. Der Algorithmus beginnt zu verkaufen, aber begrenzt sich auf einen 10 Tropfen der Preise innerhalb von 1 Minute. Wenn die Preise mehr als 10 in 1 Minute fallen, wird es aufhören zu verkaufen und warten auf Kaufaufträge zu kommen. Sobald es wieder eine gewisse Kaufaufträge im Orderbuch gibt, beginnt der Algorithmus wieder zu verkaufen, bis alle Margin-Anrufe erfüllt sind. Edit: LeMogawai war der erste, der dies in diesem Beitrag darauf hinweist und es entspricht meiner persönlichen Beobachtung zum Zeitpunkt der Veranstaltung. Dies scheint ein interessanter Weg zu sein, mit kaskadierenden Margin-Anrufen umzugehen, kann aber auch als Grenzlinienmanipulation von der Börsenseite betrachtet werden. Durch die Ausbreitung der Verkaufsaufträge im Laufe der Zeit wird die Abwärtsmomentum reduziert, aber die Händler am Ende Handel gegen den Austausch selbst und nicht den Markt mehr. Der Austausch hat zu diesem Zeitpunkt einen Informationsvorteil und ist daher eher zu profitieren als die Händler. Glücklicherweise dauerte dies nur etwa 10 Minuten, nach dem die Kontrolle auf den Markt zurückgegeben wurde. Andere Börsen, die auch Margin Trading wie BTC-e und OKcoin bieten, befinden sich nun in einer günstigen Position und können von den heutigen Veranstaltungen lernen. Die Implementierung eines Systems, das den Leistungsschaltern des großen Austausches ähnlicher ähnelt wie Nasdaq, könnte ein kluger erster Schritt sein. Vor kurzem arbeite ich, um meine neue Handelsplattform zu bekommen. Diese neue Version basiert auf Python, nutzt MySQL, um eine Datenbank aller Zeitreihen verschiedener virtueller Währungen mit automatischer Abfüllung von BitcoinCharts zu behalten und integriert die 3 großen Börsen MtGox, BTC-E und Bitstamp. Die Plattform wird als Weg verwendet, um einige Strategien zu backtest und sich im automatischen Handel zu engagieren. Während des Vorlaufs habe ich beschlossen, einige Daten von BTC gegen USD von BitcoinCharts zu ziehen und auf der Grundlage der Ideen eines Papiers von Hashem und Timmermann (1995) eine einfache Handelsstrategie umzusetzen. Die Idee ist, das Vorzeichen der t1 Periodenrendite basierend auf einer Regression zu prognostizieren, die auf einer automatischen Auswahl von technischen Indikatoren während der letzten n Periode bis t geschätzt wird. Dann, nachdem t1 passiert ist, erfrischen wir das Modell und versuchen, t2 mit allen Daten der letzten n Perioden bis t1 und so weiter vorhersagen. Für meine Bachelor-Arbeit habe ich vier verschiedene technische Handelsregeln in Forex-Märkten untersucht. Es verwendet MCS - und SPA-Test, um nach gültigen Modellen unter verschiedenen Parametern zu suchen, die nicht dem Daten-Snooping unterliegen. Unter Berücksichtigung realistischer Transaktionskosten finden wir keine Anhaltspunkte für Überschussrenditen, die mit der Effizienz des Marktes übereinstimmen. Mit diesem Code sollten Sie in der Lage sein, nach Bitcoin Arbitrage Chancen in BTC-e zu suchen. Es nutzt die Idee von einem Preis und wendet Dreieck Arbitrage, unter Berücksichtigung der Kosten und verbreiten. Der Grund, warum ich dies hier posten ist trotzdem es funktioniert, sind die Chancen sind Sie zu langsam, um mit anderen Investoren, die das gleiche zu konkurrieren. Mögliche Verbesserungen wäre, die Auftragsbuchtiefe zu berücksichtigen und die Trades dynamisch aufzuteilen und zu versuchen, andere Händler zu unterbieten, die das gleiche tun. Auch alles auf einem dedizierten Server in der Nähe der physischen Lage des BTC-e-Match-Engine sollte drastisch reduzieren Verzögerung und geben Ihnen eine potenzielle Kante. Post navigationDiese Funktion führt die klassischen Paare Trading Framework in einem bestimmten Satz von Preisen aus Wikipedia, die freie Enzyklopädie: Der Paar Handel wurde in den späten 1980er Jahren von quantitativen Analysten entwickelt und Pionier von Gerald Bamberger während bei Morgan Stanley. Mit der Hilfe von anderen bei Morgan Stanley zu dieser Zeit, darunter Nunzio Tartaglia, stellte Bamberger fest, dass bestimmte Wertpapiere, oft Konkurrenten im selben Sektor, in ihren täglichen Preisbewegungen korrelierten. Als die Korrelation zusammenbrach, d. H. Eine Aktie, die während der anderen gehandelt wurde, würden sie die übertreffende Aktie verkaufen und die Underperforming kaufen, wetten, dass die Streuung zwischen den beiden letztlich konvergieren würde. Quelle: en. wikipedia. orgwikiPairstradeAlgorithmicpairstrading Siehe auch das große Buch Dämon unseres eigenen Designs von Richard Bookstaber, das einen interessanten Hintergrund für die Paar-Handelsstrategie bietet. Es gibt viele Möglichkeiten, wie Sie das Paar Trading Framework implementieren können. Für dieses Paket habe ich einen sehr einfachen Satz von Regeln benutzt. Details finden Sie unter Codes Kommentare. Bitte beachten Sie, dass dieses Paket im Laufe der Jahre entwickelt wurde und es wird nicht mehr genau die Ergebnisse aus meinem 2007 Papier replizieren. Qualitäten des Pakets: - Behandelt eine beliebige Anzahl von Vermögenswerten - Ausgliederungen gesondert die Handlung für den gesamten kumulierten Gewinn aus den langen, kurzen und kombinierten Positionen. - Outputs aller Trades, einschließlich gehandelter Preise und Zeit des Trades. - Bietet dem Benutzer eine große Menge an Eingabemöglichkeiten für den Paarenhandelsalgorithmus, einschließlich: Geldbetrag, um in jede Position (lang und kurz) Wert der Transaktionskosten (in Geldeinheit) Größe des bewegten Fensters für die Suche nach den Paaren über die Preis Daten Periodizität von Paaren Updates maximale Anzahl von Tagen, um jeden Handel (ohne Konvergenz) zu halten. Wert der Schwellenvariablen NATH, P. (2003) Hochfrequentpaare Handel mit US-Treasury-Wertpapieren: Risiken und Prämien für Hedge-Fonds, Working Paper, London Business School. GATEV, E. GOETZMANN, W. N. ROUWENHORST, K. G. (1999) Pairs Trading: Leistung eines Relative Value Arbitrage Rule, Working Paper, Yale School of Management. Erhältlich bei SSRN: ssrnabstract141615. PERLIN, M. S. (2009) Evaluation der Paarhandelsstrategie am brasilianischen Finanzmarkt Journal of Derivatives amp Hedge Funds, V. 15, Nr. 2, S. 122-136. PERLIN, M. S. (2007b) M einer Art: Ein multivariater Ansatz bei Paaren Handel. Arbeitspapier. Verfügbar bei SSRN: ssrnabstract952782.Real-time Trading System Demo Hallo, wenn Sie hier neu sind, möchten Sie vielleicht den RSS-Feed oder E-Mail-Feed für Updates auf Undokumentierte Matlab Themen abonnieren. Am 23. Mai 2013 gab ich einen Vortrag auf der MATLAB Computational Finance Conference in New York. Das Zimmer war voll mit fast 200 Profis in der Finanzbranche. Die Energie und das Feedback waren enorm, es war eine tolle Erfahrung. Wenn du auf die Konferenz gekommen bist, danke für ein großartiges Publikum. Am 19. September 2013 gab ich eine Variation dieser Präsentation auf der MATLAB Computational Finance Virtual Conference. Die Präsentation (PDF-Format) wird hier zur Verfügung gestellt. Die Videoaufnahme ist hier verfügbar. In beiden Fällen stellte ich eine Demo-Anwendung vor, die zeigte, wie Matlab verwendet werden kann, um ein volles Ende-zu-Ende-Handelssystem zu schaffen, das Matlab8217s Potenzial als Plattform der Wahl hervorhebt. Ich habe interaktive Broker verwendet, um Live-Marktdaten-Feed und Accountportfolio-Input sowie für das Senden von Handelsaufträgen auf den Markt über den IB-Matlab-Anschluss zu demonstrieren: Der Trading-Algorithmus, der in der Demo verwendet wird, ist trivial einfach (zufällig). In einem realen System würden Sie es natürlich durch Ihren eigenen proprietären Algorithmus ersetzen. Aber fühlen Sie sich frei, diese Demo als Ausgangspunkt für Ihre Anwendung zu nutzen. Der Demo-Quellcode wird hier zur Verfügung gestellt (tradingDemo. m und unterstützende Dateien). Beachten Sie, dass dies kostenlos, aber ohne jegliche Gewährleistung oder Unterstützung zur Verfügung gestellt wird. Du brauchst natürlich IB-Matlab und ein Interactive Brokers-Konto, um es auszuführen. Ich hoffe, wir haben eine Chance, an Ihren Projekten zusammenzuarbeiten. Schicken Sie mir eine E-Mail, wenn Sie meine Hilfe in jeder Beratungs-, Schulungs - oder Entwicklungsarbeit möchten. 4 Responses to Real-Time Trading System Demo Ich habe die ActiveX Route vor dem Kauf des Produkts ausprobiert. Es gibt einen großen grundlegenden Fehler, wenn es um die Verwendung von ActiveX mit Matlab kommt. Sagen Sie, Sie laufen einen Algorithmus und Sie verarbeiten eine Funktion, und zur gleichen Zeit TWS feuert ein Ereignis. Wenn Sie ActiveX verwenden, wird MATLAB NICHT den Preis aktualisieren, bis die Verarbeitung Ihrer Funktion abgeschlossen ist. So werden mehrere Veranstaltungen verpasst und der Preis, den Sie aussehen würden, wäre ein anderer. Während in JAVA. Es gibt kein solches problem Wie jedes Ereignis gefeuert wird sofort von Java erfasst, die im Hintergrund läuft. Also, wenn Sie getLastPrice anrufen, erhalten Sie den richtigen Preis. Ein weiterer Fehler ist offensichtlich die Tatsache, dass man ActiveX nur mit WINDOWS verwenden kann. Während mit JAVA können Sie es mit Windows, Mac, Linux etc. verwenden. Es ist keine gute Idee, in Live Trades Daten zu streamen, wie es in MATLAB kommt. Stellen Sie sich vor, Sie haben 100 Symbole, die jede Sage 200 ms aktualisiert, also haben Sie einen Handel, der so schnell geschieht und gefangen genommen und in Matlab gespeichert wird. Aufgrund von MATLAB8217s Single-Thread-Problem, werden einige Trades-Ticks verpasst werden und wird auch essen Sie Ihre Erinnerung. Also alles, was du tun kannst, ist nur, um Daten zu streamen und nichts anderes zu tun. Kenan 8211 In der Tat hat die Java-API (die von IB-Matlab verwendet wird) viele Vorteile gegenüber der ActiveX-API (die von MathWorks8217 Trading Toolbox verwendet wird). Eines der glücklichen Ergebnisse der Verwendung von Java ist, dass IB-Matlab auf allen Plattformen laufen kann, die Matlab (Windows, Mac, Linux) ausführen, da alle diese Plattformen sowohl Java als auch einen IB TWS Client haben. Die Java-API ist auch viel schneller und zuverlässiger (der ActiveX-Connector wird gemeldet, um IB-Ereignisse ab und zu fallen zu lassen). In Bezug auf die Streaming-Zitat-Latenzzeit hängt dies von der Sicherheitsvolatilität, der Anzahl der überwachten Wertpapiere, der Netzwerkbandbreite, der Computerhardware, anderen laufenden Prozessen auf dem Computer und einer Vielzahl anderer Aspekte ab, die die Leistung beeinträchtigen können. Auf einem Standard Lenovo Thinkpad E530 Laptop läuft Matlab R2013a auf Win7, erreichte ich Streaming Zitat Latenz so niedrig wie 1-2 mSec (d. h. Hunderte von IB Veranstaltungen pro Sekunde). Natürlich, YMMV. Marco Ruijken sagt: Erfolgreiches Backtesting von algorithmischen Handelsstrategien - Teil I Dieser Artikel setzt die Serie zum quantitativen Handel fort, die mit dem Anfängerleitfaden und der Strategieidentifikation begann. Beide sind länger, mehr involvierte Artikel sind sehr populär gewesen, so dass Ill in dieser Vene fortfahren und Details zum Thema Strategisches Backtesting geben. Algorithmische Backtesting erfordert Wissen über viele Bereiche, einschließlich Psychologie, Mathematik, Statistik, Software-Entwicklung und Marketexchange Mikrostruktur. Ich kann nicht hoffen, all diese Themen in einem Artikel zu decken, also werde ich sie in zwei oder drei kleinere Stücke aufteilen. Was werden wir in diesem Abschnitt diskutieren Ill beginnen mit der Definition Backtesting und dann werde ich beschreiben die Grundlagen, wie es durchgeführt wird. Dann werde ich auf die Vorurteile aufmerksam machen, die wir im Anfängerleitfaden zum quantitativen Handel berührt haben. Als nächstes werde ich einen Vergleich der verschiedenen verfügbaren Backtesting-Software-Optionen vorstellen. In nachfolgenden Artikeln werden wir uns die Details der Strategieimplementierungen anschauen, die oft kaum erwähnt oder ignoriert werden. Wir werden auch darüber nachdenken, wie man den Backtesting-Prozess realistischer macht, indem er die Eigenheiten eines Handelsaustausches einbezieht. Dann werden wir die Transaktionskosten besprechen und wie man sie korrekt in einer Backtest-Einstellung modellieren kann. Wir werden mit einer Diskussion über die Leistung unserer Backtests enden und schließlich ein Beispiel für eine gemeinsame Quant-Strategie, bekannt als ein Mittel-revertierenden Paar Handel. Lasst uns anfangen, zu diskutieren, was Backtesting ist und warum wir es in unserem algorithmischen Handel durchführen sollten. Was ist Backtesting Algorithmic Trading steht abgesehen von anderen Arten von Investment Klassen, weil wir zuverlässiger liefern können Erwartungen über die zukünftige Leistung aus der Vergangenheit Leistung, als Folge der reichlich Datenverfügbarkeit. Der Prozess, durch den dies durchgeführt wird, wird als Backtesting bezeichnet. In einfachen Worten wird das Backtesting durchgeführt, indem Sie Ihren speziellen Strategiealgorithmus einem Strom von historischen Finanzdaten aussetzen, der zu einem Satz von Handelssignalen führt. Jeder Handel (was wir hier als Rundreise von zwei Signalen bedeuten werden) wird einen Gewinn oder Verlust haben. Die Anhäufung dieses Ergebnisses über die Dauer Ihres Strategie-Backtests führt zum Gesamtergebnis (auch bekannt als PL oder PnL). Das ist das Wesen der Idee, obwohl natürlich der Teufel immer in den Details ist Was sind die Hauptgründe für das Backtesting einer algorithmischen Strategie Filtration - Wenn Sie sich aus dem Artikel über Strategy Identification erinnern. Unser Ziel in der ersten Forschungsphase war es, eine Strategie-Pipeline einzurichten und dann jede Strategie herauszufiltern, die bestimmte Kriterien nicht erfüllt hat. Backtesting bietet uns einen weiteren Filtrationsmechanismus, da wir Strategien eliminieren können, die unseren Leistungsanforderungen nicht entsprechen. Modellierung - Backtesting ermöglicht es uns, neue Modelle bestimmter Marktphänomene (zB Transaktionskosten, Order Routing, Latenz, Liquidität oder andere Marktstrukturen) sicher zu testen. Optimierung - Obwohl die Strategieoptimierung mit Vorurteilen behaftet ist, ermöglicht das Backtesting, die Performance einer Strategie zu erhöhen, indem wir die Menge oder die Werte der mit dieser Strategie verbundenen Parameter ändern und deren Performance neu berechnen. Verifizierung - Unsere Strategien werden oft extern über unsere Strategiepipeline bezogen. Das Backtesting einer Strategie stellt sicher, dass es nicht falsch umgesetzt wurde. Obwohl wir nur selten Zugang zu den Signalen haben, die durch externe Strategien erzeugt werden, haben wir oft Zugriff auf die Performance-Metriken wie die Sharpe Ratio - und Drawdown-Merkmale. So können wir sie mit unserer eigenen Umsetzung vergleichen. Backtesting bietet eine Vielzahl von Vorteilen für den algorithmischen Handel. Es ist jedoch nicht immer möglich, eine Strategie direkt zu testen. Im Allgemeinen, da die Häufigkeit der Strategie zunimmt, wird es schwieriger, die Mikrostruktureffekte des Marktes und des Austauschs korrekt zu modellieren. Dies führt zu weniger zuverlässigen Backtests und damit zu einer schwierigeren Auswertung einer gewählten Strategie. Dies ist ein besonderes Problem, bei dem das Ausführungssystem der Schlüssel zur Strategie-Performance ist, wie bei Ultra-Hochfrequenz-Algorithmen. Leider ist das Backtesting mit Vorurteilen aller Typen behaftet. Wir haben einige dieser Themen in früheren Artikeln berührt, aber wir werden sie jetzt ausführlich besprechen. Biases, die Strategy Backtests beeinflussen Es gibt viele Vorurteile, die die Performance einer Backtested-Strategie beeinflussen können. Leider haben diese Vorurteile die Tendenz, die Leistung aufzublasen, anstatt sie zu beeinträchtigen. So solltest du immer einen Backtest als eine idealisierte Obergrenze für die tatsächliche Performance der Strategie betrachten. Es ist fast unmöglich, Vorurteile aus dem algorithmischen Handel zu beseitigen, so dass es unsere Aufgabe ist, sie so gut wie möglich zu minimieren, um fundierte Entscheidungen über unsere algorithmischen Strategien zu treffen. Es gibt vier große Vorurteile, die ich besprechen möchte: Optimierung Bias. Look-Ahead Bias. Überlebenschaden und psychologische Toleranz Bias. Optimierung Bias Dies ist wahrscheinlich die heimtückischste aller Backtest-Bias. Es geht darum, zusätzliche Handelsparameter anzupassen oder einzuführen, bis die Strategieleistung auf dem Backtest-Datensatz sehr attraktiv ist. Doch einmal leben die Leistung der Strategie kann deutlich anders sein. Ein weiterer Name für diese Vorspannung ist Kurvenanpassung oder Daten-Snooping Bias. Optimierung Bias ist schwer zu beseitigen, da algorithmische Strategien oft viele Parameter beinhalten. Parameter in diesem Fall können die eingangseigenen Kriterien, Rückblickperioden, Mittelungsperioden (d. h. der gleitende durchschnittliche Glättungsparameter) oder die Volatilitätsmessfrequenz sein. Die Optimierungsvorspannung kann minimiert werden, indem die Anzahl der Parameter auf ein Minimum reduziert und die Anzahl der Datenpunkte im Trainingssatz erhöht wird. In der Tat muss man auch darauf achten, dass ältere Ausbildungspunkte einer vorherigen Regelung (wie zB einem regulatorischen Umfeld) unterliegen können und daher für Ihre aktuelle Strategie nicht relevant sein können. Eine Methode, um diese Vorliebe zu mildern, besteht darin, eine Sensitivitätsanalyse durchzuführen. Dies bedeutet, dass die Parameter inkrementell variieren und eine Oberfläche der Leistung plotten. Klang, fundamentale Argumentation für Parameterwahlen sollte mit allen anderen betrachteten Faktoren zu einer glatteren Parameteroberfläche führen. Wenn Sie eine sehr jumpy Performance-Oberfläche haben, bedeutet dies oft, dass ein Parameter nicht ein Phänomen reflektiert und ist ein Artefakt der Testdaten. Es gibt eine umfangreiche Literatur über multidimensionale Optimierungsalgorithmen und ist ein sehr aktives Forschungsgebiet. Ich werde es nicht hier verbringen, aber behalte es in den Hinterkopf, wenn du eine Strategie mit einem fantastischen Backtest findest. Blick auf die Bias Look-ahead Bias wird in ein Backtesting System eingeführt, wenn zukünftige Daten versehentlich in einem Punkt in der Simulation, wo diese Daten eigentlich nicht verfügbar waren. Wenn wir den Backtest chronologisch laufen und den Zeitpunkt N erreichen, dann tritt die Vorspannung vor, wenn Daten für jeden Punkt Nk enthalten sind, wobei k0. Look-Ahead Bias Fehler können unglaublich subtil sein. Hier sind drei Beispiele dafür, wie Look-Ahead Bias eingeführt werden kann: Technische Bugs - Arraysvektoren im Code haben oft Iteratoren oder Indexvariablen. Falsche Offsets dieser Indizes können zu einer Vorausschau-Bias führen, indem sie Daten bei Nk für Nicht-Null-k enthalten. Parameterberechnung - Bei der Berechnung von optimalen Strategieparametern, wie bei linearen Regressionen zwischen zwei Zeitreihen, tritt ein weiteres gemeinsames Beispiel für die Vorausschau auf. Wenn der gesamte Datensatz (einschließlich zukünftiger Daten) verwendet wird, um die Regressionskoeffizienten zu berechnen und damit rückwirkend auf eine Handelsstrategie für Optimierungszwecke anzuwenden, werden zukünftige Daten integriert und es gibt eine Vorausschau. MaximaMinima - Bestimmte Handelsstrategien nutzen in jedem Zeitraum extreme Werte, wie zB die Einbeziehung der hohen oder niedrigen Preise in OHLC-Daten. Da jedoch diese maximalen Minimalwerte nur am Ende eines Zeitraums berechnet werden können, wird eine Vorausschau vorgestellt, wenn diese Werte verwendet werden - in der aktuellen Periode. Es ist immer notwendig, die hohen Werte um mindestens einen Zeitraum in einer Handelsstrategie, die sie nutzen, zu hinterlegen. Wie bei der Optimierung Bias, muss man sehr vorsichtig sein, um seine Einführung zu vermeiden. Es ist oft der Hauptgrund, warum Handelsstrategien ihre Backtests deutlich im Live-Handel unterlegen. Survivorship Bias Survivorship Bias ist ein besonders gefährliches Phänomen und kann zu erheblich aufgeblasenen Performance für bestimmte Strategie-Typen führen. Es tritt auf, wenn Strategien auf Datensätzen getestet werden, die nicht das vollständige Universum von früheren Vermögenswerten enthalten, die zu einem bestimmten Zeitpunkt ausgewählt worden sein können, aber nur diejenigen berücksichtigen, die zur gegenwärtigen Zeit überlebt haben. Als Beispiel betrachten wir die Prüfung einer Strategie für eine zufällige Auswahl von Aktien vor und nach dem Markt-Crash 2001. Einige Technologie-Aktien gingen in Konkurs, während andere es geschafft, über Wasser zu bleiben und sogar gedeihen. Wenn wir diese Strategie nur auf Aktien beschränkt hätten, die es durch den Marktabbau gemacht haben, würden wir eine Überlebenschance vorstellen, weil sie uns bereits ihren Erfolg gezeigt haben. In der Tat ist dies nur ein weiterer konkreter Fall von Look-Ahead-Bias, da zukünftige Informationen in die Vergangenheit integriert werden. Es gibt zwei Möglichkeiten, die Überlebensstörung in Ihre Strategie-Backtests zu lindern: Survivorship Bias Free Datasets - Im Fall von Equity-Daten ist es möglich, Datensätze zu kaufen, die bereits ausgewählte Unternehmen enthalten, obwohl sie nicht billig sind und nur von institutionellen Firmen genutzt werden . Insbesondere Yahoo-Finanzdaten sind NICHT Überlebens-Bias frei, und dies wird häufig von vielen Einzelhandels-Algo-Händlern verwendet. Man kann auch auf Assetklassen handeln, die nicht anfällig für Überlebensvorurteile sind, wie z. B. bestimmte Rohstoffe (und ihre zukünftigen Derivate). Verwenden Sie die meisten jüngsten Daten - Im Falle von Aktien, unter Verwendung eines neueren Datensatzes verringert die Möglichkeit, dass die ausgewählte Aktienauswahl für Überlebende gewichtet wird, so wie es weniger Wahrscheinlichkeit für die gesamte Bestandsverdichtung in kürzeren Zeiträumen gibt. Man kann auch mit dem Aufbau eines persönlichen Überlebens-Bias-freien Datensatzes beginnen, indem er Daten vom aktuellen Punkt an sammelt. Nach 3-4 Jahren haben Sie eine solide Überlebens-Bias freie Menge von Aktien Daten, mit denen weitere Strategien zu backtest. Wir werden nun einige psychologische Phänomene betrachten, die Ihre Handelsleistung beeinflussen können. Psychologische Toleranz Bias Diese besonderen Phänomene werden im Kontext des quantitativen Handels nicht oft diskutiert. Es wird jedoch ausführlich in Bezug auf mehr diskretionäre Handelsmethoden diskutiert. Es hat verschiedene Namen, aber Ive beschlossen, nennen sie psychologische Toleranz Bias, weil es das Wesen des Problems fängt. Bei der Erstellung von Backtests über einen Zeitraum von 5 Jahren oder mehr ist es leicht, eine aufwärts gerichtete Aktienkurve zu betrachten, die zusammengesetzte jährliche Rendite, die Sharpe-Ratio und sogar die Drawdown-Merkmale zu berechnen und mit den Ergebnissen zufrieden zu sein. Als Beispiel könnte die Strategie einen maximalen relativen Drawdown von 25 und eine maximale Drawdown-Dauer von 4 Monaten besitzen. Das wäre für eine Impulsstrategie nicht untypisch. Es ist einfach, sich davon zu überzeugen, dass es leicht ist, solche Perioden von Verlusten zu tolerieren, weil das Gesamtbild rosig ist. Doch in der Praxis ist es viel schwieriger Wenn historische Drawdowns von 25 oder mehr in den Backtests auftreten, dann sind alle Wahrscheinlichkeiten Sie Perioden des ähnlichen Drawdowns im Live-Handel sehen. Diese Perioden des Drawdowns sind psychologisch schwer zu ertragen. Ich habe aus erster Hand beobachtet, was ein verlängerter Drawdown sein kann, in einer institutionellen Einstellung, und es ist nicht angenehm - auch wenn die Backtests darauf hindeuten, dass Perioden auftreten werden. Der Grund, warum ich es als eine Vorliebe bezeichnet habe, ist, dass oft eine Strategie, die sonst erfolgreich wäre, vom Handel in Zeiten des erweiterten Drawdowns gestoppt wird und somit zu einer signifikanten Underperformance im Vergleich zu einem Backtest führen wird. So, obwohl die Strategie algorithmisch ist, können psychologische Faktoren noch einen starken Einfluss auf die Rentabilität haben. Der Takeaway ist, um sicherzustellen, dass, wenn Sie sehen, Drawdowns von einem bestimmten Prozentsatz und Dauer in den Backtests, dann sollten Sie erwarten, dass sie in Live-Trading-Umgebungen auftreten, und müssen zu beharren, um die Rentabilität noch einmal zu erreichen. Softwarepakete für das Backtesting Die Softwarelandschaft für das Strategie-Backtesting ist umfangreich. Die Lösungen reichen von einer vollständig integrierten, anspruchsvollen Software bis hin zu Programmiersprachen wie C, Python und R, wo fast alles von Grund auf neu geschrieben werden muss (oder geeignete Plugins erhalten). Als Quant-Trader interessieren wir uns für die Balance, unseren Handelstechnischen Stack gegenüber der Geschwindigkeit und Zuverlässigkeit unserer Entwicklungsmethodik zu besitzen. Hier sind die wichtigsten Überlegungen für die Software-Auswahl: Programming Skill - Die Wahl der Umgebung wird in einem großen Teil auf Ihre Fähigkeit, Software zu programmieren kommen. Ich würde argumentieren, dass die Kontrolle über die gesamte Stack wird eine größere Wirkung auf Ihre langfristige PL als Outsourcing so viel wie möglich an Anbieter Software. Dies ist aufgrund des Nachteilrisikos von externen Bugs oder Idiosyncrasies, die Sie nicht in der Vendor-Software zu beheben, die sonst leicht behoben werden würde, wenn Sie mehr Kontrolle über Ihren Tech-Stack hatte. Sie wollen auch eine Umgebung, die die richtige Balance zwischen Produktivität, Bibliotheksverfügbarkeit und Geschwindigkeit der Ausführung schlägt. Ich mache meine persönliche Empfehlung unten. Execution CapabilityBroker Interaction - Bestimmte Backtesting-Software, wie Tradestation, verbindet sich direkt mit einem Brokerage. Ich bin nicht ein Fan von diesem Ansatz als Reduzierung Transaktionskosten sind oft ein großer Bestandteil der immer eine höhere Sharpe Ratio. Wenn du in einen bestimmten Makler gebunden bist (und Tradestation zwingt dich dazu), dann wirst du eine härtere Zeit haben, auf neue Software (oder einen neuen Makler) zu wechseln, wenn die Notwendigkeit entsteht. Interaktive Broker bieten eine API, die robust ist, wenn auch mit einer leicht stumpfen Schnittstelle. Anpassung - Eine Umgebung wie MATLAB oder Python gibt Ihnen viel Flexibilität bei der Erstellung von Algo-Strategien, da sie fantastische Bibliotheken für fast jede mathematische Operation vorstellen können, aber auch eine umfangreiche Anpassung, wenn nötig. Strategie-Komplexität - Bestimmte Software ist einfach nicht für schwere Knacken oder mathematische Komplexität ausgeschnitten. Excel ist eine solche Software. Während es für einfachere Strategien gut ist, kann es nicht wirklich mit zahlreichen Vermögenswerten oder komplizierteren Algorithmen umgehen. Bias Minimierung - Ist ein bestimmtes Stück Software oder Daten eignet sich mehr zu Handels-Bias Sie müssen sicherstellen, dass, wenn Sie alle Funktionalität selbst erstellen wollen, dass Sie nicht vorstellen Bugs, die zu Vorspannungen führen können. Geschwindigkeit der Entwicklung - man sollte nicht Monate und Monate damit verbringen, einen Backtest-Motor zu implementieren. Prototyping sollte nur ein paar Wochen dauern. Stellen Sie sicher, dass Ihre Software nicht behindert Ihre Fortschritte in einem großen Ausmaß, nur um ein paar zusätzliche Prozentpunkte der Ausführung Geschwindigkeit zu greifen. C ist der Elefant im Raum hier Geschwindigkeit der Ausführung - Wenn deine Strategie ganz von der Ausführungsfristen abhängig ist (wie bei HFTUHFT), dann ist eine Sprache wie C oder C notwendig. Allerdings werden Sie auf Linux-Kernel-Optimierung und FPGA-Nutzung für diese Domains, die außerhalb des Geltungsbereichs dieses Artikels ist Kosten - Viele der Software-Umgebungen, die Sie programmieren können algorithmische Trading-Strategien mit sind völlig frei und Open Source. In der Tat, viele Hedge-Fonds nutzen Open-Source-Software für ihre gesamte Algo Trading Stacks. Darüber hinaus sind Excel und MATLAB beide relativ günstig und es gibt sogar freie Alternativen zu jedem. Nun, da wir die Kriterien aufgelistet haben, mit denen wir unsere Software-Infrastruktur auswählen müssen, möchte ich einige der populärsten Pakete durchlaufen und wie sie sich vergleichen: Hinweis: Ich werde nur Software beinhalten, die den meisten Einzelhandels-Praktikern zur Verfügung steht Software-Entwickler, da dies die Leserschaft der Website ist. Während andere Software verfügbar ist, wie die mehr institutionellen Grade-Tools, fühle ich, dass diese zu teuer sind, um effektiv in einem Einzelhandel verwendet werden und ich persönlich habe keine Erfahrung mit ihnen. Backtesting Software Vergleich Beschreibung: High-Level-Sprache für Geschwindigkeit der Entwicklung entwickelt. Weites Array von Bibliotheken für fast jede programmatische Aufgabe vorstellbar. Gewinnung einer breiteren Akzeptanz in Hedgefonds und Investment Bank Community. Nicht ganz so schnell wie CC für die Ausführungsgeschwindigkeit. Ausführung: Python Plugins existieren für größere Broker wie Interactive Brokers. Daher können Backtest und Execution System alle Teil des gleichen Tech-Stacks sein. Anpassung: Python hat eine sehr gesunde Entwicklungsgemeinschaft und ist eine reife Sprache. NumPySciPy bietet schnelle wissenschaftliche Rechen - und statistische Analysewerkzeuge, die für den Quellhandel relevant sind. Strategie Komplexität: Viele Plugins existieren für die Hauptalgorithmen, aber nicht ganz so groß eine Quant Community wie für MATLAB existiert. Bias Minimierung: Gleiche Bias-Minimierungsprobleme bestehen wie für jede hochrangige Sprache. Muss sehr vorsichtig sein, um zu testen. Entwicklungsgeschwindigkeit: Pythons Hauptvorteil ist Entwicklungsgeschwindigkeit, mit robusten eingebauten Testfähigkeiten. Ausführungsgeschwindigkeit: Nicht ganz so schnell wie C, aber wissenschaftliche Rechenkomponenten sind optimiert und Python kann mit nativen C-Code mit bestimmten Plugins sprechen. Kosten: FreeOpen Quelle Beschreibung: Reife, hochrangige Sprache für die Geschwindigkeit der Ausführung. Breites Spektrum an quantitativen Finanz - und Zahlenbibliotheken. Härter zu debuggen und dauert oft länger als Python oder MATLAB. Extrem weit verbreitet in der Kauf - und Verkaufsseite. Ausführung: Die meisten Brokerage-APIs sind in C und Java geschrieben. So gibt es viele Plugins. Anpassung: CC ermöglicht den direkten Zugriff auf den zugrunde liegenden Speicher, daher können Ultrahochfrequenzstrategien implementiert werden. Strategie Komplexität: C STL bietet eine breite Palette von optimierten Algorithmen. Fast jeder spezialisierte mathematische Algorithmus besitzt eine freie, Open-Source-CC-Implementierung im Web. Bias Minimierung: Look-ahead Bias kann schwierig zu beseitigen, aber nicht härter als andere High-Level-Sprache. Gute Debugging-Tools, aber man muss vorsichtig sein, wenn man sich mit dem zugrunde liegenden Gedächtnis beschäftigt. Entwicklungsgeschwindigkeit: C ist ziemlich ausführlich im Vergleich zu Python oder MATLAB für den gleichen Algorithmus. Mehr Zeilen-Code (LOC) führt oft zu einer größeren Wahrscheinlichkeit von Fehlern. Ausführungsgeschwindigkeit: CC hat extrem schnelle Ausführungsgeschwindigkeit und kann für spezifische Berechnungsarchitekturen gut optimiert werden. Dies ist der Hauptgrund, es zu nutzen. Kosten: Verschiedene Compiler: LinuxGCC ist kostenlos, MS Visual Studio hat unterschiedliche Lizenzen. Verschiedene Strategien erfordern unterschiedliche Softwarepakete. HFT - und UHFT-Strategien werden in CC geschrieben (in diesen Tagen werden sie häufig auf GPUs und FPGAs durchgeführt), während niederfrequente Richtungs-Equity-Strategien in der TradeStation einfach zu implementieren sind, und zwar aufgrund der alles in einer Art der Software-Brokerage. Meine persönliche Vorliebe ist für Python, da es die richtige Anpassung, Geschwindigkeit der Entwicklung, Testfähigkeit und Ausführungsgeschwindigkeit für meine Bedürfnisse und Strategien bietet. Wenn ich etwas schneller brauche, kann ich direkt aus meinen Python-Programmen in C einsteigen. Eine Methode, die von vielen Quellhändlern bevorzugt wird, besteht darin, ihre Strategien in Python zu prototypieren und dann die langsameren Ausführungsabschnitte in iterative Weise in C umzuwandeln. Schließlich ist der ganze Algo in C geschrieben und kann allein gelassen werden, um zu handeln In den nächsten Artikeln zum Backtesting werden wir uns einige Besonderheiten anschauen, die die Implementierung eines algorithmischen Trading-Backtesting-Systems betreffen, sowie wie man die Effekte von Handelsbörsen. Wir diskutieren die Strategieleistungsmessung und schließen schließlich mit einer Beispielstrategie ab. Nur mit dem quantitativen Handel begonnen

No comments:

Post a Comment