Sunday 9 July 2017

Handels Signale Matlab


MatlabTrading Dieser Beitrag ist, wie wichtig es ist, verschiedene Arten von Optimierungsmethoden wie genetische Algorithmen und Parallelisierung verwenden, um Ergebnisse schneller zu erhalten. Genetische Algorithmen Optimierung Trotz der Tatsache, dass das genetische (evolutionäre) Algorithmusprinzip in den MathWorks-Webinars sehr gut erklärt ist, wird es in den Beispielen jedoch nur zur Optimierung der Wahl einer Strategiegruppe aus einem Satz verwendet. Dies ist ein gutes Beispiel für die Verwendung dieser Algorithmen, aber es passiert, dass es notwendig ist, viele Variablen mit erheblichen Intervallen für eine Strategie, die Sie nicht durch mit einer Iteration und die Parallelisierung von Prozessen 8211 Berechnungen kann mehrere Tage dauern . Sicherlich gibt es Strategien in der letzten Phase der Optimierung. Wenn wir fast sicher wissen, dass die Trading-Strategie erfolgreich ist, können wir für mehrere Tage warten oder mieten Sie den gesamten Cluster - das Ergebnis könnte sich lohnen. Allerdings, wenn wir die Ergebnisse einer sperrigen Strategie abschätzen und entscheiden müssen, ob es sich lohnt, die Zeit zu verbringen, dann können genetische Algorithmen perfekt geeignet sein. Wir bieten die Möglichkeit, drei Methoden zur Optimierung der Strategie in WFAToolbox zu verwenden: Lineare Methode 8211 Es ist eine übliche Art der Sortierung, in der Sie alle Zwischenergebnisse (suboptimal) sehen werden. Es gibt maximale Genauigkeit. Parallel-Methode 8211 werden alle Kernel Ihrer CPU verwendet. Es ist nicht erlaubt, Zwischenergebnisse zu sehen, aber erheblich beschleunigt den Betrieb. Es gibt maximale Genauigkeit während Erhöhung der Berechnungsgeschwindigkeit. Genetische Methode 8211 verwendet es den evolutionären Optimierungsalgorithmus. Es erlaubt, suboptimale Werte zu sehen, gibt aber das Ergebnis nahe am besten. Seine nicht eine sehr genaue Methode, aber seine genaue genug für den ersten Lauf der Strategie. Sehr schnell. Wir werden oft gefragt, ob WFAToolbox - Walk-Forward Analysis Toolbox für MATLAB die Möglichkeit hat, die GPU in Berechnungen zu verwenden. Leider ist GPU nicht für alle Aufgaben geeignet und seine Verwendung ist sehr spezifisch. Um es zu benutzen, müssen Sie die Logik und den Code der einzelnen Strategien für Grafikkerne testen. Leider, aufgrund dieser Nicht-Universalität der Methode kann man nicht verwenden GPU in WFAToolbox. Weiterführend Teil 2 der Diskussion von Problemen und Lösungen in der Prüfung und Analyse der algorithmischen Handelsstrategie in MATLAB, lade ich Sie zu diesem Beitrag über das Problem der Nichtverfügbarkeit der Visualisierung der Prozesse in modernen Software-Lösungen für das Testen von Handelssystemen zu lesen. Visualisierung des Testprozesses In meiner Arbeitserfahrung analysierte ich häufig andere populäre Plattformen für das Trading-Strategie-Testen. Wie zum Beispiel TradeStation. MetaStock. Multicharts etc. und ich war immer überrascht, wie wenig Aufmerksamkeit für die Visualisierung des Testprozesses bezahlt wurde. Die Sache ist, dass, wenn wir nicht sehen, die Ergebnisse der Zwischen-, suboptimale Werte der optimierten Parameter, wir oft wegwerfen Gold zusammen mit dem Schmutz. Die Sache ist, weil eine übermäßig breite Stichprobe, die Strategie passt die Parameter, wie wir entweder sehen, eine perfekte Strategie, die im wirklichen Leben scheitert oder sehen Sie ein oder zwei Angebote, die angeblich die besten sind, weil es solche Zeitintervalldaten, wo die gewählt wurde Beste Handelsstrategie wäre Buy-and-Hold, aber warum sind dann andere Strategien notwendig für die Visualisierung des Trading-Strategie-Testprozess in MATLAB (im Webinar vorgeschlagen) Als Ergebnis, ohne zu sehen, Zwischenergebnisse, müssen wir 171blindly187 ändern Sie die Parameter zu versuchen Um die besseren Daten zu erhalten oder sehen Sie sie in einigen 3D oder 4D (Farbe ist die 4. Dimension), wie in Webinaren vorgeschlagen. Die Analyse der Werte in den N-dimensionalen Räumen kann auf jeden Fall eine Alternative sein, hat aber mehrere Einschränkungen: Was passiert, wenn es mehr als 4 Dimensionen Wenn Sie sehen, welche Signale und mit welcher Frequenz sie in der Preisklasse erscheinen, haben Sie fast alle Notwendige visuelle Darstellung Ihrer Strategie: die Häufigkeit der Transaktionen, ihre Rentabilität (Einkommenskurve), die Genauigkeit der Öffnung, die Ähnlichkeit mit anderen suboptimalen Werten usw., die nicht über die Leistung im N-dimensionalen Raum gesagt werden können, wo alle nützlichen Informationen Ist in der Tat, dass der optimale Wert nicht nur eine ist, sondern es gibt einen ganzen Bereich von suboptimalen Werten in einem oder mehreren Bereichen. Während Optimierung einer Strategie in WFAToolbox 8211 Walk-Forward Analysis Toolbox für MATLAB174. Wenn ein neuer optimaler Wert gefunden wird, werden die Trading-Strategiesignale in der Periode in-sample und out-of-sample sofort auf dem Chart angezeigt, so dass Sie immer kontrollieren können, welchen Bereich von Optionen Sie zuweisen sollten, und Sie können auch die Optimierung anhalten Ohne auf das Ende des Tests warten, wie es klar wird, dass etwas schief ging oder alles in Ordnung ist. Hallo, mein Name ist Igor Volkov. Ich entwickle seit 2006 algorithmische Handelsstrategien und habe in mehreren Hedgefonds gearbeitet. In diesem Artikel möchte ich die Schwierigkeiten auf dem Weg der MATLAB Trading Strategies Entwickler während der Prüfung und Analyse zu diskutieren, sowie mögliche Lösungen zu diskutieren. Seit 2007 nutze ich MATLAB zum Testen von Algorithmusstrategien, und ich bin zu dem Schluss gekommen, dass es sich dabei nicht nur um das geeignetste Forschungswerkzeug handelt, sondern auch um das mächtigste, weil es die Verwendung von komplexen statistischen und ökonometrischen Modellen, Maschine-Lernen, digitale Filter, Fuzzy-Logik, etc, indem Toolbox. Die MATLAB-Sprache ist recht einfach und gut dokumentiert, so dass selbst ein Nichtprogrammierer (wie ich) es beherrschen kann. Wie alles begann. Es war 2008 (wenn ich mich nicht irre), als das erste Webinar über den algorithmischen Handel in MATLAB mit Ali Kazaam veröffentlicht wurde, das das Thema der Optimierung einfacher Strategien basierend auf technischen Indikatoren, etc. trotz eines ziemlich 8220chaotic8221-Codes enthielt, waren Werkzeuge interessant Genug zu bedienen. Sie dienten als Ausgangspunkt für die Erforschung und Verbesserung eines Test - und Analysemodells, das es erlaubte, die gesamte Kraft der Werkzeugkästen und die Freiheit der MATLAB-Aktionen während der Schaffung der eigenen Handelsstrategien zu nutzen und gleichzeitig den Prozess zu kontrollieren Der Tests und die erhaltenen Daten und ihre anschließende Analyse würde ein wirksames Portfolio von robusten Handelssystemen wählen. Anschließend wurden die Mathworks-Webinare jedes Jahr aktualisiert und allmählich mehr und mehr interessante Elemente eingeführt. So wurde im Jahr 2010 das erste Webinar zum Paarenhandel (statistisches Arbitrage) unter Verwendung der Econometric Toolbox abgehalten, obwohl die Toolbox für Testen und Analysen gleich geblieben ist. Im Jahr 2013 erschien Trading Toolbox von Mathworks, die erlaubt, MATLAB an verschiedene Broker für die Ausführung ihrer Anwendungen zu verbinden. Obwohl es automatische Lösungen für die Durchführung der Transaktionen gab, könnte MATLAB von diesem Punkt an ein System für die Entwicklung von Handelsstrategien mit einem vollen Zyklus betrachtet werden: von der Datenverladung bis zur Ausführung automatisierter Handelsstrategien. Warum sollte jeder Algotrader Reinly the Wheel Allerdings hat Mathworks nicht eine komplette Lösung für das Testen und Analysieren der Strategien 8211 angeboten, die Codes, die Sie von Webinaren erhalten konnten, waren die einzigen Elemente eines vollständigen Systemtests, und es war notwendig, sie zu modifizieren , Passen Sie sie an und fügen Sie sie zur GUI für Benutzerfreundlichkeit hinzu. Es war sehr zeitaufwendig und stellte so eine Frage: Was auch immer die Strategie war, es muss durch denselben Test - und Analyseprozess gehen, der es erlauben würde, als stabil und nutzbar zu klassifizieren, also warum sollte jeder Algotrader das Rad neu erfinden und schreiben Seinen eigenen Code für die richtigen Test-Strategien in MATLAB Also die Entscheidung wurde getroffen, um ein Produkt, das ermöglichen würde, um den gesamten Prozess im Zusammenhang mit der Prüfung und Analyse von algorithmischen Handelsstrategien mit einer einfachen und benutzerfreundlichen Schnittstelle. Zuerst möchte ich die folgenden Fragen beantworten: Was mit dem Blog passiert ist 1. Jev Kuznetsov ist nicht der Eigentümer mehr Der Blog wurde von unserem Freund, Jev Kuznetsov, der zu seinem anderen Blog tradingwithpython. blogspot verschoben hat gekauft. Er kam zu dem Schluss, dass Python besser ist als MATLAB für den Handel, den ich für falsch halte. MATLAB bleibt eine der besten Software der Welt für algorithmische Handelszwecke IMHO (Ich habe einige Tatsachen über dieses zwar für zukünftige Diskussion). 2. Wir haben die Marke verändert Von diesem Moment wird der Blog MatlabTrading genannt werden, was viel verständlicher ist in Bezug auf die Themen, die es enthalten wird. Außerdem wurde der Domänenname in matlabtrading anstelle des ursprünglichen matlab-trading. blogspot geändert. Obwohl die alte Domäne immer noch von dem primären Domänennamen weiterleitet. Was passiert mit dem Blog 1. Mehr Beiträge und Artikel Wir hoffen, das Leben in diesem Blog zu bringen, indem wir relevante Inhalte ein - oder zweimal pro Woche posten. In den ersten Monaten werden wir vor allem die Artikel und Videos posten, die wir bereits haben, um es unseren Lesern einfacher zu machen, nach Informationen über eine Ressource zu suchen und vernetzen zu können. Dann haben wir Pläne, Beiträge über praktische Aspekte des algorithmischen Handels in MATLAB zu schreiben. Wie schafft man moderne automatische Handelsstrategien wie: Statistische Arbitrage Paare Handel bedeuten Reversion marktneutrale Handelsstrategien auf Cointegration bollinger Bands kalman Filter etc für Rohstoffe, Aktien und Forex basiert. Trend nach Strategien mit Jurik Moving Average und anderen anspruchsvollen digitalen Filtern Vorhersage Strategien mit maschinellem Lernen (Support Vector Machines) und andere Methoden Erstellen Sie robuste Trading-Strategien mit visuellen Walk-forward-Tests Geld-Management für die Reinvestition Ihres Kapitals (Wissenschaft, wie man 1M von 10K zu bekommen In einem Jahr mit maximaler, aber geschätzter Risiko - und Schweißbelastung). Vielleicht nach der Lektüre dieses youve dachte, das wird ein weiterer dummer Artikel für die armen Jungs suchen, wie man reich durch den Handel auf Forex und all das werden. Nun, das ist völlig falsch Wir arbeiten in MATLAB, und die Mehrheit von uns sind Wissenschaftler und Experten in diesem Aspekt, so dass alles ernst ist. 2. Mehr Interaktivität Ich werde glücklich sein, wenn wir alle über Kommentare in Beiträgen beziehen können. Abonnieren Sie unsere News, um über die neuesten Beiträge und Veranstaltungen informiert zu werden. Später haben wir Pläne, Google Hangouts Webinare zu machen. Dont miss it, klicken Sie auf Follow-Button an der oberen rechten Ecke zu unserer Community beitreten. Was möchten Sie in unseren Blogbeiträgen lesen? Welche Themen können Sie vorschlagen? Schreiben Sie hier in den Kommentaren. In meinem früheren Post kam ich zu dem Schluss, dass die Nähe zu engen Paaren Handel ist nicht so profitabel, wie es früher vor 2010 war. Ein Leser wies darauf hin, dass es sein könnte, dass Mittel-wiederkehrende Natur der Spreads nur in Richtung kürzere Zeitskalen verschoben . Ich habe zufällig die gleiche Idee zu teilen, so dass ich beschlossen, diese Hypothese zu testen. Dieses Mal wird nur ein Paar getestet: 100 SPY vs -80 IWM. Backtest wird auf 30-Sekunden-Bar-Daten von 11.2011 bis 12.2012 durchgeführt. Die Regeln sind einfach und ähnlich wie Strategie, die ich in der letzten Post getestet: Wenn Bar Rückgabe des Paares 1 auf z-Score übersteigt, den nächsten Balken. Das Ergebnis sieht sehr hübsch aus: Ich halte dies für ausreichend, um zu beweisen, dass es in der 30-Sekunden-Skala noch genügend Mittelwert-Reversion gibt. Wenn Sie denken, dass diese Tabelle zu gut ist, um wahr zu sein, ist das leider tatsächlich der Fall. Es wurden keine Transaktionskosten oder Bid-Ask-Spannen berücksichtigt. In der Tat, ich würde bezweifeln, dass es keinen Gewinn nach der Subtraktion aller Handelskosten übrig. Doch diese Art von Charts ist die Karotte baumelt vor meiner Nase, halten mich gehen. Schlechte Nachrichten alle, nach meinen Berechnungen, (die ich aufrichtig hoffe, sind falsch) ist das klassische Paar Handel ist tot. Manche Leute würden stark widersprechen, aber hier ist, was ich gefunden habe: Lets nehmen eine hypothetische Strategie, die auf einem Korb von etfs funktioniert: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Von diesen etfs 90 einzigartig Paare gebildet werden können. Jedes Paar ist marktneutral aufgebaut. Strategie Regeln: An jedem Tag, für jedes Paar, berechnen z-Score basierend auf 25-Tage-Standardabweichung. Wenn z-Score gt Schwelle, gehen Sie kurz, schließen nächsten Tag Wenn z-Score lt-Schwelle gehen lange, schließe nächsten Tag Um es ganz einfach, die Berechnung erfolgt ohne Kapitalmanagement (man kann bis zu 90 Paare im Portfolio haben An jedem Tag). Auch Transaktionskosten werden nicht berücksichtigt. Um es einfach auszudrücken, verfolgt diese Strategie eine eintägige Umkehrung der Marktneutralspreads. Hier werden die Ergebnisse für mehrere Schwellen simuliert: Egal welche Schwelle verwendet wird, die Strategie ist 2008 sehr erfreulich, ziemlich gut von 2009 und völlig wertlos ab Anfang 2010. Dies ist nicht das erste Mal, dass ich auf diese Veränderung im Mittelrückgang gestoßen bin Verhalten in etfs. Egal, was Ive versuchte, hatte ich kein Glück bei der Suche nach einem Paar Handelsstrategie, die auf ETFs Vergangenheit 2010 arbeiten würde. Meine Schlussfolgerung ist, dass diese Arten von einfachen stat-arb Modelle nur dont schneiden es nicht mehr. Algorithmic Trading mit MATLAB - 2010 I Wird folgende Fehlermeldung angezeigt: Fehler beim Verwenden - Matrixdimensionen müssen zustimmen. Fehler in filter2 (Zeile 10) diffabs (X1 (: 3) - cr) Fehler bei scribe. legendmethodsgtlscan (Linie 935) newpop filter2 (Einsen (3), pop) Fehler bei scribe. legendmethodsgtgetbestlocation (Linie 700) pos (1: 2) lscan (Doppel (h. Axes), Doppelzimmer (h. Plotchildren), pos (3), pos (4), 0,1) Fehler bei scribe. legendmethods (Zeile 19) varargout feval (args) Fehler bei legendcolorbarlayoutgtdoBestLegendLayout ( Linie 1159) pos Methoden (Griff (h), x27getbestlocationx27) Fehler bei legendcolorbarlayout (Linie 120) doBestLegendLayout (ax, h) Fehler bei scribe. legendinit (Linie 137) legendcolorbarlayout (ax, x27addToLayoutListx27, double (h)) Fehler bei Schreiber. H. init () Fehler in legendgtmakelegend (Zeile 386) lhscribe. legend (ha, orient, location, position, children, listen, strings, propargs) Fehler in Legende (Zeile 284) h, msg makelegend (ha , Varargin (arg: end)) Fehler in AlgoTradingDemo1 (Zeile 21) Legende (x27Closex27, x27Leadx27, x27Lagx27, x27Locationx27, x27Bestx27) Interessanter Ansatz, der noch arbeitet. Bringen Sie auf die Kurvenanpassung Das tradeSignal. m hat definitiv einen Fehler. Couldnx27t ganz Ivanx27s Lösung erhalten, um zu arbeiten. Ich habe es wie folgt umgestellt: change to idx indLoc (:) und add if (ind2use (iInd) 0) sigCsigB elseif (ind2use (iInd1) 0) sigCsigA Ich habe auch einige vars umbenannt und dieses eval Geschäft losgeworden, scheint schneller zu arbeiten . Vollständiger Code unten, wenn es mehr Fehler fühlen sich frei zu kommentieren. Re Sharpe annualization - OMG Jungs Wenn Sie diese Sharpe-Maximierung verwenden, sollten Sie auch erkennen, dass youx27re nicht wirklich das Sharpe-Verhältnis maximieren, wenn Sie nicht mit indexierten Preisen arbeiten. Die Pnl Funktion Preise Unterschiede gibt (nicht Returns), Sharpe-Ratio arbeitet mit Funktion zurück SIGOUT Tradesignal (pop, ind) bitstring Länge cntBString Größe (pop, 2) berechnen Indikatoren Länge 4NoIndicators - 2 cntInd (cntBString2) 4 Kontrollstellen indLoc 1: 3 : CntBString-cntInd indLocEnd max (indLoc) Erzeugung Signal sigOut Nullen (Größe (ind, 1), Größe (Pop, 1)) für iPop 1: Größe (pop, 1) ind2use logisch (pop (iPop, cntBString-cntInd1: )) Idx indLoc (:) für iInd 1: Länge (idx) -1 Indikator 1 if (iInd 1) ersten Indikator sigAind (: iInd) Pop (iPop, idx (iInd)) für alle anderen Indikatoren auswerten, kombinieren mit die Ergebnisse erzeugt bisher sigA sIGC Ende Indikator 2 sigBind (:, iInd1) pop (iPop, idx (iInd1)) Anschluss, wenn (ind2use (IIND) 0) sigCsigB I1 inaktiv elseif (ind2use (iInd1) 0) sigCsigA I2 inaktiv sonst conValue BIN2DEC (num2str (pop (iPop, (1: 2) idx (IIND)))) wechseln conValue Fall 0 sIGC bitand (sIGA sigB) Fall 1 sIGC bitor (sIGA sigB) Fall 2 sIGC BITXOR (sIGA sigB) Ende Ende für sigOut (:, iPop) sigC Ende Nach Ivan scheint es, dass wir das rohe Signal -11 in 01 umwandeln müssen, um tradeSignal. m genau zu nutzen. Angenommen, pop1 0 0 0 1 1, tradeSignal (pop, 1 -1) 0 während tradeSignal (pop, 1 0) 1, wobei letzteres das richtige Signal ist, das der Regel gegeben wird. Ich habe einige Probleme mit tradeSignal. m Funktion Es scheint, ein Fehler zu sein dort: le nehmen wir an, dass wir Pop 1 0 0 1 0 0 0 0 1 1 haben, das bedeutet, nicht Indikator 1 zu verwenden und Rückkehr zutreffend, wenn indicator2 1 und indicator3 0 Signale 0 1 0, die die Bedingungen von pop erfüllen müssen. Jetzt laufe ich tradeSignal (Pop, Signale) und bekomme 0. Also gibt es einen Fehler. Ix27m, die an Zeile 50 und 57 denken. Zuerst sollten wir Zeile 46 beschreiben: filteredSignals ind (:, ind2use) Zeile 51: Ein eval (x27 (filteredSignals (:, 1) pop (r, x27, idxstr, x27) (X27, num2str (i1), x27) pop (r, x27, idxstr, x27)) x27) Nun wird der Test der korrigierten Funktionssignale 0 0 0 0 0 1 0 1 0 überprüft 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 s tradeSignal (Pop, Signale) s I39m Studium der Elektrotechnik (Bachelor). Inzwischen habe ich herausgefunden, dass ich die Toolboxen sowieso nicht bekommen kann. Das ist, es sei denn, ich kaufe eine persönliche Matlab Lizenz und diese beiden Toolboxes, da es unmöglich ist, Toolboxes hinzufügen, um die Schüler-Version. Im Moment ist das ein wenig zu viel von einer Investition für etwas, das quotjustquot ein Hobby ist. Tatsächlich gibt es einige Funktionen in MATLAB geschrieben, damit Sie schnell herunterladen Daten von Yahoo, die ganz die gleiche Sache ist, sind Sie mit Zipline lokal. Und es ist kostenlos. Zum Beispiel diese. Allerdings gibt es noch viele Dinge zu tun, vor allem Infrastruktursachen wie das Übersetzen von Handelssignalen in die Fachzeitschrift, berechnen somit CAGR, Beta, Alpha, alle Arten von kleinen, aber notwendigen Sachen. My 2c versucht, sich mit Python, it39s frei und beliebt vertraut zu machen. Es kann tatsächlich mehr tun. Zum Beispiel, vor langer Zeit erhalten Sie eine gute Idee, und wollen ein Zeug zu überwachen Stock Schwankungen sowie schnell schreiben und senden Sie einen Auftrag zu schreiben. Matlab wird weniger bequem, weil es im Grunde Single-threaded.

No comments:

Post a Comment