Kursprognose mit Neuralen Netzen

Shashev Sergei | 9 Februar, 2016


Einführung

In den letzten Jahren beobachten wir eine Explosion des Interesses an neuronalen Netzen, die erfolgreich in verschiedenen Bereichen eingesetzt werden - Wirtschaft, Medizin, Technologie, Geologie, Physik. Neuronale Netze sind weit verbreitet in Bereichen, die Prognosen, Klassifizierung und Steuerung erfordern. Ein solch beeindruckender Erfolg wird durch mehrere Gründe bestimmt:

  • Weitreichende Möglichleiten. Neuronale Netze sind ein sehr leistungsfähiges Modellierungswerkzeug, das die Reproduktion außerordentlich komplizierter Zusammenhänge ermöglicht. Insbesondere sind neuronale Netze von Natur aus nicht linear. Über einen Zeitraum vieler Jahre, war lineare Modellierung die wichtigste Methode der Modellierung in den meisten Bereichen, weil die Optimierungsvorgänge für sie weit entwickelt sind. Bei Aufgaben, bei denen lineare Annäherung nicht ausreichend ist, funktionieren lineare Modelle schlecht. Außerdem überwinden neuronale Netze "den Fluch der Dimensionalität", der es nicht ermöglich lineare Beziehungen im Falle einer großen Anzahl von Variablen zu erstellen.
  • Einfache Anwendung. Neuronale Netze lernen durch Beispiele. Der Benutzer eines neuronalen Netzes sammelt repräsentative Daten und startet dann den Algorithmus der Ausbildung, der die Datenstruktur automatisch übernimmt. Natürlich muss der Nutzer eine Reihe an heuristischem Wissen über die über die Art und Weise der Sammlung und Aufbereitung von Daten, der Auswahl der entsprechenden Netzwerkarchitektur und der Interpretation der Ergebnisse haben. Allerdings ist der erforderliche Wissensstand für die erfolgreiche Anwendung eines neuronalen Netzes viel niedriger, als der für traditionelle statistische Methoden benötigte.

Neuronale Netze sind attraktiv aus dem Gesichtspunkt der Intuition, weil sie auf dem ursprünglichen biologischen Modell des Nervensystems basieren. In der Zukunft, kann die Entwicklung solcher neurobiologischer Modelle zur Schaffung von wirklich intelligenten Computern führen. [1]

Prognostizieren von Finanzzeitreihen ist ein primärer Anteil von jeder Investitionstätigkeit. Die ganze Idee des Investierens - Geld jetzt zu investieren, mit dem Ziel in der Zukunft Gewinn zu erhalten - basiert auf der Idee der Prognose der Zukunft. Dementsprechend liegt das Prognostizieren von Finanzzeitreihen an den Wurzeln der Investmentbranche - alle Aktienbörsen und Over-the Counter (OTC) Märkte.

Es ist bekannt, das 99% aller Trades spekulativ sind, das heißt, sie richten sich nicht nach einem realen Handelsumsatz, sondern nach Gewinnmitnahmen nach dem Prinzip "billig kaufen - teuer verkaufen". Sie alle basieren auf der Prognose von Kursbewegungen durch einen Handelsteilnehmer. Was wichtig ist - Prognosen der Handelsteilnehmer sind im Widerspruch zu jeder anderen. So kennzeichnet die Anzahl der spekulativen Operationen die Differenz in den Prognosen der Marktteilnehmer, was tatsächlich heißt, - die Unvorhersehbarkeit der Finanzzeitreihen.

Dieses wichtigste Merkmal der Marktzeitreihen unterliegt der Theorie des "effizienten" Marktes, beschrieben in der These von L. Bachelor im Jahr 1900. Nach dieser These kann ein Investor nur auf die durchschnittliche Marktrentabilität vertrauen, bewertet in Indizes, wie Dow Jones oder S&P500 für die New Yorker Börse. Jeder spekulative Profit ist von zufälliger Natur und ist wie Glücksspiel (da ist etwas Attraktives in ihm, oder nicht?). Der Grund für die unvorhersehbare Natur der Markt-Kurven ist der gleiche wie der, warum Geld nur selten an öffentlichen Plätzen auf dem Boden liegt: zu viele Menschen wollen es aufheben.

