Wednesday, November 23, 2016

Genetisches Programmiersystem

Erstellen eines Trading-Systems innerhalb des Trading-Systems Lab Trading System Lab erzeugt automatisch Trading-Systeme auf jedem Markt in wenigen Minuten mit einem sehr fortgeschrittenen Computerprogramm, bekannt als AIMGP (automatische Induktion von Maschinencode mit genetischer Programmierung). Erstellung eines Handelssystems im Trading System Lab erfolgt in 3 einfachen Schritten. Zunächst wird ein einfacher Präprozessor ausgeführt, der automatisch die notwendigen Daten aus dem Markt extrahiert und vorbehandelt, mit denen Sie arbeiten möchten. TSL akzeptiert CSI, MetaStock, AIQ, TradeStation, kostenlose Internetdaten, ASCII-, TXT-, CSV-, CompuTrac-, DowJones-, FutureSource-, TeleChart2000v3-, TechTools-, XML-, Binär - und Internet-Streamingdaten. Zweitens wird der Trading System Generator (GP) für mehrere Minuten oder mehr laufen, um ein neues Handelssystem zu entwickeln. Sie können Ihre eigenen Daten, Muster, Indikatoren, Intermarket-Beziehungen oder fundamentale Daten innerhalb der TSL verwenden. Drittens ist das entwickelte Trading System formatiert, um neue Trading System Signale von TradeStation oder vielen anderen Handelsplattformen zu produzieren. TSL wird automatisch schreiben Sie eine einfache Sprache, Java, Assembler, C-Code, C-Code und WealthLab Script Language. Das Handelssystem kann dann manuell gehandelt, über einen Broker gehandelt oder automatisch gehandelt werden. Sie können das Handelssystem selbst erstellen, oder wir können es für Sie tun. Dann können Sie oder Ihr Broker das System entweder manuell oder automatisch handeln. Trading System Labs Genetic Programm enthält mehrere Features, die die Möglichkeit der Kurvenanpassung zu reduzieren, oder die Herstellung eines Trading-System, das nicht weiter in die Zukunft durchzuführen. Erstens, die entwickelten Trading-Systeme haben ihre Größe auf die niedrigstmögliche Größe durch so genannte Parsimony Pressure, Zeichnung aus dem Konzept der minimalen Beschreibung Länge geschnitten. Somit ist das resultierende Handelssystem so einfach wie möglich und es wird allgemein angenommen, dass je einfacher das Handelssystem ist, desto besser wird es in die Zukunft durchführen. Zweitens wird die Zufälligkeit in den evolutionären Prozess eingeführt, wodurch die Möglichkeit reduziert wird, Lösungen zu finden, die lokal, aber nicht global optimal sind. Zufälligkeit wird nicht nur über die Kombinationen des in den entwickelten Handelssystemen verwendeten genetischen Materials, sondern auch über Parsimony Pressure, Mutation, Crossover und andere übergeordnete GP-Parameter eingeführt. Out of Sample-Tests werden durchgeführt, während das Training mit statistischen Informationen durchgeführt wird, die sowohl im Test - als auch im Out-of-Sample-Handelssystemtest angezeigt werden. Ausführungsprotokolle werden dem Benutzer für Trainings-, Validierungs - und Out of Sample-Daten präsentiert. Gut verhalten Aus der Sample Performance kann ein Hinweis sein, dass das Trading System mit robusten Eigenschaften entwickelt. Eine wesentliche Verschlechterung der automatischen Probenentnahme im Vergleich zu den Stichprobenprüfung kann bedeuten, dass die Schaffung eines robusten Handelssystems im Zweifel ist oder dass das Terminal oder das Eingabeset möglicherweise geändert werden muss. Schließlich wird das Terminal-Set sorgfältig ausgewählt, um die Auswahl des anfänglichen genetischen Materials nicht auf eine bestimmte Markt-Bias oder - Stimmung zu beschränken. TSL startet nicht mit einem vordefinierten Handelssystem. In der Tat wird nur das Eingabeset und eine Auswahl von Markteintrittsmodus oder - modi für die automatische Eintrittssuche und - zuordnung anfänglich hergestellt. Ein Muster - oder Indikatorverhalten, das als bullische Situation betrachtet werden kann, kann innerhalb des GP verwendet, verworfen oder invertiert werden. Keinem Muster oder Indikator ist eine bestimmte Marktbewegungsvorspannung vorab zugewiesen. Dies ist eine radikale Abkehr von der manuell generierten Trading-System-Entwicklung. Ein Handelssystem ist ein logischer Satz von Anweisungen, die dem Händler sagen, wann man einen bestimmten Markt kaufen oder verkaufen kann. Diese Anweisungen erfordern selten einen Eingriff eines Händlers. Handelssysteme können manuell gehandelt werden, indem man Handelsanweisungen auf einem Computerbildschirm beobachtet oder gehandelt werden kann, indem dem Computer erlaubt wird, Trades auf dem Markt automatisch einzugeben. Beide Methoden sind heute weit verbreitet. Es gibt mehr professionelle Geldmanager, die sich als systematische oder mechanische Händler als diejenigen, die sich als discretionary, und die Leistung der Systematische Geld-Manager ist in der Regel überlegen, dass der diskretionäre Geld-Manager. Studien haben gezeigt, dass Handelskonten in der Regel häufiger Geld verlieren, wenn der Kunde nicht mit einem Handelssystem. Der deutliche Anstieg der Handelssysteme in den vergangenen zehn Jahren zeigt sich insbesondere in den Rohstoff-Brokerfirmen, doch Aktien - und Anleihenmarkt-Brokerfirmen werden zunehmend von den Vorteilen durch den Einsatz von Trading Systems erkannt und einige haben damit begonnen, Trading Systems anzubieten Einzelhandelskunden. Die meisten Investmentfonds-Manager sind bereits mit anspruchsvollen Computer-Algorithmen, um ihre Entscheidungen zu treffen, was heiße Lager zu holen oder was Sektor Rotation ist für. Computer und Algorithmen haben sich zu Mainstream-Investitionen entwickelt, und wir erwarten, dass sich dieser Trend fortsetzen wird, da jüngere, computergesteuerte Investoren weiterhin erlauben, dass Teile ihres Geldes von Trading Systems verwaltet werden, um das Risiko zu senken und die Rendite zu erhöhen. Die riesigen Verluste, die von Investoren, die an Aktien und Investmentfonds beteiligt waren, teilnahmen, während der Aktienmarkt in den vergangenen Jahren geschmolzen war, fördern diese Entwicklung in Richtung eines disziplinierten und logischeren Ansatzes für Aktieninvestitionen. Der durchschnittliche Investor erkennt, dass er oder sie derzeit ermöglicht viele Aspekte ihres Lebens und das Leben ihrer Lieben zu halten oder kontrolliert werden von Computern wie die Autos und Flugzeuge, die wir für den Transport, die medizinische Diagnosegeräte verwenden wir für die Gesundheitsversorgung, Die Heizungs - und Kühlregler, die wir für die Temperaturregelung verwenden, die Netze, die wir für internetbasierte Informationen nutzen, auch die Spiele, die wir für die Unterhaltung spielen. Warum dann einige Einzelhandels-Investoren glauben, dass sie von der Hüfte in ihren Entscheidungen, was Aktien oder Investmentfonds zu kaufen oder zu verkaufen und zu erwarten, um Geld zu schießen Schließlich ist der durchschnittliche Investor vorsichtig geworden ist, der Rat und Informationen von skrupellosen Brokern weitergegeben , Buchhalter, Corporate Principals und Finanzberater. In den vergangenen 20 Jahren haben Mathematiker und Softwareentwickler Indikatoren und Muster auf Lager - und Rohstoffmärkten durchsucht, die nach Informationen suchen, die auf die Richtung des Marktes hinweisen. Diese Informationen können verwendet werden, um die Leistung von Handelssystemen zu verbessern. Im Allgemeinen ist diese Entdeckung Prozess durch eine Kombination aus Versuch und Irrtum und anspruchsvoller Data Mining erreicht. Typischerweise dauert der Entwickler Wochen oder Monate der Anzahl Knirschen, um ein potentielles Handelssystem zu erzeugen. Viele Male dieses Handelssystem wird nicht gut funktionieren, wenn tatsächlich in der Zukunft aufgrund der sogenannten Kurvenanpassung verwendet. Im Laufe der Jahre gab es viele Trading Systems (und Trading-System-Entwicklungsunternehmen), die gekommen und gegangen, wie ihre Systeme im Live-Handel gescheitert sind. Die Entwicklung von Trading-Systemen, die weiterhin in die Zukunft führen, ist schwierig, aber nicht unmöglich zu bewerkstelligen, obwohl kein ethischer Entwickler oder Geldmanager eine unbedingte Garantie dafür geben wird, dass jedes Trading System oder auch irgendwelche Aktien, Anleihen oder Investmentfonds fortbestehen werden Um Gewinne in die Zukunft für immer zu produzieren. Was hat Wochen oder Monate für die Trading-System-Entwickler zu produzieren in der Vergangenheit kann nun in wenigen Minuten durch den Einsatz von Trading System Lab produziert werden. Trading System Lab ist eine Plattform für die automatische Generierung von Handelssystemen und Handelsindikatoren. TSL nutzt eine Hochgeschwindigkeits-Genetic Programming Engine und wird Trading-Systeme mit einer Geschwindigkeit von über 16 Millionen System-Bars pro Sekunde basierend auf 56 Eingaben produzieren. Man beachte, daß nur wenige Eingaben tatsächlich verwendet werden oder notwendig sind, was zu allgemein einfach entwickelten Strategiestrukturen führt. Mit etwa 40.000 bis 200.000 Systemen, die für eine Konvergenz benötigt werden, kann die Zeit bis zur Konvergenz für jeden Datensatz angenähert werden. Beachten Sie, dass wir nicht einfach eine brutale Kraftoptimierung bestehender Indikatoren durchführen, die nach optimalen Parametern suchen, aus denen in einem bereits strukturierten Trading System zu verwenden ist. Der Handelssystem-Generator beginnt an einem Nullpunkt-Ursprung, der keine Annahmen über die Bewegung des Marktes in der Zukunft macht, und entwickelt dann Handelssysteme zu einer sehr hohen Rate, die auf dem Markt vorhandene Informationen kombiniert und neue Filter, Funktionen, Bedingungen und Beziehungen formuliert Schreitet zu einem gentechnisch veränderten Handelssystem voran. Das Ergebnis ist, dass ein ausgezeichnetes Handelssystem in wenigen Minuten auf 20-30 Jahren der täglichen Marktdaten auf nahezu jedem Markt erzeugt werden kann. In den letzten Jahren gab es mehrere Ansätze für Trading System Optimierung, die den weniger leistungsfähigen genetischen Algorithmus beschäftigen. Genetische Programme (GPs) sind überlegene genetische Algorithmen (GAs) aus mehreren Gründen. Zuerst konvergieren GPs auf einer Lösung mit einer exponentiellen Rate (sehr schnell und schneller), während genetische Algorithmen mit einer linearen Rate konvergieren (viel langsamer und nicht immer schneller). Zweitens generieren die Hausärzte tatsächlich den Handelssystem-Maschinencode, der das genetische Material (Indikatoren, Muster, Zwischenmarktdaten) auf einzigartige Weise kombiniert. Diese einzigartigen Kombinationen sind möglicherweise nicht intuitiv offensichtlich und erfordern keine anfänglichen Definitionen durch den Systementwickler. Die einzigartigen mathematischen Beziehungen können neue Indikatoren oder Varianten der technischen Analyse werden, die noch nicht entwickelt oder entdeckt wurden. GAs, auf der anderen Seite, einfach für optimale Lösungen suchen, wie sie über den Parameterbereich sie nicht entdecken neue mathematische Beziehungen und nicht schreiben ihre eigenen Trading System-Code. GPs erstellen Trading-System-Code von verschiedenen Längen, mit variabler Länge Genome, wird die Länge des Handelssystems durch die so genannte nicht-homologe Crossover ändern und wird vollständig verwerfen ein Indikator oder Muster, das nicht zur Effizienz des Handelssystems beitragen. GAs verwenden nur Befehlsblöcke mit fester Grße, wobei nur homologe Crossover verwendet werden und keine variable Länge des Handelssystemcodes erzeugt werden, noch werden sie einen ineffizienten Indikator oder ein Muster so leicht wie ein GP verwerfen. Schließlich sind genetische Programme ein neuer Fortschritt auf dem Gebiet des maschinellen Lernens, während genetische Algorithmen vor 30 Jahren entdeckt wurden. Genetische Programme umfassen alle Hauptfunktionen der Genetischen Algorithmen Crossover, Reproduktion, Mutation und Fitness, aber GPs umfassen viel schnellere und robuste Funktionen, so dass GPs die beste Wahl für die Herstellung von Trading Systems. Der GP in TSLs Trading System Generator ist der schnellste GP derzeit verfügbar und ist nicht in einer anderen Finanzmarkt-Software in der Welt. Die genetische Programmierung Algorithmus, Trading Simulator und Fitness-Motoren innerhalb TSL verwendet über 8 Jahre zu produzieren. Trading System Lab ist das Ergebnis von Jahren harter Arbeit von einem Team von Ingenieuren, Wissenschaftlern, Programmierern und Händlern, und wir glauben, stellt die modernste Technologie zur Verfügung heute für den Handel der Märkte. Natural Selection: Genetische Algorithmus für System Optimization Genetic Programming Evo 2 Ist unsere fortgeschrittene genetische Algorithmus-Bibliothek, die die neuesten genetischen Algorithmus-Design, wie biologisch identische Prozesse, epigenetische Schalter, simulierte Glühen, Westermarck Inzucht-Prävention, altersbedingte Rekombination und vieles mehr enthält. Der Evo 2-Algorithmus basiert nicht auf dem Standard-Einzelchromosomen-GA-Design. Evo 2 löst multivariate Optimierungsprobleme schnell und skaliert mit Komplexität. Der Evo 2-Algorithmus wurde für die genetische Programmierung (autonome Erstellung von Handelssystemen), Handelssystemoptimierung und Portfoliooptimierung entwickelt. Evo 2 lässt Entwickler multivariate Trading-System-Optimierungen mit Leichtigkeit. Bio-Identisches Genom und Algorithmus Evo 2 ist nicht nur bioinspiriert, sondern auch bio-identisch. Evo 2 simuliert jeden natürlichen Prozess von der Mattenselektion bis zur DNA-Verpackung und kompletter Meiose. Die meisten Standard-genetischen Algorithmen vernachlässigen, um die mehrere Schritte der Meiose, die lebenswichtig für die genetische Variation, eine entscheidende wichtige Variable bei der Vermeidung lokaler Optima. Prophase Während der Prophase werden Chromosomen-Synapse und eine kleine Menge an DNA zwischen homologen Chromosomen durch ein Verfahren, das als Überkreuzen bekannt ist, ausgetauscht. Der entscheidende Teil der Prophase ist die Aneinanderreihung von Tetraden zu homologen Paaren. Der Evo 2-Algorithmus stellt sicher, dass Homologe nur aus nicht verwandten, gegenüberliegenden Geschlechtschromosomen entstehen. Metaphase und Anaphase Metaphase und Anaphase sind die Phasen, in denen viel Variation in das Genom eingearbeitet wird, aber die meisten genetischen Algorithmen verlassen diese Schritte vollständig. Evo 2 simuliert beide Phasen vollständig und genau. No Inbreeding Allowed Die meisten genetischen Algorithmen sind Inzucht-Suppe, technisch gesprochen. Inzucht reduziert genetische Variation, die es zu sagen genügt, verhindert, dass Systeme aus und entwickeln sich an ihre Umgebung. In Standard-GAs bedeutet dies, dass ein System eher in lokalen Optima stecken bleiben könnte. Während die Natur mindestens drei Mechanismen hat, um Inzucht zu verhindern, scheitern die meisten genetischen Algorithmen dieses Problem. Die erste Methode: Vermeiden Sie Nachkommen aus der Wiedergabe. Inzucht führt zu einer erhöhten Homozygotie, die die Chancen von Nachkommen durch rezessive oder schädliche Merkmale beeinflussen kann. Der zweite Mechanismus: Wegfahren junge Männer, um Inzest Paarung zwischen den Geschwistern zu verhindern. Der dritte Mechanismus: Der Westermarck-Effekt. Dies ist eine psychologische Wirkung, durch die Personen, die in der Nähe in der Kindheit aufgewachsen sind, zu späterer sexueller Anziehung desensibilisiert werden. Die letzte Konsequenz der Inzucht ist das Aussterben von Arten aufgrund des Mangels an genetischer Vielfalt. Der Gepard, eine der einheimischen Arten der Erde, ist ein Paradebeispiel. Und es geschieht auch vor dem Aussterben. Vor zwanzigtausend Jahren zogen die Geparden durch Afrika, Asien, Europa und Nordamerika. Vor etwa 10.000 Jahren, aufgrund des Klimawandels, wurden alle bis auf eine Art ausgestorben. Mit der drastischen Verringerung ihrer Zahl wurden enge Verwandte gezwungen, zu züchten, und der Gepard wurde genetisch inzucht, was bedeutet, dass alle Geparde sehr eng miteinander verwandt sind. Obwohl Natur verboten Inzucht, fast alle Computer-simulierten genetischen Algorithmen übersehen dieses Problem. Evo 2 verhindert Inzucht durch den Westermarck Effekt und andere simulierte Effekte. Epigenetische Schalter Die epigenetische Theorie beschreibt, wie Veränderungen in der Genexpression durch andere Mechanismen als Veränderungen der zugrundeliegenden DNA-Sequenz vorübergehend oder durch mehrere Generationen verursacht werden können, indem ein Netzwerk von chemischen Schaltern in Zellen, die als Epigenom bekannt sind, beeinflusst wird. Evo 2 kann epigenetische Schalter simulieren, damit das System vorübergehend für Aktionen wie etwa zu gierig oder risikoscheu bestraft werden kann. Simuliertes Glühen Simuliertes Glühen ist eine probabilistische Metaheuristik für das globale Optimierungsproblem, eine gute Annäherung an das globale Optimum einer gegebenen Funktion in einem großen Suchraum zu finden. Es wird oft verwendet, wenn der Suchraum diskret ist. Bei bestimmten Problemen kann das simulierte Glühen effizienter sein als eine erschöpfende Aufzählung. Familienstammbaum Evo 2 kann genealogische Informationen für jedes Genom speichern, damit Benutzer das Fortschreiten des genetischen Algorithmus überprüfen können, um zu sehen, wie bestimmte Gene im Laufe der Zeit entwickelt haben. Karyogram Viewer Evo 2 verfügt über ein eingebautes Karyogramm, das die Visualisierung von Genomen ermöglicht, während sich genetische Algorithmen entwickeln. Das Karyogramm könnte angepasst werden, um Genealogieinformationen für spezifische Genome über ein Kontextmenü anzuzeigen. Evo 2 Applikationen Evo 2 kann auf der Client - oder Serverseite für die genetische Programmierung (autonome Erstellung von Handelssystemen), Handelssystemoptimierung, Portfoliooptimierung, Asset Allocation und nichtfinanzierungsbezogene Anwendungen eingesetzt werden, einschließlich, aber nicht beschränkt auf künstliche Kreativität, automatisiert Design, Bioinformatik, chemische Kinetik, Code-Breaking, Steuerungstechnik, Feynman-Kac-Modelle, Filter - und Signalverarbeitung, Scheduling-Anwendungen, Maschinenbau, stochastische Optimierung und Zeitplanungsprobleme. Gen-Programmierbeispiele TradeScript-Programmierbeispiele zeigen Entwicklern, wie man genetische Programmiermodelle erstellt, die in der Lage sind, Strategien zu testen und zu optimieren. Programmierunterlagen können hier heruntergeladen werden. Entwicklung von Handelssystemen mittels genetischer Programmierung mit einer Fallstudie Auszug Inhalt 1 Einleitung 1.1 Motivation 1.2 Zielsetzung und Struktur 2 Grundlagen und Stand der Technik 2.1 Genetische Programmierung 2.1.1 Programmstruktur 2.1.2 Initialisierung der GP Population 2.1.3 Die genetischen Operatoren 2.1.4 Fitness-Funktion 2.1.5 Selektion 2.1.6 Prozess des Algorithmus 2.1.7 Crossover, Bausteine ​​und Schemata 2.1.8 Ansätze zur Makromutation 2.1.9 Modularisierung 2.1.10 Weitere Verbesserungsansätze 2.2 Künstliche neuronale Netze 2.2.1 Komponenten neuronaler Netze 2.2.2 Netzwerktopologien 2.2.3 Lernmethoden 2.3 Handelssysteme 2.3.1 Bandleser 2.3.2 Market Timing 2.3.3 Positionsgröße 2.3.4 Vergleich von Handelssystemen 2.3.5 Fundamental Versus technische Analyse. 2.3.6 Der Währungsmarkt 2.3.7 Ansätze für die Entwicklung von Handelssystemen. 3 Draft 3.1 Übersicht 3.2 Anforderungen an die Software 3.3 Konzeption der Software 3.3.1 Der evolutionäre Algorithmus 3.3.2 Die Fitnessfunktion 4 Implementierung 4.1 Komponenten der entwickelten Software 4.2 Klassen des Datenaustauschers. 4.3 Klassen des Evolutionären Algorithmus 4.4 Überblick über den Rahmen ECJ 4.5 Probleme während der Experimente 5 Versuchsergebnisse 5.1 Ergebnisse mit Knotengewichten 5.1.1 Ergebnisse des Trainingszeitraums. 5.1.2 Ergebnisse des Validierungszeitraums. 5.1.3 Ergebnisse des Testzeitraums 5.1.4 Ergebnisse als monatliche Umsätze 5.1.5 Erstellte Handelsregeln 5.2 Ergebnisse ohne Knotengewichte 5.2.1 Ergebnisse der Trainingszeit 5.2.2 Ergebnisse der Validierungszeiträume 5.2.3 Ergebnisse der Testzeitraum 5.2.4 Ergebnisse als Monatsrenditen 5.2.5 Erstellte Handelsregeln 5.3 Ermittlung und Anwendung von Optimal f 6 Diskussion und Bewertung 6.1 Ausblick Abbildungsverzeichnis Kapitel 1 Einleitung 1.1 Motivation Die natürliche Evolution hat sich als ein erfolgreichster Mechanismus für die Erzeugung und Anpassung von Kreaturen an die Umwelt. Ohne bestimmte Anweisungen oder sogar präzise objektive Definitionen zu erhalten, ist es gelungen, anspruchsvolle Lösungen für Probleme zu finden, die in der realen Welt existieren. Genetisches Programmieren (GP) ist ein Ansatz, um die schöpferische Kraft innerhalb der natürlichen Evolution für die automatische Entwicklung von Computerprogrammen zu nutzen (vgl. (Koz92, Kapitel 1-6)). Es wird verwendet, um zu versuchen, Mechanismen der natürlichen Evolution zu simulieren, um automatische Programme zu erstellen, die ein gegebenes Problem lösen. In einer Reihe von Anwendungen wurde GP sowohl zur Lösung mathematischer Probleme als auch zur Lösung erfolgreicher Probleme in der Praxis eingesetzt. Unter ihnen werden solche Probleme wie symbolische Regression gezählt (vgl. (Koz92, vgl. Kap. 10)), die Klassifikation (vgl. (Koz92, Kapitel 17), die Synthese künstlicher neuronaler Netze (vgl (Vgl. (BNO97, Seiten 2 bis 10)) und die Erzeugung von Bildern (vgl. (GH97, Seiten 2 bis 7)), ) Zählen zu diesen Problemen. Automatisiertes Lernen mittels GP kann als heuristischer Suchalgorithmus interpretiert werden, der aus dem Satz aller möglichen Programme herausfindet, die die beste Lösung für das gegebene Problem bieten. Abhängig von dem gegebenen Problem ist der Suchbereich sehr groß und oftmals weder kontinuierlich noch differenzierbar und somit ist der Suchbereich aller möglichen Programme für klassische Suchalgorithmen schlecht (vgl. (LP02, Seite 2 nachfolgend)). In dieser Arbeit wird der GP im Rahmen der Generierung von Handelssys - temen für den Finanzmarkt, insbesondere für den Devisenmarkt, angewandt. In den Finanzmärkten nutzen erfolgreiche spekulative Händler auf der Basis eines bestimmten Regelwerks. Diese Regeln unterliegen jedoch einer relativ breiten Auslegung. Nach einer sorgfältigen Prüfung wird deutlich, dass die Händler in entscheidenden Situationen von den Vorschriften abweichen, die sie für ihre Handlungsweise halten und nach ihrem Gefühlsgefühl gleichsam handeln. Es ist möglich, dass dieser Teil der intuitiven Handlung einen erfahrenen und rentablen Händler von einem erfahrenen und unrentablen Händler unterscheidet, auch wenn beide glauben, dass sie auf der Grundlage derselben Regelungen arbeiten. Die Definition eines Handelssystems durch einen Menschen unterliegt einigen Schwierigkeiten, denn er kann nicht alle Regeln eindeutig wiedergeben. Aus diesem Grund hat sich die Übertragung von Aktionen, die Regeln für den Computer definieren, als nicht erfolgreich erwiesen. Es gibt einen anderen Ansatz, den Computer automatisch die Regeln für die Aktion zu erlernen. Um dies zu tun, z. B. Künstliche Neuronale Netze (NN) werden erfolgreich angewandt (vgl. (Ska01, Seiten 2 bis 5), (MK, Seiten 2 bis 7). Es ist jedoch nicht möglich, die verschiedenen Regeln aus dem Netzwerk zu extrahieren, so dass eine einfache Interpretation ohne Schwierigkeiten möglich ist. Nutzer kritisieren diese Blackbox-Eigenschaft von NN. GP schlägt sich als Alternative zu NN vor, denn sie kann Regeln direkt generieren und trotz einer gewissen Komplexität besser interpretieren (vgl. (YCK05, Seite 23 nach)). Hinsichtlich der Lösung schwieriger Probleme sind beide Ansätze vergleichbar (vgl. (BB98, Seite 13)). 1.2 Ziel und Struktur Ziel dieser Arbeit ist es, GP anzuwenden, um Handelssysteme zu generieren und ihre Rentabilität im Rahmen einer historischen Simulation zu analysieren. Ein Software-System, das diese Aufgabe löst, wird entworfen und interessante Implementierungsaspekte präsentiert. Um mit GP Handelssysteme entwickeln zu können, muss die zu entwickelnde Software eine Reihe von Anforderungen erfüllen. Die Entwicklung der Handelssysteme soll auf der Grundlage historischer Zeitreihen von Wechselkursen und Preisen erfolgen. Der Markt soll sich im Laufe der Zeit ändern, so dass Handelssysteme, die zuvor profitabel waren, ihre Profitabilität verlieren werden. Aus diesem Grund muss das Entwicklungssystem des Handelssystems so konzipiert werden, dass es die Erzeugung neuer Handelssysteme ermöglicht, die an die veränderten Marktbedingungen angepasst sind. Um die Bereitstellung aktueller Preisdaten zu gewährleisten, müssen die relevanten Marktdaten kontinuierlich gesammelt und dem Entwicklungssystem zur Verfügung gestellt werden. Die Entwicklung von gewinnbringenden Handelssystemen wird unterstützt durch vorverarbeitete Daten der Preisdaten, die von bekannten und bekannten Effektenhändlern genutzt werden. Um eine visuelle Überprüfung zu ermöglichen, sollten die vorverarbeiteten Daten sowie die Transaktionen der Handelssysteme grafisch dargestellt werden. Eine Überoptimierung bei der Entwicklung der Handelssysteme soll vermieden werden, indem der verfügbare Preisverlauf in einer Trainings-, Validierungs - und Testperiode unterteilt wird. Um ein Handelssystem für den Testzeitraum zu erhalten, werden die besten Handelssysteme des Ausbildungszeitraums auf den Validierungszeitraum angewendet. Das beste Handelssystem während der Validierung wird für den Handel in der Testperiode ausgewählt. Es sollte möglich sein, den Entwicklungsprozess zu reproduzieren, und er sollte mit Hilfe von Protokolldateien der Zwischenergebnisse transparent sein. Handelssysteme mit einer zu hohen Komplexität machen den Benutzer skeptisch, da es schwierig ist, die Entscheidungen des Systems zurückzuverfolgen. Selbst wenn komplexere Handelssysteme eine höhere Rendite erzielen würden, ist ein gewisses Maß an Rückverfolgbarkeit der Handelssysteme anzustreben. Zusätzlich zur Beschränkung der Größe der Handelssysteme wird der Standard-GP durch Knotengewichte erweitert. So versucht man einerseits, die Makromutation durch den Crossover-Operator zu reduzieren und andererseits die Interpretationsfähigkeit der erzeugten Handelssysteme zu vereinfachen (vgl. 3.3.1 auf Seite 41). Aufbau dieser Arbeit Die Grundprinzipien und der Stand der Technik der genetischen Programmierung und der künstlichen neuronalen Netze werden zunächst in Kapitel 2.1 auf Seite 5 vorgestellt. Für diesen Ansatz werden Entwurf und Funktion von NN analysiert Ist weit verbreitet im Kontext der Entwicklung von Handelssystemen. Danach werden die Grundlagen technischer Handelssysteme ab Kapitel 2.3 ab Seite 18 vorgestellt. Einerseits wird die technische Analyse als Instrument zur Ermittlung günstiger Handelsmärkte dargestellt, andererseits wird ein Ansatz für die Festlegung der optimalen Handelspositionsgröße dargestellt. Über diese beiden Ansätze für das automatisierte Lernen haben verschiedene Autoren erfolgreiche Anwendungen berichtet. Einige dieser erfolgreichen Anwendungen sind in Kapitel 2.3.7 auf Seite 33 beschrieben. Ab Kapitel 3 auf Seite 37 finden Sie den Entwurf eines Systems zur Generierung, Optimierung und Prüfung von Handelssystemen mittels GP auf Basis des historischen Kurses Und Wechselkursdaten. Nach einem Überblick über das System werden die Anforderungen präsentiert und ein Konzept für die Software entwickelt. Die Eigenschaften des für die genetische Programmierung relevanten evolutionären Algorithmus werden definiert. Die Implementierungsdetails sind ab Kapitel 4 auf Seite 47 beschrieben. Die Ergebnisse der Experimente mit dem System sind ab Kapitel 5 auf Seite 55 dargestellt. Danach gibt es eine Diskussion und Bewertung der Ergebnisse sowie einen Ausblick auf mögliche Weiterentwicklungen des Systems in Kapitel 6 auf Seite 73. Kapitel 2 Grundlagen und Stand der Technik In diesem Kapitel sind die Grundprinzipien der Evolution Algorithmen und künstliche neuronale Netze werden vorgestellt und der aktuelle Stand der Technik beschrieben. Danach werden die relevanten Grundsätze des Anwendungsbereichs, die technischen Handelssysteme, diskutiert. 2.1 Genetische Programmierung Genetische Programmierung (GP) ist ein Algorithmus aus der Familie der evolutionären Algorithmen. In der Natur hat sich die Evolution als ein sehr erfolgreiches System für die Weiterentwicklung und Optimierung aller Kreaturen erwiesen. Evolutionäre Algorithmen simulieren die wesentlichen und erfolgreichen Eigenschaften des natürlichen Evolutionsprozesses mittels einfacher Modelle. Auf diese Weise ist es möglich, gute Lösungen mit geringem Aufwand zu finden, auch wenn es Probleme mit einem großen Suchbereich gibt. Datenstrukturen und Algorithmen werden durch evolutionäre Algorithmen generiert und optimiert, um die gegebenen Probleme zu lösen. Diese Einleitung folgt den Studien von Banzhaf et al. (BNKF98, Kapitel 1-8) sowie Koza, der GP in (Koz92) zum ersten Mal beschrieben hat. In den folgenden Abschnitten wird kurz beschrieben, wie ein Programm im GP strukturiert ist und wie die Evolution funktioniert. Danach werden bestehende Probleme des Verfahrens sowie Lösungsansätze für sie diskutiert. 2.1.1 Programmstruktur Die evolutionär entwickelten Personen während des GP sind Programme. Diese Programme bestehen aus Funktionen und Terminals (vgl. (BNKF98, Seiten 109 bis 118)). Die Auswahl der verwendeten Funktionen innerhalb eines genetischen Programms ist abhängig vom jeweiligen Anwendungsgebiet. Eine wesentliche Voraussetzung für die Auswahl der für das genetische Programm vorgesehenen Funktionen ist, dass es möglich sein sollte, eine Lösung für das Anwendungsproblem daraus zu machen. Um eine unnötige Vergrßerung des Suchbereichs zu vermeiden, sollten jedoch nicht zu viele Funktionen bereitgestellt werden. Nach Banzhaf et al. (BNKF98, Seite 111 folgend) ist es nicht sinnvoll, von Anfang an eine speziell auf das jeweilige Problem zugeschnittene Funktion zu entwickeln. Da GP für die Kombination von Funktionen sehr kreativ ist, kann es ausreichend sein, einfache Funktionen wie die booleschen und arithmetischen Funktionen zu liefern, um erstaunliche Ergebnisse zu erzielen. Die Argumente der angewandten Funktionen sind Terminals. Sie bestehen einerseits aus den vom System für das Training verwendeten Eingabedaten, andererseits aus den im Laufe der Evolution veränderten Konstanten. Diese Konstanten werden ephemerale Zufallskonstanten (ERC) genannt (vgl. (Koz92, Seite 242). Die Schließung der Funktionen in Bezug auf die Klemmen ist eine wesentliche Voraussetzung für die fehlerfreie Funktion der generierten Programme. Die angewandten Funktionen müssen so entworfen werden, dass sie alle Eingabewerte verarbeiten können: zB wird die Division oft angepasst, um das Programm abzubrechen, falls es Divisionen mit Null gibt. Um die Reihenfolge der Auswertung der Programmfunktionen zu ermitteln, werden die Funktionen und Terminals eines Programms in einer entsprechenden Datenstruktur abgelegt. Meistens werden Baumstrukturen dazu verwendet. Als Organisationsformen werden jedoch auch lineare Strukturen sowie allgemeine Graphen verwendet. Bei Baumstrukturen erfolgt die übliche Reihenfolge der Auswertung von links nach rechts: der am weitesten außen liegende linkste Knoten innerhalb der Baumstruktur, für den alle Einträge vorhanden sind, wird ausgeführt. Die prominenteste Repräsentation einer linearen Strukturierung der Funktionen und Terminals ist die Simulation einer Registermaschine. Er verfügt über mehrere Register, einen linearen Speicher für die Anordnung von Klemmen zu den Registern sowie Funktionen, die die Register für den Ein - / Ausgang verwenden. Eine relativ neue Variante der Strukturierung sind Richtungsgraphen, die Zyklen umfassen können (vgl. (BNKF98, Seite 116 nachfolgend)). Was diese Struktur interessant macht, ist die Tatsache, dass Schleifen und Rekursionen im Laufe der Evolution resultieren und nicht zuvor durch spezielle Funktionen bereitgestellt werden müssen. Überflüssige Zyklen könnten jedoch problematisch werden, da sie das Programm unnötig verlängern. 2.1.2 Initialisierung der GP-Population Da die Baumstruktur die am weitesten verbreitete Datenstruktur für Einzelpersonen ist und auch für das Anwendungsbeispiel verwendet wird, wird im folgenden nur diese Datenstruktur betrachtet. Die Methoden, die von Koza in (Koz92, Seiten 91 bis 94) für die Initialisierung der spezifischen Individuen der Bevölkerung eingeführt wurden, werden als Vollständiges Wachstum bezeichnet. Für die gesamte Population wird die maximale Größe eines einzelnen Programms durch die maximale Tiefe der spezifischen Bäume bestimmt. Im Falle der Full-Methode für die Initialisierung eines Individuums wird ein Baum mit maximaler Tiefe erstellt, für den alle Knoten aus dem Satz von Funktionen an der Stelle ausgewählt werden, mit Ausnahme der Knoten mit maximaler Tiefe Ausgewählt aus dem Satz der Terminals zufällig. Bei der Growth-Methode wird der Baum aus der Wurzel aufgebaut, wobei für jeden Knoten ein Element aus der Funktion, bzw. aus dem Terminal, zufällig ausgewählt wird. D. h. G. 2.2. G. G. D. h.


No comments:

Post a Comment