Wednesday 15 November 2017

Pca Trading Strategien


Produktion Credit Association - PCA DEFINITION der Produktion Credit Association - PCA Eine föderale Instrumentalität von Kongress durch die Farm Credit Act von 1933 erstellt, um kurz-und mittelfristige Kredit für Landwirte, Viehzüchter und ländlichen Einwohner. Der Kredit wurde verlängert, so dass die Empfänger Gehäuse kaufen, Marketing-Aktivitäten durchführen, landwirtschaftliche Geräte und Viehbestände kaufen und landwirtschaftliche Betriebe betreiben können. Zu der Zeit war Kredit entweder nicht verfügbar oder war nur bei unerschwinglich hohen Zinssätzen wegen der Großen Depression zur Verfügung. Ackerland und Rohstoffe werent so viel wert, und Banken hatten bereits viele landwirtschaftliche Darlehen auf ihre Bücher. Produktionskreditvereinigungen können Darlehen gewähren oder garantieren, deren Konditionen nicht mehr als sieben, 10 oder 15 Jahre betragen, je nach den Finanzierungsbanken. Das Darlehen muss über 15 oder weniger Jahre abgeschrieben werden, und jede Refinanzierung darf die Darlehenslaufzeit nicht länger als 15 Jahre nach dem ursprünglichen Leihdatum verlängern. BREAKING DOWN Produktion Credit Association - PCA Das Farm Credit System, ein staatlich gefördertes Unternehmen, das 1916 gegründet wurde, bietet Finanzierungs - und Finanzdienstleistungen im Zusammenhang mit der Landwirtschaft und umfasst eine Reihe von Kreditinstituten. Neben den Produktionskreditverbänden gehören ua landwirtschaftliche Kreditvereinigungen, landwirtschaftliche Kreditbanken, Banken für Genossenschaften, landwirtschaftliche Kreditinstitute, bundesstaatliche Kreditinstitute, Bundeslandbankverbände und Bundeslandkreditvereinigungen. PCAs erhalten ihre Finanzierung von Farm Kredit-Banken und besitzen ihre Darlehen Vermögenswerte. Das Farm Credit System erhöht Geld durch den Verkauf von Schuldverschreibungen an Investoren in den USA und im Ausland. In dieser Zeitschrift The Journal of Investment Strategies widmet sich die rigorose Behandlung von modernen Anlagestrategien, die weit über die klassischen Ansätze hinausgehen, sowohl in den Themeninstrumenten als auch in den Methoden. Bei der Bereitstellung einer ausgewogenen Vertretung der akademischen, Buy-Side - und Sell-Side-Forschung fördert das Journal die Cross-Bestäubung von Ideen unter Forschern und Praktikern, die einen einzigartigen Nexus von Akademie und Industrie einerseits und theoretische und angewandte Modelle auf der andere. Das Journal enthält eingehende Forschungsarbeiten sowie Diskussionsartikel zu technischen und marktüblichen Fächern und zielt darauf ab, die globale Investitionsgemeinschaft mit praktischer und innovativer Forschung auszustatten, um moderne Anlagestrategien zu verstehen und umzusetzen. Mit einem Fokus auf wichtige zeitgenössische Anlagestrategien, Techniken und Management, betrachtet die Zeitschrift Papiere zu folgenden Bereichen: Grundlegende Strategien. Einschließlich fundamentaler Makro, fundamentaler Eigenkapital oder Kreditauswahl Relative Value Strategies. Schätzung und Investition in die relative Bewertung von verwandten Wertpapieren, sowohl Vanille als auch Derivate Taktische Strategien. Strategien auf der Grundlage von Prognosen und Investitionen in, Muster des Marktverhaltens, wie Impuls oder mittlere Reversion, und taktische Asset Allocation Strategien. Event-Driven Strategies: Strategien basierend auf der Prognose der Wahrscheinlichkeit von Marktbewegungsereignissen oder Marktreaktionen auf solche Ereignisse Algorithmische Handelsstrategien. Modelle der Marktmikrostruktur, Liquidität und Marktwirkung sowie algorithmische Handelsabwicklung und Marktführungsstrategien Hauptinvestitionsstrategien. Anlagestrategien für illiquide Wertpapiere und Kapitalbeteiligung oder Finanzierung von Immobilien und Unternehmen Portfolio Management und Asset Allocation. Modelle zur Portfoliooptimierung, Risikokontrolle, Leistungszuordnung und Asset Allocation Ökonometrische und statistische Methoden. Mit Anträgen auf Anlagestrategien Das Journal of Investment Strategies wurde für die Berichterstattung in Thomson Reuters Emerging Sources Citation Index ausgewählt. Dieses Papier studiert zentrale (Zusammenschaltungsrisiko) Maßnahmen und ihren Mehrwert in einem aktiven Portfolio-Optimierungs-Framework. In diesem Beitrag untersuchen die Autoren, wie sich die Transaktionskosten der Port-Fee auf die Portfolio-Rebalancing auswirken. Die Autoren schlagen einen analytischen Rahmen vor, um Investitionsmöglichkeiten zu messen und das Risiko über die Zeit auf der Grundlage der Mahalanobis-Distanz zuzuordnen. In diesem Papier geben die Autoren vollständige Algorithmen und Quellcode für den Aufbau statistischer Risikomodelle. Dieses Papier schlägt vor, einen Optimierungsmechanismus in der Währungsüberlagerungs-Portfolio-Konstruktion zu verwenden. Die Autoren dieser Arbeit leiten eine optimale Handelsstrategie ab, die den Schlusskurs in einem Mittelwert-Optimierungsrahmen festlegt. Die Autoren dieser Arbeit zielen darauf ab, Portfolios, die durch eine robuste Optimierung ausgewählt wurden, zu entmystifizieren, indem sie die Begrenzung von Portfolios in den Fällen der großen und kleinen Unsicherheit in den mittleren Renditen betrachtet. Die Autoren dieses Papiers analysieren ein gleichwertiges Portfolio an globalen Cross-Asset-Class-Risikofaktor-Expositionen. Die Autoren dieses Papiers geben einen vollständigen Algorithmus und Quellcode für den Aufbau allgemeiner Multifaktor-Risikomodelle über jede Kombination von Stilfaktoren, Hauptkomponenten und Industriefaktoren. Dieses Papier verwendet die Fraktional Kelly Strategien Rahmen zu zeigen, dass optimale Portfolios mit Low-Beta-Aktien generieren höhere mittlere Reichtum und niedrigere Intra-Horizont-Shortfall-Risiko. Die Autoren dieses Aufsatzes wenden einen zukunftsorientierten Ansatz für das Minimum-Varianz-Portfolio-Optimierungsproblem für eine Auswahl von 100 Aktien an. Dieses Papier untersucht die Ursachen der Qualitätsanomalie durch die Erforschung von zwei möglichen Erklärungen - die Risikobewertung und die Verhaltensansicht. Dieses Papier untersucht die optimale Gestaltung von Mitteln, die Kapitalschutz bei einer bestimmten Reife bieten. Dieses Papier untersucht das Problem des optimalen Handels mit allgemeinen Alpha-Prädiktoren mit linearen Kosten und vorübergehenden Auswirkungen. Dieses Papier projiziert ein optimales, unbeschränktes Faktor-Portfolio auf eine Reihe aller möglichen Portfolios mit Tracking-Error als Distanzmaß. Dieses Papier analysiert empirische Daten für 4000 reale Handelsbestände mit Haltedauer von ca. 0,7-19 Handelstagen. Dieses Papier leitet explizite Formeln für die optimale Implementierungs-Shortfall-Handelskurve mit linearer und nichtlinearer Marktwirkung ab. Die Autoren dieser Arbeit schlagen eine Aktienauswahlmethode vor, die auf einer variablen Auswahlmethode basiert, die mit PCA in multivariaten Statistiken verwendet wird. Dieses Papier vergleicht sechzehn verschiedene Länderauswahlstrategien innerhalb einer Stichprobe von achtundsiebzig Ländern zwischen 1999-2015. Dieses Papier identifiziert eine Reihe von strukturellen Ineffizienzen in den US-Small-Cap-Aktienmarkt, die genutzt werden können, um Alpha zu generieren. Batch Strategies 5: Ein kurzfristiges Machine Learning System It8217s Zeit für den 5. und letzten Teil der Build Better Strategies Serie. In Teil 3 haben wir den Entwicklungsprozess eines modellbasierten Systems erörtert und folglich die Serie mit der Entwicklung eines Data-Mining-Systems abzuschließen. Die Grundsätze des Data Mining und des maschinellen Lernens sind das Thema Teil 4. Für unser kurzfristiges Handelsbeispiel verwenden wir einen tiefen Lernalgorithmus. Ein gestapeltes Autoencoder, aber es wird auf die gleiche Weise mit vielen anderen maschinellen Lernalgorithmen arbeiten. Mit today8217s Software-Tools sind nur etwa 20 Zeilen Code für eine maschinelle Lernstrategie erforderlich. Ich versuche, alle Schritte im Detail zu erklären. Unser Beispiel ist ein Forschungsprojekt 8211 ein maschinelles Lernversuch zur Beantwortung von zwei Fragen. Gibt es einen komplexeren Algorithmus 8211 wie etwa Neuronen und tieferes Lernen 8211 eine bessere Vorhersage und sind kurzfristige Preisbewegungen vorhersehbar durch kurzfristige Preisgeschichte Die letzte Frage kam aufgrund meiner Skepsis über Preisaktionen Handel im vorherigen Teil Dieser Serie. Ich habe mehrere E-Mails fragen über die 8220trading System generators8221 oder ähnliche Preis Action-Tools, die auf einigen Websites gelobt werden. Es gibt keinen harten Beweis dafür, dass solche Werkzeuge jemals einen Gewinn produziert haben (außer ihren Anbietern) 8211 aber bedeutet dies, dass sie alle Müll sind, die wir sehen werden. Unser Experiment ist einfach: Wir sammeln Informationen von den letzten Kerzen einer Preiskurve, füttern sie in ein tiefes Neuronales Netz und verwenden es, um die nächsten Kerzen vorherzusagen. Meine Hypothese ist, dass ein paar Kerzen keine nützlichen prädiktiven Informationen enthalten. Natürlich hat ein nicht-pädagogisches Ergebnis des Experiments gewollt, dass I8217m richtig ist, da ich falsche Parameter benutzt oder die Daten schlecht vorbereitet haben könnte. Aber ein prädiktives Ergebnis wäre ein Hinweis, dass I8217m falsch und Preis Aktion Handel kann in der Tat profitabel sein. Maschinelle Lernstrategie Entwicklung Schritt 1: Die Zielvariable Um den vorherigen Teil wiederzugeben. Ein überwachter Lernalgorithmus wird mit einem Satz von Merkmalen trainiert, um eine Zielvariable vorherzusagen. Also das erste, was zu bestimmen ist, was diese Zielvariable sein soll. Ein beliebtes Ziel, das in den meisten Beiträgen verwendet wird, ist das Zeichen der Preisrendite an der nächsten Bar. Besser für die Vorhersage geeignet, da weniger anfällig für Zufälligkeit, ist der Preisunterschied zu einem entfernteren Vorhersagehorizont. Wie 3 Bars ab jetzt oder am selben Tag nächste Woche. Wie fast alles in Handelssystemen ist der Vorhersagehorizont ein Kompromiss zwischen den Auswirkungen der Zufälligkeit (weniger Stäbe sind schlechter) und Vorhersagbarkeit (weniger Stäbe sind besser). Manchmal sind Sie nicht daran interessiert, den Preis direkt vorherzusagen, sondern bei der Vorhersage eines anderen Parameters 8211 wie dem aktuellen Bein eines Zickzack-Indikators 8211, der sonst nur im Nachhinein bestimmt werden könnte. Oder Sie wollen wissen, ob ein gewisser Markt Ineffizienz in der nächsten Zeit vorhanden sein wird, vor allem, wenn you8217re mit Maschinen lernen nicht direkt für den Handel, sondern für die Filterung Trades in einem modellbasierten System. Oder Sie wollen etwas ganz anderes vorhersagen, zum Beispiel die Wahrscheinlichkeit eines Marktumschlags morgen. All dies ist oft einfacher zu prognostizieren als die beliebte morgen8217s zurück. In unserem Preisaktionsexperiment verwenden wir die Rückgabe eines kurzfristigen Preishandels als Zielvariable. Sobald das Ziel bestimmt ist, wählt der nächste Schritt die Features aus. Schritt 2: Die Features Eine Preiskurve ist der schlechteste Fall für jeden maschinellen Lernalgorithmus. Nicht nur, dass es wenig Signal und meistens Lärm trägt. Es ist auch nichtstationär und das Signalnoise-Verhältnis ändert sich die ganze Zeit. Das genaue Verhältnis von Signal und Rauschen hängt davon ab, was mit 8220signal8221 gemeint ist, aber es ist normalerweise zu niedrig für jeden bekannten maschinellen Lernalgorithmus, um etwas Nützliches zu produzieren. So müssen wir Merkmale aus der Preiskurve ableiten, die mehr Signal und weniger Lärm enthalten. Signal, in diesem Zusammenhang, ist jede Information, die verwendet werden kann, um das Ziel vorherzusagen, was auch immer es ist. Der ganze Rest ist Lärm. So ist die Auswahl der Features entscheidend für den Erfolg 8211 viel kritischer als die Entscheidung, welche Maschine Lernalgorithmus you8217re verwenden wird. Es gibt zwei Ansätze zur Auswahl von Features. Die erste und häufigste ist, so viel Informationen aus der Preiskurve wie möglich zu extrahieren. Da Sie nicht wissen, wo die Informationen verborgen sind, generieren Sie einfach eine wilde Sammlung von Indikatoren mit einer breiten Palette von Parametern und hoffen, dass zumindest einige von ihnen die Informationen enthalten, die der Algorithmus braucht. Das ist der Ansatz, den man normalerweise in der Literatur findet. Das Problem dieser Methode: Jeder maschinelle Lernalgorithmus wird leicht durch nichtpictictive Prädiktoren verwirrt. So ist es gewohnt, nur 150 Indikatoren zu werfen. Sie benötigen einen Vorwahlalgorithmus, der bestimmt, welche von ihnen nützliche Informationen tragen und welche weggelassen werden können. Ohne die Funktionen auf diese Weise zu verkleinern, um vielleicht acht oder zehn, sogar der tiefste Lernalgorithmus gewann. Der andere Ansatz, in der Regel für Experimente und Forschung, verwendet nur begrenzte Informationen aus der Preiskurve. Dies ist der Fall hier: Da wir den Preishandelshandel untersuchen wollen, verwenden wir nur die letzten Preise als Inputs und müssen den Rest der Kurve verwerfen. Dies hat den Vorteil, dass wir keinen Vorwahlalgorithmus benötigen, da die Anzahl der Features ohnehin begrenzt ist. Hier sind die beiden einfachen Prädiktorfunktionen, die wir in unserem Experiment verwenden (in C): Die beiden Funktionen sollen die notwendigen Informationen für die Preisgestaltung tragen: per-bar Bewegung und Volatilität. Die Änderungsfunktion ist die Differenz des aktuellen Preises zum Preis von n Stäben vor, in Bezug auf den aktuellen Preis. Die Reichweite Funktion ist die gesamte High-Low-Distanz der letzten n Kerzen, auch in Bezug auf den aktuellen Preis. Und die Skalenfunktion zentriert und komprimiert die Werte auf den Bereich -100, so dass wir sie mit 100 teilen, damit sie auf -1 normalisiert werden können. Wir erinnern uns, dass die Normalisierung für maschinelle Lernalgorithmen erforderlich ist. Schritt 3: Vorwählen von Vorverzerrungsprädiktoren Wenn Sie eine große Anzahl von Indikatoren oder anderen Signalen als Funktionen für Ihren Algorithmus ausgewählt haben, müssen Sie festlegen, welche davon nützlich ist und welche nicht. Es gibt viele Methoden zur Reduzierung der Anzahl der Features, zum Beispiel: Bestimmen Sie die Korrelationen zwischen den Signalen. Entfernen Sie diese mit einer starken Korrelation zu anderen Signalen, da sie nicht zu den Informationen beitragen. Vergleichen Sie den Informationsinhalt der Signale direkt mit Algorithmen wie Informationsentropie oder Entscheidungsbäumen. Bestimmen Sie den Informationsinhalt indirekt durch Vergleich der Signale mit randomisierten Signalen gibt es einige Software-Bibliotheken für diese, wie die R Boruta-Paket. Verwenden Sie einen Algorithmus wie Principal Components Analysis (PCA), um einen neuen Signalsatz mit reduzierter Dimensionalität zu erzeugen. Verwenden Sie die genetische Optimierung für die Bestimmung der wichtigsten Signale nur durch die profitabelsten Ergebnisse aus dem Vorhersageprozess. Ideal für Kurvenanpassung, wenn Sie beeindruckende Ergebnisse in einer Forschungsarbeit veröffentlichen möchten. Für unser Experiment müssen wir die Funktionen nicht vorwählen oder vorverarbeiten, aber hier finden Sie nützliche Informationen zu den Artikeln (1), (2) und (3), die am Ende der Seite aufgeführt sind. Schritt 4: Wählen Sie die Maschine Lernalgorithmus R bietet viele verschiedene ML-Pakete, und jeder von ihnen bietet viele verschiedene Algorithmen mit vielen verschiedenen Parametern. Auch wenn du dich schon über die Methode 8211 entschieden hast, tiefes Lernen 8211 hast du immer noch die Wahl zwischen verschiedenen Ansätzen und verschiedenen R-Paketen. Die meisten sind ganz neu, und man findet nicht viele empirische Informationen, die Ihrer Entscheidung helfen. Sie müssen sie alle ausprobieren und Erfahrungen mit verschiedenen Methoden sammeln. Für unser Experiment wählte wir das Deepnet-Paket, das wohl die einfachste und einfachste, tiefe Lernbibliothek zu verwenden ist. Das hält unseren Code kurz. We8217re mit seinem Stacked Autoencoder (SAE) Algorithmus für Vor-Training des Netzwerks. Deepnet bietet auch eine beschränkte Boltzmann Maschine (RBM) für Vor-Training, aber ich konnte nicht gute Ergebnisse daraus. Es gibt andere und komplexere tiefe Lernpakete für R, also kannst du viel Zeit damit verbringen, sie alle auszuprobieren. Wie Vor-Training funktioniert leicht erklärt, aber warum es funktioniert ist eine andere Sache. Nach meinem Wissen ist noch niemand mit einem soliden mathematischen Beweis aufgetreten, dass es überhaupt funktioniert. Wie auch immer, stellen Sie sich ein großes neuronales Netz mit vielen versteckten Schichten vor: Trainieren Sie das Netz bedeutet, die Verbindungsgewichte zwischen den Neuronen aufzubauen. Die übliche Methode ist Fehler-Backpropagation. Aber es stellt sich heraus, dass die versteckten Schichten Sie haben, desto schlimmer funktioniert es. Die Backpropagated Fehler Begriffe werden kleiner und kleiner von Schicht zu Schicht, so dass die ersten Schichten des Netzes fast nichts zu lernen. Das bedeutet, dass das vorhergesagte Ergebnis mehr und mehr von dem zufälligen Anfangszustand der Gewichte abhängig ist. Dies beschränkte die Komplexität von Schicht-basierten neuronalen Netzen und damit die Aufgaben, die sie lösen können. Zumindest vor 10 Jahren. Im Jahr 2006 veröffentlichten die Wissenschaftler in Toronto erstmals die Idee, die Gewichte mit einem unüberwachten Lernalgorithmus, einer beschränkten Boltzmann-Maschine, vorzureisen. Das war ein revolutionäres Konzept. Es förderte die Entwicklung der künstlichen Intelligenz und erlaubte alle möglichen neuen Anwendungen von Go-Spielmaschinen zu selbstfahrenden Autos. Im Falle eines gestapelten Autoencoders funktioniert es auf diese Weise: Wähle die verborgene Ebene, um mit der ersten versteckten Schicht zu beginnen. Verbinden Sie seine Ausgänge mit einer temporären Ausgabeschicht, die die gleiche Struktur wie die network8217s-Eingangsschicht hat. Füttere das Netzwerk mit den Trainingsmustern, aber ohne die Ziele. Trainieren Sie es so, dass die erste verborgene Schicht das Eingangssignal 8211 die Merkmale 8211 an ihren Ausgängen so genau wie möglich wiedergibt. Der Rest des Netzwerks wird ignoriert. Während des Trainings, wenden Sie eine 8216weight Penalty term8217, so dass so wenig Anschlussgewichte wie möglich für die Wiedergabe des Signals verwendet werden. Füttern Sie nun die Ausgänge der trainierten versteckten Schicht zu den Eingängen der nächsten ungeübten verborgenen Schicht und wiederholen Sie den Trainingsvorgang, so dass das Eingangssignal nun an den Ausgängen der nächsten Schicht wiedergegeben wird. Wiederholen Sie diesen Vorgang, bis alle versteckten Ebenen trainiert sind. Wir haben jetzt ein 8216sparse network8217 mit sehr wenigen Schichtverbindungen, die die Eingangssignale wiedergeben können. Jetzt trainiere das Netzwerk mit Backpropagation zum Lernen der Zielvariablen, indem du die vorgeschulten Gewichte der verborgenen Schichten als Ausgangspunkt verwende. Die Hoffnung ist, dass der unbeaufsichtigte Vor-Trainingsprozess eine interne geräuschreduzierte Abstraktion der Eingangssignale erzeugt, die dann zum leichteren Lernen des Ziels genutzt werden können. Und das scheint zu funktionieren. Niemand weiß wirklich, warum, aber mehrere Theorien 8211 siehe Papier (4) unter 8211 versuchen, dieses Phänomen zu erklären. Schritt 5: Erzeugen eines Testdatensatzes Zuerst müssen wir einen Datensatz mit Merkmalen und Zielen erstellen, damit wir unseren Vorhersageprozess testen und Parameter ausprobieren können. Die Features müssen auf den gleichen Preisdaten basieren wie im Live-Handel, und für das Ziel müssen wir einen kurzfristigen Handel simulieren. So macht es Sinn, die Daten nicht mit R zu generieren, sondern mit unserer Handelsplattform, die sowieso viel schneller ist. Hier ist ein kleines Zorro-Skript dafür, DeepSignals. c: We8217re erzeugt 2 Jahre Daten mit Merkmalen, die durch unsere oben definierten Änderungs - und Bereichsfunktionen berechnet wurden. Unser Ziel ist die Rückkehr eines Handels mit 3 bar Lebensdauer. Die Handelskosten werden auf Null gesetzt, so dass in diesem Fall die Rendite der Preisdifferenz bei 3 bar in der Zukunft entspricht. Die adviseLong-Funktion ist im Zorro-Handbuch beschrieben, es ist eine mächtige Funktion, die automatisch das Training und die Vorhersage verarbeitet und erlaubt, jeden R-basierten Maschinen-Lernalgorithmus zu verwenden, als ob es ein einfacher Indikator wäre. In unserem Code verwendet die Funktion die nächste Trade Return als Ziel und die Preisänderungen und Bereiche der letzten 4 Takte als Features. Die SIGNALS-Flagge sagt, dass sie die Daten nicht ausbilden soll, sondern sie in eine CSV-Datei exportieren soll. Die BALANCED-Fahne stellt sicher, dass wir so viele positive wie negative Renditen bekommen, was für die meisten maschinellen Lernalgorithmen wichtig ist. Führen Sie das Skript im Train-Modus mit unserem üblichen Test Asset EURUSD ausgewählt. Es erzeugt eine Tabellenkalkulation mit dem Namen DeepSignalsEURUSDL. csv, die die Features in den ersten 8 Spalten enthält, und die Handelsrückgabe in der letzten Spalte. Schritt 6: Kalibrieren des Algorithmus Komplexe Maschinen Lernalgorithmen haben viele Parameter anpassen. Einige von ihnen bieten große Chancen, den Algorithmus für Publikationen zu platzieren. Dennoch müssen wir Parameter kalibrieren, da der Algorithmus nur selten mit seinen Standardeinstellungen arbeitet. Hierfür steht hier ein R-Skript, das den zuvor erstellten Datensatz liest und mit dem tiefen Lernalgorithmus (DeepSignal. r) verarbeitet: We8217ve definierte drei Funktionen neural. train. Neural. predict Und neural. init für die Ausbildung, Vorhersage und Initialisierung des neuronalen Netzes. Die Funktionsnamen sind nicht willkürlich, sondern folgen der Konvention, die von Zorro8217s empfohlen wird (NEURAL) Funktion. Es ist jetzt wichtig, aber es wird später wichtig sein, wenn wir das gleiche R-Skript für die Ausbildung und den Handel der tiefen Lernstrategie verwenden. Eine vierte Funktion, TestOOS. Wird für das Out-of-Probe-Testen unseres Setups verwendet. Die Funktion neural. init sät den R zufälligen Generator mit einem festen Wert (365 ist meine persönliche Glückszahl). Ansonsten würden wir jedes Mal ein etwas anderes Ergebnis bekommen, da das neuronale Netz mit zufälligen Gewichten initialisiert wird. Es erstellt auch eine globale R-Liste namens 8220Models8221. Die meisten R Variablen Typen don8217t müssen vorher erstellt werden, einige tun (don8217t fragen mich warum). Der Operator 8216ltlt-8216 ist für den Zugriff auf eine globale Variable aus einer Funktion. Die Funktion neural. train nimmt als Eingabe eine Modellnummer und den zu trainierenden Datensatz an. Die Modellnummer identifiziert das trainierte Modell in der 8220 Modelle 8221. Eine Liste ist für diesen Test nicht wirklich nötig, aber wir brauchen es für komplexere Strategien, die mehr als ein Modell trainieren. Die Matrix, die die Merkmale und das Ziel enthält, wird an die Funktion als zweiter Parameter übergeben. Wenn die XY-Daten keine richtige Matrix sind, die häufig in R passiert, je nachdem wie du es erzeugt hast, wird es in eins umgewandelt. Dann wird es in die Merkmale (X) und das Ziel (Y) aufgeteilt, und schließlich wird das Ziel in 1 für ein positives Handelsergebnis umgewandelt und 0 für ein negatives Ergebnis. Die Netzwerkparameter werden dann eingerichtet. Manche sind offensichtlich, andere sind frei zu spielen mit: Die Netzwerkstruktur wird durch den versteckten Vektor gegeben: c (50,100,50) definiert 3 versteckte Schichten, die erste mit 50, Sekunde mit 100 und dritter mit 50 Neuronen. Das ist der Parameter, den wir später ändern können, um festzustellen, ob tiefer besser ist. Die Aktivierungsfunktion konvertiert die Summe der Neuroneneingabewerte in die am häufigsten verwendete Neuronausgabe Sigmoid, die auf 0 oder 1 sättigt, oder tanh, die auf -1 oder 1 sättigt. Wir verwenden hier tanh, da sich unsere Signale auch im -1-Bereich befinden . Die Ausgabe des Netzwerks ist eine Sigmoidfunktion, da wir eine Vorhersage im 0..1 Bereich haben wollen. Der SAE-Ausgang muss jedoch 8220linear8221 sein, damit der Stacked Autoencoder die analogen Eingangssignale an den Ausgängen wiedergeben kann. Die Lernrate steuert die Schrittgröße für den Gradientenabstieg beim Training eine niedrigere Rate bedeutet feinere Schritte und möglicherweise präzisere Vorhersage, aber längere Trainingszeit. Momentum fügt einen Bruchteil des vorherigen Schrittes zum aktuellen hinzu. Es verhindert, dass der Steigungsabstieg an einem kleinen lokalen Minimum - oder Sattelpunkt stecken bleibt. Die Lernraten-Skala ist ein Multiplikationsfaktor für die Veränderung der Lernrate nach jeder Iteration (ich bin mir nicht sicher, was das gut ist, aber es kann Aufgaben geben, bei denen eine niedrigere Lernrate auf höheren Epochen das Training verbessert). Eine Epoche ist eine Trainings-Iteration über den gesamten Datensatz. Das Training wird aufhören, sobald die Anzahl der Epochen erreicht ist. Mehr Epochen bedeuten bessere Vorhersage, aber längere Ausbildung. Die Batchgröße ist eine Anzahl von zufälligen Samples 8211, eine Mini-Batch 8211, die aus dem Datensatz für einen einzelnen Trainingslauf herausgenommen wird. Die Aufteilung der Daten in Mini-Chargen beschleunigt das Training, da der Gewichtsgradient dann aus weniger Proben berechnet wird. Je höher die Chargengröße, desto besser ist das Training, aber je mehr Zeit es dauert. Der Ausfall ist eine Anzahl von zufällig ausgewählten Neuronen, die während einer Mini-Charge deaktiviert sind. Auf diese Weise lernt das Netz nur mit einem Teil seiner Neuronen. Dies scheint eine seltsame Idee, aber kann effektiv reduzieren Overfitting. Alle diese Parameter sind für neuronale Netze üblich. Spiel mit ihnen herum und überprüfe ihre Wirkung auf das Ergebnis und die Trainingszeit. Die ordnungsgemäße Kalibrierung eines neuronalen Netzes ist nicht trivial und könnte das Thema eines anderen Artikels sein. Die Parameter werden im Modell zusammen mit der Matrix der trainierten Anschlussgewichte gespeichert. Also müssen sie nicht wieder in der Vorhersagefunktion gegeben werden, neural. predict. Es nimmt das Modell und einen Vektor X von Merkmalen, führt es durch die Schichten und gibt die Netzwerkausgabe, das vorhergesagte Ziel Y zurück. Im Vergleich zum Training ist die Vorhersage ziemlich schnell, da es nur ein paar tausend Multiplikationen braucht. Wenn X ein Zeilenvektor war, wird es transponiert und auf diese Weise in einen Spaltenvektor umgewandelt, ansonsten akzeptiert die nn. predict-Funktion. Verwenden Sie RStudio oder eine ähnliche Umgebung, um bequem mit R. zu arbeiten. Bearbeiten Sie den Pfad zu den. csv-Daten in der obigen Datei, geben Sie sie ein, installieren Sie die benötigten R-Pakete (deepnet, e1071 und caret) und rufen dann die TestOOS-Funktion aus dem Befehl auf Linie. Wenn alles funktioniert, sollte es so etwas ausdrucken: TestOOS liest zuerst unseren Datensatz aus dem Zorro8217s Datenordner. Es teilt die Daten in 80 für das Training (XY. tr) und 20 für Out-of-Probe-Tests (XY. ts). Der Trainings-Set wird trainiert und das Ergebnis in der Models-Liste bei Index 1 gespeichert. Der Test-Set wird weiter in Features (X) und Targets (Y) aufgeteilt. Y wird in binäre 0 oder 1 umgewandelt und in Y. ob gespeichert. Unser Vektor der beobachteten Ziele. Wir prognostizieren dann die Ziele aus dem Test-Set, konvertieren sie wieder in binäre 0 oder 1 und speichern sie in Y. pr. Für den Vergleich der Beobachtung mit der Vorhersage verwenden wir die confusionMatrix-Funktion aus dem Caret-Paket. Eine Verwirrungsmatrix eines binären Klassifikators ist einfach eine 22152 Matrix, die wie viele 08217s und wie viele 18217s falsch und richtig vorhergesagt wurden. Viele Metriken werden aus der Matrix abgeleitet und in den obigen Zeilen gedruckt. Das wichtigste im Moment ist die 62 Vorhersagegenauigkeit. Dies kann darauf hindeuten, dass ich Preisvorschlag handelte, der ein wenig vorzeitig handelte. Aber natürlich hätten die 62 nur Glück gehabt Wir sehen das später noch, wenn wir einen WFO-Test durchführen. Eine abschließende Beratung: R-Pakete werden gelegentlich aktualisiert, mit der möglichen Konsequenz, dass früherer R-Code plötzlich anders funktionieren könnte oder gar nicht. Das passiert wirklich, also teste sorgfältig nach jedem Update. Schritt 7: Die Strategie Nun, da wir unseren Algorithmus getestet haben und eine Vorhersagegenauigkeit über 50 mit einem Testdatensatz erhalten haben, können wir endlich unsere Maschinenlernstrategie kodieren. In der Tat haben wir schon das meiste davon kodiert, wir müssen nur noch ein paar Zeilen zum obigen Zorro-Skript hinzufügen, das den Datensatz exportiert hat. Dies ist das letzte Skript für die Ausbildung, das Testen und (theoretisch) den Handel des Systems (DeepLearn. c): We8217re mit einem WFO-Zyklus von einem Jahr, aufgeteilt in einem 90 Training und einer 10 out-of-Probe Testperiode. Sie könnten fragen, warum ich früher zwei Jahre8217s Daten und eine andere Split, 8020, für die Kalibrierung des Netzwerks in Schritt 5 verwendet haben. Dies ist für die Verwendung von unterschiedlich zusammengesetzten Daten für die Kalibrierung und für Vorwärts-Tests. Wenn wir genau die gleichen Daten verwendet haben, könnte die Kalibrierung es übertreiben und den Test beeinträchtigen. Die ausgewählten WFO-Parameter bedeuten, dass das System mit ca. 225 Tagen Daten trainiert wird, gefolgt von einer 25-Tage-Test - oder Trade-Periode ohne Training. In der Literatur finden Sie manchmal Empfehlungen, um ein maschinelles Lernsystem nach jedem Handel oder zumindest jeden Tag umzuschulen. Aber das macht mir nicht viel Sinn. Wenn Sie fast 1 Jahr8217 Daten für die Ausbildung eines Systems verwendet haben, kann es sich offensichtlich nicht verschlechtern nach einem einzigen Tag. Oder wenn es tat, und nur produziert positive Testergebnisse mit täglichen Umschulung, würde ich stark vermuten, dass die Ergebnisse sind Artefakte durch einige Kodierung Fehler. Die Ausbildung eines tiefen Netzwerks dauert sehr lange, in unserem Fall etwa 10 Minuten für ein Netzwerk mit 3 versteckten Schichten und 200 Neuronen. Da dies bei jedem WFO-Zyklus wiederholt wird, wird die Verwendung mehrerer Kerne empfohlen, um viele Zyklen parallel zu trainieren. Die Variable NumCores bei -1 aktiviert alle CPU-Kerne, aber eine. Mehrere Kerne sind nur in Zorro S verfügbar, so dass ein kompletter Vorwärts-Test mit allen WFO-Zyklen mehrere Stunden mit der kostenlosen Version dauern kann. Im Skript trainieren wir nun auch lange und kurze Trades. Dazu müssen wir eine Absicherung im Trainingsmodus erlauben, da lange und kurze Positionen gleichzeitig geöffnet sind. Die Eingabe einer Position ist nun abhängig vom Rückgabewert von der beratenden Funktion, die wiederum entweder die neural. train - oder die neural. predict-Funktion aus dem R-Skript anruft. So kommen wir hierher, wenn das neuronale Netz ein Ergebnis über 0,5 prognostiziert. Das R-Skript wird nun von der Zorro-Skript gesteuert (dafür muss es den gleichen Namen haben, NeuralLearn. r. Nur mit unterschiedlicher Erweiterung). Es ist identisch mit unserem R-Skript oben, da wir mit den gleichen Netzwerkparametern arbeiten. Für die Unterstützung eines WFO-Tests wird nur eine zusätzliche Funktion benötigt: Die neural. save-Funktion speichert die Modellliste 8211 enthält sie nun 2 Modelle für lange und für kurze Trades 8211 nach jedem Trainingslauf im Zorro8217s Datenordner. Da die Modelle für den späteren Gebrauch gelagert werden, brauchen wir sie nicht wieder für wiederholte Testläufe zu trainieren. Dies ist die mit dem Skript generierte WFO-Eigenkapitalkurve (EURUSD, ohne Handelskosten): Obwohl nicht alle WFO-Zyklen ein positives Ergebnis erhalten, scheint es, dass es einige prädiktive Effekte gibt. Die Kurve entspricht einer jährlichen Rendite von 89, die mit einer 50-100-50 versteckten Schichtstruktur erreicht wurde. Wir überprüfen den nächsten Schritt, wie sich unterschiedliche Netzwerkstrukturen auf das Ergebnis auswirken. Seit dem neural. init Neural. train Neural. predict Und neural. save Funktionen werden automatisch von Zorro8217s beratenLongadviseShort Funktionen aufgerufen, es gibt keine R-Funktionen direkt im Zorro-Skript aufgerufen. So kann das Skript unverändert bleiben, wenn eine andere maschinelle Lernmethode verwendet wird. Nur das DeepLearn. r-Skript muss modifiziert werden und das neuronale Netz wird beispielsweise durch eine Unterstützungsvektormaschine ersetzt. Für den Handel eines solchen maschinellen Lernsystems live auf einem VPS, stellen Sie sicher, dass R auch auf dem VPS installiert ist, die benötigten R-Pakete installiert sind und der Pfad zum R-Terminal in Zorro8217s Ini-Datei eingerichtet ist. Andernfalls bekommst du beim Starten der Strategie eine Fehlermeldung. Schritt 8: Das Experiment Wenn unser Ziel eine Strategie entwickelt hatte, wären die nächsten Schritte die Realitätsprüfung, das Risiko - und Geldmanagement und die Vorbereitung auf den Live-Handel, wie es unter der modellbasierten Strategieentwicklung beschrieben wurde. Aber für unser Experiment laufen wir nun eine Reihe von Tests, wobei die Anzahl der Neuronen pro Schicht von 10 auf 100 in 3 Schritten erhöht wurde, und 1, 2 oder 3 versteckte Schichten (deepnet unterstützt nicht mehr als 3). So sehen wir in die folgenden 9 Netzwerkstrukturen: c (10), c (10,10), c (10,10,10), c (30), c (30,30), c (30,30,30 ), C (100), c (100,100), c (100,100,100). Für dieses Experiment brauchst du einen Nachmittag auch mit einem schnellen PC und im Mehrkernmodus. Hier sind die Ergebnisse (SR Sharpe Ratio, R2 Slope Linearität): Wir sehen, dass ein einfaches Netz mit nur 10 Neuronen in einer einzigen versteckten Schicht gewinnt, um gut für kurzfristige Vorhersage zu arbeiten. Die Netzwerkkomplexität verbessert die Leistung, allerdings nur bis zu einem gewissen Punkt. Ein gutes Ergebnis für unser System wird bereits mit 3 Schichten x 30 Neuronen erreicht. Noch mehr Neuronen haben viel zu helfen und manchmal sogar ein schlechteres Ergebnis zu produzieren. Das ist keine wirkliche Überraschung, denn für die Verarbeitung von nur 8 Eingaben können 300 Neuronen wahrscheinlich keinen besseren Job machen als 100. Fazit Unser Ziel war es, festzustellen, ob ein paar Kerzen prädiktive Kraft haben können und wie die Ergebnisse von der Komplexität des Algorithmus beeinflusst werden . Die Ergebnisse scheinen darauf hinzudeuten, dass kurzfristige Preisbewegungen in der Tat vorher durch die Analyse der Veränderungen und Bereiche der letzten 4 Kerzen vorhergesagt werden können. Die Vorhersage ist nicht sehr genau 8211 it8217s in der 58..60 Reihe, und die meisten Systeme der Testreihe werden unrentabel, wenn Handelskosten eingeschlossen werden. Trotzdem muss ich meine Meinung über Preisaktionen handeln. Die Tatsache, dass sich die Vorhersage mit der Netzwerkkomplexität verbessert, ist ein besonders überzeugendes Argument für die kurzfristige Preisvorhersagbarkeit. Es wäre interessant, die langfristige Stabilität der prädiktiven Preismuster zu betrachten. Dazu mussten wir noch eine Reihe von Experimenten durchführen und die Trainingszeit (WFOPeriod im Skript oben) und den 90 ISOOS Split ändern. Das dauert längere Zeit, da wir mehr historische Daten verwenden müssen. Ich habe ein paar Tests gemacht und bisher gefunden, dass ein Jahr in der Tat eine gute Trainingszeit zu sein scheint. Das System verschlechtert sich mit längeren Perioden als ein paar Jahre. Predictive Preismuster, zumindest von EURUSD, haben eine begrenzte Lebensdauer. Wo können wir von hier aus gehen, um eine Vielzahl von Möglichkeiten zu nutzen, zum Beispiel: Nutzen Sie mehr Kerzen und verarbeiten Sie sie mit weit größeren Netzwerken mit Tausenden von Neuronen. Verwenden Sie Oversampling für die Erweiterung der Trainingsdaten. Die Vorhersage verbessert sich immer mit mehr Trainingsproben. Zeitreihenfolge komprimieren Mit spektraler Analyse und analysieren nicht die Kerzen, sondern ihre Frequenzdarstellung mit maschinellen Lernmethoden. Verwenden Sie Eingaben von vielen Kerzen 8211 wie zB 100 8211 und Vorproben benachbarter Kerzen mit eindimensionalen Faltungsnetzwerkschichten. Verwenden Sie wiederkehrende Netzwerke. Besonders LSTM könnte sehr interessant sein, um die Zeitreihe 8211 zu analysieren, und nach meinem Wissen wurden sie bisher nur selten für die finanzielle Vorhersage verwendet. Verwenden Sie ein Ensemble von neuronalen Netzwerken für die Vorhersage, wie Aronson8217s 8220oracles8221 und 8220comitees8221. Papiere Artikel I8217ve fügte die C - und R-Skripte zum Skript-Repository von 2016 hinzu. Du brauchst beide in Zorro8217s Strategie-Ordner. Zorro Version 1.474 und R Version 3.2.5 (64 Bit) wurde für das Experiment verwendet, aber es sollte auch mit anderen Versionen arbeiten. Die Ergebnisse wurden durch die überarbeitete Version von DeepSignals. r 8211 generiert. Nur Änderung wurde von LSTM net aus dem rnn Paket auf CRAN verwendet. Die Autoren des Pakets betrachten ihre LSTM-Implementierung als 8220experimental8221 und glauben nicht, dass es noch richtig lernt, also hoffentlich mehr Verbesserung, um dort zu kommen. (Abgebrochene Zeiten versuchen, das LSTM-Element mit dem mxnet-Paket zu erreichen, aber gab es als notn8217t heraus, das korrekte Eingabeformat herauszufinden, wenn es mehrere Trainingsmerkmale benutzt.) Werden Ergebnisse des vollständigen WFO, wenn ich die LSTM-Version von DeepLearn. r Confusion Matrix beendet habe Statistik Referenz Vorhersage 0 1 0 1641 1167 1 1225 1701 Genauigkeit. 0,5828 95 CI. (0.5699, 0.5956) Keine Information Rate. 0,5002 P-Wert Acc gt NIR. Lt2e-16 Kappa 0.1657 Mcnemar039s Test P-Wert. 0,2438 Empfindlichkeit. 0,5726 Spezifität. 0,5931 Pos Pred Value. 0.5844 Neg Pred Value. 0.5813 Prävalenz 0.4998 Erkennungsrate. 0.2862 Nachweis-Prävalenz. 0.4897 Ausgewogene Genauigkeit. 0,5828 039Positive039 Klasse. 0 Ergebnisse der WFO-Test unten. Auch hier ist nur die Änderung der Originaldateien die Verwendung von LSTM in R, anstatt DNNSAE. Walk-Forward-Test DeepLearnLSTMV4 EURUSD Simuliertes Konto AssetsFix Bar Zeitraum 1 Stunde (durchschnittlich 87 min) Simulationszeitraum 15.05.2014-07.06.2016 (12486 bar) Testzeitraum 04.05.2015-07.06.2016 (6649 bar) Rückblickperiode 100 bar (4 Tage) WFO-Testzyklen 11 x 604 Takte (5 Wochen) Trainingszyklen 12 x 5439 Stäbe (46 Wochen) Monte Carlo Zyklen 200 Angenommener Schlupf 0,0 Sek. Spread 0,0 Pips (Rolle 0,000,00) Verträge pro Los 1000,0 Brutto Winloss 3628 -3235 ( 5199p) Durchschnittlicher Gewinn 360Jahr, 30Monat, 1.38 Uhr Max. Drawdown -134 34 (MAE -134 34) Gesamtsumme 95 (TAE 95) Max. Ausfallzeit 5 Wochen ab Aug 2015 Max. Offener Marge 40 Max. Offenes Risiko 35 Handelsvolumen 5710964 (5212652Jahr ) Transaktionskosten 0,00 spr, 0,00 slp, 0,00 rol Eigenkapital 262 Anzahl der Geschäfte 6787 (6195Jahr, 120woche, 25 Tag) Prozentgewinn 57,6 Max Winloss 16 -14 Durchschnittliches Handelsergebnis 0,06 0.8p (12.3p -14.8p) Durchschnittlicher Handelsschlupf 0,00 0.0p (0.0p -0.0p) Durchschnittliche Handelsscheine 1 (1 -2) Max. Handelsbars 3 (3 Stunden) Zeit im Markt 177 Max. Offene Trades 3 Max. Verluststreifen 17 (unkorreliert 11) Jährliche Rendite 137 Profitfaktor 1,12 (PRR 1,08) Sharpe-Verhältnis 1,79 Kelly-Kriterium 2,34 R2-Koeffizient 0,435 Ulzer-Index 13,3 Vorhersagefehler 152 Konfidenzniveau AR DDMax-Kapital 10 143 128 252 20 129 144 278 30 117 161 306 40 107 179 336 50 101 190 355 60 92 213 392 70 85 232 425 80 77 257 466 90 64 314 559 95 53 383 675 100 42 495 859 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .219 1.12 39072880 100.0 XXX EURUSD:L .302 1.17 18301658 65.0 EURUSD:S .145 1.08 20771222 35.0 Interesting For a still experimental LSTM implementation that result looks not bad. Could you help me answering some questions I have few question below: 1.I want to test Commission mode. If I use interactive broker, I should set Commission . in normal case. 2.If I press the 8220trade8221 button, I see the log the script will use DeepLearnEURUSD. ml. So real trade it will use DeepLearnEURUSD. ml to get the model to trade And use neural. predict function to trade 3.If I use the slow computer to train the data , I should move DeepLearnEURUSD. ml to the trade computer I test the real trade on my interactive brokers and press the result button. Can I use Commission0.60 to train the neural and get the real result Thank you. Result button will show the message below: Trade Trend EURUSD Bar period 2 min (avg 2 min) Trade period 02.11.2016-02.11.2016 Spread 0.5 pips (roll -0.020.01) Commission 0.60 Contracts per lot 1000.0 Commission should be normally not set up in the script, but entered in the broker specific asset list. Otherwise you had to change the script every time when you want to test it with a different broker or account. IB has different lot sizes and commissions, so you need to add the command to the script when you want to test it for an IB account. Yes, DeepLearnEURUSD. ml is the model for live trading, and you need to copy it to the trade computer. Dear jcl Do I write assetList(AssetsIB. csv) in the right place So below code8217s result includes Commission I test the result with Commission that seems pretty good. Annual 93 3177p function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Commission Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(2),change(3),change(4), range(1),range(2),range(3),range(4)) gt 0.5) enterLong() if(adviseShort() gt 0.5) enterShort() Problem 1: I run the DeepLearn. c in the IB paper trade. The code 8220LifeTime 3 prediction horizon8221 seems to close the position that you open after 3 bars(3 hours). But I can8217t see it close the position on third bar close. I see the logs below: Closing prohibited 8211 check NFA flag EURUSD::L4202 Can8217t close 11.10995 at 09:10:51 Problem 2: In my IB paper trade, it the default order size is 1k on EURUSD. How to change the order size in paper trade Thank you very much. IB is an NFA compliant broker. You can not close trades on NFA accounts. You must set the NFA flag for opening a reverse position instead. And you must enable trading costs, otherwise including the commission has no effect. I don8217t think that you get a positive result with trading costs. Those account issues are not related to machine learning, and are better asked on the Zorro forum. Or even better, read the Zorro manual where all this is explained. Just search for 8220NFA8221. I do some experiment to change the neural8217s parameter with commission. The code is below: function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(3),change(5),change(7),change(9), range(1),range(3),range(5),range(7),range(9)) gt 0.7) enterLong() if(adviseShort() gt 0.7) enterShort() I get the result with commission that Annual Return is about 23. But I don8217t complete understand the zorro8217s setting and zorro8217s report. Vielen Dank. The result: Annual 23 661p Walk-Forward Test DeepLearn EURUSD Simulated account AssetsIB. csv Bar period 1 hour (avg 86 min) Simulation period 15.05.2014-09.09.2016 (14075 bars) Test period 23.04.2015-09.09.2016 (8404 bars) Lookback period 100 bars (4 days) WFO test cycles 14 x 600 bars (5 weeks) Training cycles 15 x 5401 bars (46 weeks) Monte Carlo cycles 200 Simulation mode Realistic (slippage 0.0 sec) Spread 0.0 pips (roll 0.000.00) Commission 0.50 Contracts per lot 20000.0 Gross winloss 24331 -22685 (914p) Average profit 1190year, 99month, 4.58day Max drawdown -1871 114 (MAE -1912 116) Total down time 92 (TAE 41) Max down time 18 weeks from Dec 2015 Max open margin 2483 Max open risk 836 Trade volume 26162350 (18916130year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol, -1306 com Capital required 5239 Number of trades 1306 (945year, 19week, 4day) Percent winning 52.5 Max winloss 375 -535 Avg trade profit 1.26 0.7p (19.7p -20.3p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg trade bars 2 (2 -3) Max trade bars 3 (3 hours) Time in market 46 Max open trades 3 Max loss streak 19 (uncorrelated 10) Annual return 23 Profit factor 1.07 (PRR 0.99) Sharpe ratio 0.56 Kelly criterion 1.39 R2 coefficient 0.000 Ulcer index 20.8 Confidence level AR DDMax Capital 10 29 1134 4153 20 27 1320 4427 30 26 1476 4656 40 24 1649 4911 50 23 1767 5085 60 22 1914 5301 70 21 2245 5789 80 19 2535 6216 90 16 3341 7403 95 15 3690 7917 100 12 4850 9625 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .256 1.07 685621 100.0 XXXXXXXXXXXX EURUSD:L .476 1.16 294278 94.5 EURUSD:S .026 1.01 391343 5.5

No comments:

Post a Comment