Natürlich wird die Theorie eines effizienten Marktes von den Marktteilnehmern (die nach dem herumliegenden Geld suchen) nicht unterstützt. Viele von ihnen denken, dass trotz der scheinbaren statistischen Wahrscheinlichkeit, alle Zeitreihen voll mit verborgenen Gesetzmäßigkeiten sind, d.h. vorhersehbar sind, zumindest teilweise. Der Begründer einer Wellen-Analyse, R. Elliot, versuchte solche verborgenen empirischen Gesetzmäßigkeiten in seinen Artikeln in den 30er Jahren zu finden.

In den 80ern wurde dieser Gesichtspunkt unerwartet in der neu erschienenen Theorie des dynamischen Chaos unterstützt. Diese Theorie basiert auf der Kontraposition des chaotischen Zustands und der Stochastik (Zufälligkeit). Chaotische Reihen scheinen nur zufällig, aber als ein deterministisch dynamischer Vorgang, ermöglichen sie kurzfristige Prognosen. Der Bereich der stochstischen Prognose ist in der Zeit beschränkt durch den Horizont der Prognose, aber dies kann ausreichen, um einen echten Gewinn aus der Prognose zu erzielen (Chorafas, 1994). Und diejenigen, welche die besten mathematischen Methoden der Extraktion aus rauschenden chaotischen Reihen verwenden, können große Gewinne erwarten - auf Kosten der weniger gut ausgestatteten Mitmenschen.

Das letzte Jahrzehnt wurde durch ein anhaltendes Wachstum der Beliebtheit der technischen Analyse gekennzeichnet - eine Reihe empirischer Regeln, basierend auf verschiedenen Indikatoren des Marktverhaltens. die technische Analyse konzentriert sich auf das individuelle Verhalten des Finanzinstruments, abseits von anderen Wertpapieren. Allerdings ist die technische Analyse sehr subjektiv und arbeitet ineffektiv am rechten Rand des Charts - genau dort, wo wir die Prognose einer Kursrichtung benötigen. Aus diesem Grund gewinnt die Neuro-Netz-Analyse mehr Beliebtheit, weil, wie gegensätzlich in der technischen, sie keine Einschränkungen hinsichtlich der Art der Einstiegsinformationen aufstellt. Dies können Indikatoren der gegebenen Indikator-Reihe sein, sowie die Informationen über das Verhalten anderer Marktinstrumente. Nicht umsonst sind neuronale Netze bei institutionellen Investoren weit verbreitet (zum Beispiel große Pensions-Kapitalfonds), die mit großen Portfolios arbeiten und großen Wert auf die Korrelation zwischen den verschiedenen Märkten legen.

Reine neuronales Netz Modellierung basiert nur auf Daten, ohne die Verwendung vorhergehender Argumente. Dies ist gleichzeitig ihr starker und ihr schwacher Punkt. Die verfügbaren Daten können unzureichend für die Ausbildung sein, die Dimensionalität der möglichen Einträge kann zu groß sein.

Deshalb sollte man für Prognosen Neuropakte mit großer Funktionalität verwenden.



Datenvorbereitung

Um den Vorgang zu starten, müssen wir Daten vorbereiten. Die Genauigkeit dieser Arbeit beeinflusst 80% des Erfolgs.

Gurus von neuronalen Netzen sagen, dass Einstiege und Ausstiege nicht die Werte der Kurse Ct verwenden sollten. Was wirklich wichtig ist, sind ist die Kurs-Änderungen. Während die Amplitude dieser Änderungen in der Regel kleiner als der Kurs selbst ist, gibt es eine starke Korrelation zwischen den aufeinanderfolgenden Kurswerten - der wahrscheinlichste Kurswert im nächsten Moment, wird gleich zu seinem vorherigen Wert sein C(t+1)=C(t)+delta(C)=C(t).

Unterdessen sollten wir, für eine bessere Ausbildungsqualität eine statistische Unabhängigkeit der Einträge, d.h. vermeiden solcher Korrelationen. Daher ist es logisch als Eingabevariablen die statistisch unabhängigsten Werte zu wählen, zum Beispiel Kursänderungen Delta (C) oder den relativen Zunahme Logarithmus log(C(t)/C(t+1)).

Die letzte Auswahl ist besser für lange Zeitreihen, wenn der Einfluss der Inflation spürbar ist. In einem solchen Fall werden einfache Unterschiede in den Teilen der reihe eine unterschiedliche Amplitude haben, weil sie tatsächlich in verschiedenen Einheiten bewertet werden. Und im Gegensatz dazu, hängen die Beziehungen der aufeinanderfolgenden Kurse nicht von den Maßeinheiten ab und werden von dem gleichen Maßstab sein, unabhängig von den inflationären Änderungen von Maßeinheiten. Als Ergebnis ermöglicht die große Stationarität der Reihen die Verwendung zur Ausbildung einer großen Historie, und somit eine bessere Ausbildung.

Der Nachteil des Eintauchens in den Verzögerungs-Raum ist das eingeschränkte Sehvermögen des Netzes. Im Gegensatz dazu, fixiert die technische Analyse kein Fenster in der Vergangenheit, und manchmal verwendet sie weite Reihenwerte. Zum Beispiel maximale oder minimale Reihenwerte auch in der relativ weiten Vergangenheit werden beansprucht einen großen Einfluss auf die Psyche des Traders zu haben, und folglich wertvoll für die Prognose zu sein. Ein nicht ausreichend breites Fenster des Eintauchens in den Verzögerungs-Raum ist nicht in der Lage solche Informationen zu bieten, die, natürlich, die Effizienz der Prognose senken. Auf der anderen Seite, Erweitern des Fensters in solche Dimensionen, wenn es weite extreme Reihenwerte beinhaltet, erhöht die Dimensionalität des Netzes, was zu einer schlechteren Genauigkeit der Neuronet Prognose führt.

Der Ausweg aus dieser scheinbar festgefahrenen Situation sind alternative Methoden der Codierung des vergangenen Verhaltens der Reihen. Instinktiv ist es klar, dass je weiter es in die Vergangenheit geht, umso weniger Einzelheiten ihres Verhaltens das Ergebnis der Prognose beeinflussen. Es basiert auf der Psychologie der subjektiven Wahrnehmung der Vergangenheit durch Trader, die tatsächlich die Zukunft machen. Folglich müssen wir die Darstellung der Reihendynamiken finden, die eine selektive Genauigkeit haben werden: je weiter in die Zukunft, je weniger Details, um die allgemeine Form der der Kurve zu bewahren.

Ein recht vielversprechendes Werkzeug kann hier die Wavelet-Zerlegung sein. In Bezug auf den Informationsgehalt ist es gleich zu dem Verzögerungs-Eintauchen, übernimmt aber solche Datenkomprimierung einfacher, welche die Vergangenheit mit selektiver Genauigkeit beschreibt.



Auswahl der Software

Es gibt verschieden für die Arbeit mit neuronalen Netzen vorgesehene Software. Einige von ihnen sind mehr oder weniger universell, andere sind hoch spezialisiert. Hier ist eine kurze Liste einiger Programme:

1. Matlab ist ein Desktop Labor für mathematische Berechnungen, Entwerfen elektrischer Schaltkreise und Modellierung komplexer Systeme. Es verfügt über eine integrierte Programmiersprache und einen großen Satz Werkzeuge für neuronale Netze - Anfis Editor (Ausbildung, Erstellung, Training und grafische Schnittstelle), Befehlsschnittstelle für Programmiernetzwerke, nnTool - für eine genauere Konfiguration eines Netzes.

2. Statistica ist eine leistungsstarke Software zur Datenanalyse und der Suche nach statistischen Gesetzmäßigkeiten. In diesem Paket befindet sich Arbeit mit neuronalen Netzen im Block STATISTICA Neural Networks (abgekürzt, ST Neural Networks, neuro-net packag of the company StatSoft), was die Umsetzung aller Neuronet Methoden für Datenlyse ist.

3. BrainMaker ist vorgesehen zur Lösung von Aufgaben, die noch keine formalen Methoden und Algorithmen haben, mit unvollständigen, rauschenden und widersprüchlichen Eingabedaten. An solche Aufgaben verweisen wir Austausche und finanzielle Prognosen Modellierung von Krisenbedingungen, Mustererkennung und andere.

4. NeuroShell Day Trader ist ein Neuronet-System das die besonderen Anforderungen von Tradern erfüllt und sehr einfach anzuwenden ist. Das Programm ist hoch spezialisiert und für Trading gedacht, aber tatsächlich ist es sehr nah an einer Blackbox.

5. Andere Programme sind weniger beliebt.

Für die primäre Operation ist Matlab recht gut geeignet. Wir werden versuchen die Eignung eines Neuronet zur Forex Prognose zu bestimmen.

Die Informationen über Matlab finden Sie bei Wikipedia unter https://en.wikipedia.org/wiki/MATLAB

Viele Informationen über das Programm befinden sich auf der Webseite http://www.mathworks.com/

Sie können das Programm kaufen unter http://www.mathworks.com/store/

Experiment

Datenvorbereitung

Daten werden erfasst mit Standardtools von MetaTrader:

Extras -> Historiendatenbank -> Export

Als Ergebnis erhalten wir eine *.csv Datei, die das Rohmaterial für die Datenvorbereitung ist. Um die die Datei in eine für die Operation geeignete *.xls Datei umzuwandeln, importieren wir die Dateien aus der *.csv Datei. Zu diesem Zweck machen wir in Excel das folgende:

Daten -> Import externer Daten -> Importieren Sie die Daten und geben Sie die vorbereitete Primäre Datei an. Im Import Master sind alle notwendigen Vorgänge in drei Schritten getan:




Im dritten Schritt ersetzen Sie den Separator der Ganzzahl und des Kommateils durch einen Punkt, mit More...

Damit die Daten als Zahlen akzeptiert werden, nicht als Strings, ersetzen Sie den Separator der Ganzzahl und des Kommateil durch einen Punkt:

Service -> Parameters -> International -> Separator von Ganzzahl und Kommateil (integer and decimal part).

Die Screenshots zeigen das Beispiel des Speicherns von Eröffnungs- und Schlusskursen. weitere Daten werden noch nicht benötigt.

Jetzt wandeln wir alle Daten in Übereinstimmung mit dem um, was wir prognostizieren wollen. Lassen Sie uns den Schlusskurs des kommenden Tages nach den vier vergangenen (die Daten werden in fünf Spalten dargestellt, die Kurse sind in chronologischer Reihenfolge).

1.2605

1.263

1.2641

1.2574

1.2584

1.2666

1.263

1.2641

1.2574

1.2584

1.2666

1.2569

1.2641

1.2574

1.2584

1.2666

1.2569

1.2506

1.2574

1.2584

1.2666

1.2569

1.2506

1.2586

1.2584

1.2666

1.2569

1.2506

1.2586

1.2574


Dank der einfachen Handhabung in Excel, sind die Daten im ein paar Minuten vorbereitet. Ein Beispiel einer vorbereiteten Datendatei ist an den Artikel angehangen.

Damit Matlab die Daten anerkennt, müssen die vorbereiteten Daten als *.txt oder *.dat Dateien abgespeichert werden. Lassen Sie und als *.txt Dateien speichern. Dann sollte jede Datei aufgeteilt werden - für das nächste Training (Auswahl) und deren Prüfung (äußere Auswahl). Derart vorbereitete euro.zip Daten sind für die weitere Arbeit geeignet.



Bekanntschaft mit Matlab

Aus der Kommandozeile starten Sie das Paket ANFIS mit dem anfisedit Befehl. Der Editor besteht aus fünf Balken - für Daten (load data), zur Netz-erzeugung (Generate FIS), für das Training (Train FIAS) und zum Testen (Test FIS). Der obere Balken wird für die Vorschau der Neuronetz-Struktur verwendet (ANFIS Info).

weitere Informationen über die Paket Operation fiden Sie hier:

http://www.mathworks.com/access/helpdesk/help/toolbox/fuzzy/

Um den Vorgang zu starten, laden Sie die in den vorherigen Schritten vorbereiteten Daten - Uhr Load Data und Angabe der Datei mit der Datenauswahl. Dann erstellen Sie ein neuronales Netz durch Klicken auf Generate FIS.


Für jede Eintrag Variable setzen Sie 3 linguistische Variablen mir einer Dreieck Referenz-Funktion. Legen Sie eine lineare Funktion fest, als Funktion in Abhängigkeit der Ausstiegs-Funktion.


Für die Neuronetz Ausbildung enthält das Paket AnfisEdit 2 Trainings-Algorithmen - Rücktransformation und einen Hybrid. Mit einem Hybrid-Training wird das Netz innerhalb von zwei bis drei Durchläufen trainiert. In einer Trainings-Auswahl (60 Werte) nach dem Training, unterscheidet sich die Prognose durch das Netz von der realen in verschiedenen Punkten.


Was wir aber prognostizieren müssen, ist die Zukunft! Als äußere Datenauswahl nehmen wir die nächsten 9 Tage nach der inneren Datenauswahl. Auf der äußeren Datenauswahl machte die mittlere quadratische Abweichung 32 Punkte, was, natürlich, unakzeptabel in echtem Trading ist, aber es zeigt, dass die Neuronetz Richtung weiter entwickelt werden kann - das Spiel muss die Mühe Wert sein.



Das Ergebnis unserer Arbeit ist ein mehrlagiges Hybrid neuronales Netz, das die absoluten Kurswerte für die nähere Zukunft prognostizieren kann. es unterscheidet sich grundsätzlich in Struktur und Zweck von einem einlagigen neuronalen Netz, wie es beschreiben wird von Y Rehetov in seinem Artikel /en/articles/1447 und umgesetzt als Expert Advisor https://www.mql5.com/ru/code/10289.

Wir haben es geschafft eine mehr oder weniger passable Prognose auf die Kurse zu erhalten, obwohl Experten für neuronale Netze empfehlen dies nicht zu tun. Um das resultierende neuronale Netz anzuzeigen, klicken Sie Structure. Eintrainiertes neuronales Netz befindet sich in der angehängten Datei neuro.zip.

Ein großer Vorteil des Matlab Pakets ist die Integrierbarkeit in andere Programme, und es gibt mehrere Varianten seiner Integration, DDE, com-Objekte, dll. Also, Sie müssen keine Werkzeug von Grund auf neu erstellen http://forum.mql4.com/ru/5220, Sie können eine fertige Programm-Lösung verwenden, um mit neuronalen Netzen und genetischen Algorithmen zu arbeiten. Dann, nachdem Sie stabile Prognose-Ergebnisse erhalten, können Sie das neuronale Netz durch dll in das Programm MetaTrader integrieren.

Fazit

Neuronale Netze sind ein sehr leistungsstarkes Werkzeug für die Arbeit an den Finanzmärkten. aber das Lernen dieser Technologie erfordert Zeit und nicht weniger Aufwand als das Lernen der technischen Analyse.

Ein Vorteil von neuronalen Netzen ist ihre Objektivität in der Entscheidungsfindung, ihre Nachteile - die Entscheidungen werden in der Tat von einer Black-Box getroffen.

Das Hauptproblem, das bei der Arbeit mit dieser Technologie auftreten kann, ist mit der richtigen Vor-Verarbeitung von Daten verbunden. Diese Phase spielt eine entscheidende Rolle bei der Daten-Prognose und vielen erfolglose Versuche mit neuronalen Netzen zu arbeiten, sind mit dieser Phase verbunden.

Um den Umgang mit Netzen richtig zu lernen, muss man viel experimentieren aber das Spiel ist die Mühe wert. Wen institutionelle Anleger dieses Werkzeug verwenden, dann kann auch der normale Trader versuchen, mit trainierten neuronalen Netzen erfolgreich zu sein, weil alles in das Netz eingegeben werden kann - von Indikatoren und Kursen, bis zu Signalen aus der fundamentalen Analyse.



Referenzliste

1. Nejrokompyuting i ego primenenie v nauke i biznese. A. Ezhov, S. Shumskij. 1998