PDF file - IDB - Universität Bonn

Werbung
Rheinische
Friedrich-WilhelmsUniversität Bonn
Institut für Informatik III
DIPLOMARBEIT
Eine regelbasierte Implementierung von
Handelsstrategien im TInTo-System
So Hee Shin
Bonn, März 2009
Erstgutachter: Prof. Dr. Rainer Manthey
An alle Interessierte an der technischen Wertpapieranalyse
und zukünftige TInTo-Entwickler
Dankwort
An dieser Stelle möchte ich mich herzlich bei all jenen bedanken, welche mich bei dieser Arbeit
unterstützt haben. Besonderer Dank gilt Herrn Prof. Dr. Rainer Manthey und Dr. Andreas
Behrend, welche mir den Einstieg in dieses faszinierende Themengebiet ermöglicht haben und
mir immer mit Rat zur Seite standen. Ein herzlicher Dank gilt auch meiner ganzen Familie für
die interessanten Diskussionen zu diesem Thema sowie die tatkräftige Unterstützung. Darüber
hinaus gilt mein Dank Andreas Behrend sowie meinem Mann Steffen Weihrauch für die
Durchsicht und Korrekturen dieser Arbeit. Ein großes Dankeschön auch an meinen Sohn
Namsoo für die Geduld mit Mama.
Inhaltsverzeichnis
Einleitung
1
Grundlage
5
2.1 Relationale Datenbanken........................................................................................................ 5
2.1.1 Grundlagen.................................................................................................................5
2.1.2 Normalformen............................................................................................................7
2.1.2 Kommerzielle Systeme............................................................................................... 9
2.2 SQL....................................................................................................................................... 10
2.2.1 Einführung und Überblick....................................................................................... 10
2.2.2 DML - Data Manipulation Language...................................................................... 11
2.2.3 DDL - Data Definition Language............................................................................ 15
2.2.4 Sichten...................................................................................................................... 16
2.3 Microsoft Access ....................................................................................................................17
Wertpapieranalyse
21
3.1 Wertpapierhandel.................................................................................................................. 21
3.2 Analyseansätze....................................................................................................................... 23
3.3 Chartanalyse.......................................................................................................................... 29
3.4 Technische Indikatoren......................................................................................................... 33
3.4.1 Trendfolger............................................................................................................... 33
3.4.2 Oszillatoren.............................................................................................................. 38
3.4.3 Trendintensitätsindikatoren.....................................................................................41
3.4.4 Volumenindikatoren................................................................................................. 43
Handelsstrategien
45
4.1 Generierung von Handelssignalen........................................................................................ 45
4.2 Elementare Handelsstrategien............................................................................................... 47
4.3 Erweiterte Handelsstrategien.................................................................................................49
4.3.1 Kombination technischer Indikatoren..................................................................... 49
4.3.2 SMA + ADX............................................................................................................ 51
4.3.2 SMA + CMF............................................................................................................ 53
4.3.3 SMAC (SMA Crossover).......................................................................................... 55
4.3.4 MACDCP(MACD Crossover Plus).......................................................................... 56
4.4 Kombinierte Strategien mit Investition in Handelspausen....................................................60
TInTo
63
5.1 Systemarchitektur.................................................................................................................. 63
5.2 Spezifikation technischer Indikatoren....................................................................................67
5.3 Diskussion des bestehenden TInTo-Systems .........................................................................
70
5.4 Korrekturen der Indikatorberechnung.................................................................................. 71
5.4.1 Indikatorformeln...................................................................................................... 71
5.4.2 Berechnungsperioden............................................................................................... 76
5.4.3 Formelvariante......................................................................................................... 83
Implementierung elementarer Handelsstrategien
85
6.1 Berechnung von Handelssignalen......................................................................................... 85
6.1.1 Bestimmung von Handelssignalen........................................................................... 85
6.1.2 Eliminierung irrelevanter Handelssignale................................................................ 87
6.1.3 Bewertung von Handelsstrategien............................................................................ 90
6.2 Sichtbasierte Signalberechnung und Optimierungen........................................................... 91
6.2.1 Naive Implementierung............................................................................................ 94
6.2.2 Verwendung von fortlaufenden Nummern............................................................ 100
6.2.3 Separate Berechnung von Handelssignale............................................................. 105
6.2.4 Gruppieren der Datensätze.................................................................................... 110
6.2.5 Verwendung materialisierter Sichten..................................................................... 121
Implementierung erweiterter Handelsstrategien
125
7.1 Erweiterte Teilberechnungen.............................................................................................. 125
7.2 Erweiterte Handelsstrategien............................................................................................... 127
7.2.1 Gleitende Signallinien............................................................................................ 127
7.2.2 Zusätzliche Strategiebedingungen.......................................................................... 130
7.2.3 Kombination mehrerer Indikatoren....................................................................... 133
7.3 Kombinierte Strategien mit Investition in Handelspausen.................................................. 135
Bewertung von Handelsstrategien
143
8.1 Renditeberechnung.............................................................................................................. 143
8.2 Implementierung................................................................................................................. 145
8.2.1 Aktive-Markt-Strategien......................................................................................... 145
8.2.2 Kombinierter Strategien mit Investition in Handelspausen................................... 149
8.3 Bestehende Fehlermöglichkeit............................................................................................. 157
8.4 Performanzanalyse.............................................................................................................. 160
8.4.1 Berechnungsdauer................................................................................................... 160
8.4.2 Profitabilitätstest von Handelsstrategien.................................................................. 164
Zusammenfassung und Ausblick
171
Anhang
175
1- A: Begriffe.....................................................................................................................175
1-B: TInTo-StrategyBuilder-Anleitung............................................................................ 177
Literaturverzeichnis
189
1
Einleitung
Private wie institutionelle Investoren sehen sich kontinuierlich mit der Frage konfrontiert, wann
die sie interessierenden Wertpapiere günstige Einstiegskurse bieten oder aber vielleicht
profitable Ausstiegskurse erreicht haben. Wann soll man kaufen und wann verkaufen? Und
welche Wertpapiere sind überhaupt interessant und haben das Potential für Kursgewinne? Das
Ziel dieser Arbeit ist der Entwurf und eine regelbasierte Implementierung von Handelsstrategien
für Wertpapiere in das TInTo-System (Technical Indicator Tool) um einige dieser Fragen
beantworten zu helfen. Zur Lösung dieser Aufgabenstellung sind im wesentlichen folgende
Teilaufgaben erfolgreich zu erfüllen, die Voranalyse technischer Indikatoren, die Entwicklung
und Optimierung von profitablen Handelsstrategien, eine regelbasierte Implementierung und
Optimierung auf Recheneffizienz sowie die Entwicklung und Implementierung von
Bewertungsmodul der Handelsstrategien. Hauptaugenmerk liegt dabei auf der Profitabilität der
entwickelten Handelsstrategien und auf der Effizienz der regelbasierten Implementierung.
TInTo ist ein an der Universität Bonn entwickeltes, datenbankgestütztes Werkzeug zur
technischen Analyse von Wertpapieren realisiert auf der Basis von Microsoft Access und VBA
(Visual Basic for Applications). Wertpapiere sind an einer Wertpapierbörse gehandelte Papiere
wozu unter anderem zählen Aktien und Fonds. Ist ein Wertpapier an der Börse Frankfurt
gehandelt und kann es über sein entsprechendes Symbol (zum Beispiel „DTE“ für die Deutsche
Telekom AG, Bonn) identifiziert werden, so kann es in TInTo verwendet werden. Für die
Auswertung von historischen Wertpapierdaten und die versuchte Prognose zukünftiger
Kursentwicklungen werden im wesentlichen zwei Ansätze unterschieden: die technische
Analyse und die fundamentale Analyse. Die im Rahmen dieser Arbeit zur Anwendung
kommende Analyse technischer Indikatoren ist neben der Chartanalyse ein wichtiges Teilgebiet
der technischen Analyse von Wertpapieren. Die Chartanalyse und die fundamentale Analyse
werden im Kontext von TInTo nicht eingesetzt. Die technische Analyse wertet die Kursdaten
und den Handelsumsatz (die Anzahl gehandelter Papiere) von Wertpapieren aus und versucht
daraufhin, den zukünftigen Kurstrend mit Hilfe von grafisch dargestellten bekannten
Kursmustern oder von vergangenen Kurs- und Umsatzbewegungen zu erkennen. Eventuelle
Handelsempfehlungen für den Kauf oder Verkauf von Wertpapieren werden dann aus den
gegebenenfalls erkannten Trends abgeleitet. Im Gegensatz zur hier verwendeten technischen
Analyse befasst sich die fundamentale Analyse neben den Kurs- und Umsatzdaten hauptsächlich
1
1. Einleitung
mit fundamentalen Informationen über das jeweilige Wertpapier und dessen wirtschaftliches
Umfeld und versucht daraus, den „fairen Wert“ des Wertpapiers zu bestimmen sowie den
zukünftigen Verlauf des Wertpapierkurses zu prognostizieren. Durch den Vergleich dieses
fairen Wertes mit dem tatsächlichen gegenwärtigen Kurs wird eine Handelsentscheidung
getroffen.
Eine grundlegende Prämisse der technischen Analyse liegt darin, dass alle Faktoren welche die
Kurse von Wertpapieren beeinflussen könnten (unter anderem betriebswirtschaftliche,
volkswirtschaftliche, politische oder marktphysiologische), sich in diesen Kursen schon
widerspiegeln, also durch die Reaktion der Marktteilnehmer auf fundamentale Faktoren, diese
in die Kurse bereits „eingepreist“ sind. Fürsprecher der technischen Analyse argumentieren
daher, dass sich damit Wertpapiere mit geringem Zeit- und Ressourcenaufwand analysieren
lassen als mit einer ausführlichen fundamentalen Analyse, was als ein wesentlicher Vorteil der
technischen Analyse angesehen wird. Diese Logik hat naturgemäß nur so lange Bestand, wie
noch eine überwiegende Mehrheit von Marktteilnehmern eine fundamentale Analyse der
Wertpapiere durchführt und in der Tat die damit gewonnenen Erkenntnisse dann in die Kurse
„einpreisen“. Im Rahmen dieser Arbeit wird davon ausgegangen, dass diese Annahme gilt.
Dieser Arbeit gehen bereits vier Diplomarbeiten zur Entwicklung und Weiterentwicklung von
TInTo voraus. Die Diplomarbeit von Alexander Geppert [Gep05] beinhaltet den theoretischen
Teil zur Modellierung der technischen Analyse von Wertpapieren. Darauf aufbauend entwickelte
Christian Hübel [Hüb07] eine erste Access-Applikation “TInTo” zur graphischen Darstellung
sowohl der Wertpapierkurse als auch der berechneten Indikatoren. Eine webbasierte Version von
TInTo wurde anschliessend von Nargis Hahn [Han07] implementiert. Gereon Schüller’s
Diplomarbeit schließlich erweiterte TInTo um die Möglichkeit der Intraday-Analyse [Sch07].
Ein allgemeine Besonderheit von TInTo liegt dabei darin, dass die Berechnungsvorschriften der
technischen Indikatoren sowie deren Aktualisierung mittels der Datenbanksprache SQL
implementiert sind. TInTo verwendet zur Datenverwaltung das DBMS (Database Management
System) Microsoft Access. Die von MS Access hierfür nicht angebotenen zusätzlich benötigten
Funktionen wurden mittels Visual Basic for Applications implementiert. Für die graphische
Darstellung der Kursdaten sowie der technischen Indikatoren wurde die von der Firma
Advanced Software Engineering angebotene Anwendung ChartDirector verwendet. Die für die
Analyse und Darstellung benötigten Wertpapierdaten werden über eine Internetschnittstelle vom
Finanzportal Yahoo! Finance geladen. Die oben genannten Diplomarbeiten haben bereits
technische Indikatoren in das TInTo-System integriert sowie die graphische Darstellung der
Kursverläufe und Indikatorwerte realisiert. Auch wurde die Frage nach der Implementierbarkeit
von Handelsstrategien und deren Bewertung mittels SQL positiv theoretisch beantwortet.
In den weiteren Schritten hin zu einer praktischen Implementierung sind in dieser Arbeit
geeignete Indikatoren auszuwählen sowie deren typische Formeln anzupassen und zu
implementieren. Dies ist notwendig und sinnvoll, da in der einschlägigen Literatur, insofern
überhaupt dokumentiert, verschiedene, oftmals lückenhafte oder in bestimmten Fällen sogar
gegensätzliche Darstellungen existieren. In diesen Fällen werden die in TInTo vorhandenen
Indikatoren auf die allgemein gebräuchlichen Formeln angepasst.
In einem nächsten Schritt werden die für eine Erfolg versprechende Handelsstrategie geeigneten
Einzelindikatoren sowie Indikatorenkombinationen ausgewählt und bewertet. Dazu müssen
zunächst die allgemeinen Vor- und Nachteile der betrachteten Indikatorenklassen, zum Beispiel
Trendfolger oder Oszillatoren, sowie die Eigenschaften einzelner Indikatoren im Speziellen
analysiert werden, auch vor dem Hintergrund ihrer spezifischen Eignung unter bestimmten
Marktsituationen. Für die Formulierung allgemein gültiger Handelsstrategien sind diese
Indikatoren in geeigneten Kombinationen unter Verwendung historischer Wertpapiere zu testen
2
1. Einleitung
und ihre Kombinationen zu optimieren. Als spezielle Anforderung sind auch solche Perioden zu
berücksichtigen, in welchen eine Investition in Wertpapiere unter Umständen nicht lohnt, so
genannte Handelspausen. Hierfür sind geeignete Instrumente auszuwählen und zu testen, um
den zuvor erzielten Kapitalgewinn durch Kursverluste der Wertpapiere nicht wieder zu
reduzieren. Im Ergebnis sind praktisch anwendbare und getestete Handelsstrategien zu
formulieren und in das TInTo-System zu integrieren.
Im Schritt der praktischen Implementierung steht die Aufgabe, die theoretisch formulierten und
für ihr optimiertes Renditeergebnis selektierten Handelsstrategien regelbasiert in der
Datenbanksprache SQL umzusetzen. Dabei ist besonderes Augenmerk der Bearbeitungszeit zu
widmen, da je nach Marktsituation innerhalb kürzester Zeit auf entsprechende Handelssignale
reagiert werden muss. Auch steht die Anforderung, dass die jeweils generierten Handelssignale
zu jeder Zeit mit „Kauf“, „Verkauf“, oder „Kein Handel“ eindeutig sein müssen, ohne die
Notwendigkeit subjektiver Interpretation.
Zur Bewertung des Handelsergebnisses ist ein Modul zu erstellen und zu integrieren, welches
auf Basis historischer Kursdaten hypothetische Handelssignale, alle resultierenden
Handelsaktionen und deren Renditen, sowie die kumulative Rendite über den gesamten
Analysezeitraum darstellen kann. Dem Anwender sollen dazu möglichst viele Freiheitsgrade
hinsichtlich Strategieauswahl, zu investierendem Wertpapier, der Aktionen in Handelspausen
sowie zur Strategie- und Indikatorfeinabstimmung mittels wählbarer Parameter ermöglicht
werden. Die Handelsergebnisse sind tabellarisch für mehrere Strategieoptionen vergleichbar
darzustellen.
Im Ergebnis dieser Arbeit sind sowohl profitable Handelsstrategien entwickelt als auch
effiziente regelbasierte Implementierungen in TInTo realisiert worden. Dem Anwender stehen
nunmehr vielfältige Analysemöglichkeiten zur Verfügung um anhand historischer Kurse
verschiedene Handelsstrategien zu testen und vorhandene fortlaufend zu verbessern. Dabei
können sowohl profitable Indikatorenkombinationen ermittelt werden als auch ein Finetuning
der Strategien mittels frei einstellbarer Indikator- und Strategieparameter durchgeführt werden.
Die resultierenden Handelsergebnisse lassen sich im Anschluss für verschiedene
Strategieoptionen tabellarisch darstellen und vergleichen.
Die vorliegende Arbeit ist folgendermaßen gegliedert: In Kapitel 2 werden die Grundlagen der
in dieser Arbeit Verwendung findenden relationalen Datenbanken, die Datenbanksprache SQL
und das Datenbankmangementsystem (DBMS) „Microsoft Access“ vorgestellt. Dabei werden
auch kurz kritische Punkte zu relationalen Datenbanken, mehrstufigen Schachtelungen von
Sichtdefinitionen und der Vergleich von Access mit anderen DBMS gesprochen. Anschließend
bietet das Kapitel 3 eine Einführung in die Wertpapieranalyse mit dem Schwerpunkt auf der im
TInTo-Projekt eingesetzten Analysemethode auf Basis technischer Indikatoren und von
Handelssignalen. Neben den technischen Indikatoren werden auch auf andere Analysemethoden
wie beispielsweise die fundamentale Analyse und die Chartanalyse eingegangen. Darüber
hinaus werden Umsetzungsmöglichkeiten für weitere Analysemethoden in TInTo vorgeschlagen
sowie ein kritischer Blick auf mögliche volkswirtschaftliche Folgen einer Handelskultur
basierend ausschließlich auf technischen Indikatoren geboten. Entwürfe von Handelsstrategien
basierend auf technischen Indikatoren werden in Kapitel 4 vorgestellt. Mit dem Ziel,
„erfolgsversprechende“, profitable Handelsstrategien anzubieten, werden hier weitere
Handelsstrategien entworfen und beispielhaft erläutert, welche neben einem technischen
Indikator weitere Handelskriterien verwenden. Das Kapitel 5 bietet einen Überblick über das
TInTo-System, worauf die Implementierung der Handelsstrategien aufbaut. Im Detail werden
die an der Berechnungen der technischen Indikatoren vorgenommenen Verbesserungen
beispielhaft dargestellt. Da eine kompromisslos korrekte und gegenüber öffentlich verfügbaren
Systemen vergleichbare Berechnung der technischen Indikatoren eine grundlegende
3
1. Einleitung
Voraussetzung für ein System zur technischen Wertpapieranalyse ist, wurde der Anpassung der
Indikatorberechnung eine besondere Aufmerksamkeit gewidmet. In Kapitel 6 wird dargestellt,
wie elementare Handelsstrategien ausgehend von den in Kapitel 4 entworfenen Handelslogiken
regelbasiert implementiert werden können und wie die hypothetischen Handelsaktionen
bezogen auf historischen Daten für eine Strategiebewertung ermittelt werden können. Dazu
werden beispielhaft fünf vorangegangene Optimierungsschritte erläutert, welche die
Recheneffizienz erheblich verbessern konnten. In Erweiterung der elementaren Strategien
beschreibt Kapitel 7 beispielhaft, wie erweiterte Handelsstrategien sowie kombinierte
Handelsstrategien mit Investition in Handelspausen regelbasiert implementiert werden können
und wie die hypothetische Handelsaktionen für Strategiebewertung ermittelt werden. In Kapitel
8 werden die entworfenen Methoden für die Strategiebewertung sowie deren Implementierung
erläutert. Im Detail werden unter Verwendung des erstellten Moduls TInTo-StrategyBuilder
Performanzanalysen sowohl zur Profitabilität der verschiedenen Handelsstrategien als auch zur
Recheneffizienz aller Berechnungen dargestellt. Eine Zusammenfassung und ein Ausblick auf
weitere Entwicklungsmöglichkeiten folgen in Kapitel 9.
Eine Übersicht wesentlicher Begriffe sowie eine Anleitung zu dem in dieser Arbeit
implementierten Modul „TInTo-StrategyBuilder“ sind in den Anhängen 1-A sowie 1-B
aufgeführt. Es wird empfohlen, sich im Vorfeld mit den Begriffserläuterungen sowie mit der
Anleitung vertraut zu machen. In der täglichen Praxis haben sich die englischen Bezeichnungen
und Fachbegriffe für die technische Analyse durchgesetzt, weshalb diese auch so in dieser
Arbeit verwendet werden. Alle im Rahmen dieser Arbeit verwendeten Daten zu Wertpapieren
sind, sofern nicht anders gekennzeichnet, Tagesschlusskurse bzw. Tageswerte (engl. End-of-Day
Data).
4
2
Grundlage
Dieses Kapitel bietet eine Einführung zu relationalen Datenbanken, eine der Grundlagen der
Anwendung TInTo. In diesem Zusammenhang wird die für die Implementierung und Bewertung
von Handelsstrategien extensiv verwendete Datenbanksprache SQL in Ihren wesentlichen
Eigenschaften erläutert. Anschließend folgt eine
Einführung in die grundlegenden
Funktionalitäten
vom
Microsoft
Access,
dem
für
TInTo
verwendeten
Datenbankmanagementsystem (DBMS). Ein Vergleich von MS Access mit anderen
marktüblichen DBMS schliesst das Kapitel ab.
Die präsentierten Sachverhalte beruhen im wesentlichen auf Informationen aus [Man07] und
[Wik08], mit weiteren Details aus [HM08r], [ZNet08], [CW08] und [ITW08].
2.1 Relationale Datenbanken
Der folgende Abschnitt bietet eine Einführung in die charakteristischen Eigenschaften
relationaler Datenbanken und präsentiert einen Überblick über den gegenwärtigen Markt für
Datenbanksysteme. Die Grundlagen relationaler Datenbanken wurden von Edgar F. Codd
entwickelt und im Jahr 1970 in seiner Forschungsarbeit mit dem Titel „A Relational Model of
Data for Large Shared Data Banks“ am IBM Almaden Research Center in San Jose, CA
veröffentlicht [Cod70].
2.1.1 Grundlagen
Eine relationale Datenbank kann man sich als eine Sammlung von Tabellen mit darin
befindlichen Daten vorstellen. Jede dieser Tabellen besteht aus einer Menge von Spalten und
Zeilen. Die Tabelle werden in der Theorie „Relation“ genannt. Leider werden in verschiedenen
Zusammenhängen unterschiedliche Bezeichnungen für Grundbegriffe verwendet. Die Folgende
Abbildung stellt drei Begriffssysteme vor, welche in der Theorie, allgemeinen Praxis und
beispielhaft für ein Produkt in MS-Access verwendet werden, jedoch alle sinngleich verwendet
werden können.
5
2. Grundlage
So genannte Schema legen dabei die Struktur und den Namen einer Relation fest, wobei
Zustand die in einer Relation enthaltenen Tupel bezeichnet.
Abbildung 2.1 illustriert drei Begriffssysteme am Beispiel der Relation „Wertpapier“ mit den in
der Theorie benutzten Begriffen:
Theorie
Praxis
Access
Relation
Tabelle
Datenblatt
Tupel
Zeile
Datensatz
Attribut
Spalte
Feldbezeichner
Relation
Attribut
Wertpapier
WP_ID
Name
ISIN
Info
1
MSFT
US5949181045
Microsoft Corp.
2
ORCL
US68389X1054
Oracle Corp.
3
IBM
US4592001014
IBM Corp.
4
TDC
US88076W1036
Teradata Corp.
Schema
Tupel
Zustand
Abbildung 2.1 Drei Begriffssysteme [Man07] und Relation „Wertpapier“
Anhand von sogenannten Schlüsseln wird ein Tupel in einer Relation identifiziert. Dabei
besteht ein Schlüssel aus einer Menge von Attributen, die so gewählt sind, dass keine zwei
Tupel dieselben Werte enthalten. Wenn eine Relation mehrere Schüsseln besitzt, kann einer als
Primärschlüssel festgelegt werden, wobei dieser keinen Nullwert enthalten darf. Somit lässt
sich jedes Tupel durch Primärschlüssel eindeutig identifizieren. Darüber hinaus kann eine
Relation auch einen Schlüssel aus einer anderen Relation enthalten, den sogenannten
Fremdschlüssel.
Weiterhin können Beziehung zwischen Relationen als Beziehungsrelation ausgedrückt werden.
In unserem Beispiel der Investmentdatenbank gibt es die Relation „Wertpapier“ mit
Primärschlüssel „WP_ID“ (Abbildung 2.1) und die Relation „Kunden“ mit Primärschlüssel
„Kunden_ID“ (Tabelle 2.1 unten). Um die Bestellungsinformation zur Verfügung zu stellen,
wird eine Beziehungsrelation „Bestellung“ (Tabelle 2.1 unten) erstellt. Die Attributmenge aus
Kunden_ID und WP_ID dient in dieser Beziehungsrelation als Schüssel.
In der aus der Beziehungsrelation hervorgehenden Relation „Bestellung“ kann man erkennen,
dass Herr Lukas Fischer mit Kunden_ID 10 Wertpapiere von Oracle mit der WP_ID 2 und von
Teradata mit der WP_ID 4 bestellt hat. Die Kunden_ID verbindet hier jede Tupel in der Relation
„Kunden“ mit einer Tupel in der Tabelle „Bestellung“. In diesem Zusammenhang spricht man
dann von „Kunden_ID“ als Fremdschlüssel. Analog mit WP_ID.
Kunden
Kunden_ID
Name
Vorname
9
Schmitt
Paul
10
Fischer
Lukas
11
Müller
Lena
6
2. Grundlage
Bestellung
Kunden_ID
WP_ID
9
1
10
2
10
4
11
3
Tabelle 2.1 Relation Kunden und Bestellung
Zur Modellierung einer Datenbank wird das Entity-Relationship-Modell (ER-Modell)
verwendet. Dabei beschreiben Objekte (Entities) und deren Beziehungen (engl. Relationsships)
einen Abschnitt der realen Welt. Das ER-Modell dient sowohl in der konzeptionellen Phase der
Datenbankentwicklung als ein Kommunikationsmittel zwischen Anwendern und Entwicklern
als auch in der Implementierungsphase als Grundlage für das Design der Datenbank. Das ERModell besteht aus einer Grafik sowie einer Beschreibung der Datenstrukturen und des
Dateninhalts. Abbildung 2.2 stellt ein ER-Diagramm mit den Objekten „Kunden“ und
„Wertpapier“ und der Beziehung „Bestellung“ dar:
Kunden
Bestellt
Wertpapier
Abbildung 2.2 ER-Diagramm
2.1.2 Normalformen
Um die Wartung einer Datenbank zu vereinfachen und die Konsistenz der Daten zu
gewährleisten, sollen Redundanzen von Daten verringert und Anomalien verhindert werden. Die
sogenannte Normalisierung durch Relationenzerlegung soll dieses Ziel erreichen. Dabei erfolgt
die Normalisierung in mehreren Schritten. Diese Zerlegungsschritte sollten so erfolgen, dass
keine Daten dabei verloren gehen und die Abhängigkeit von Attributen geschützt wird. Im
Folgenden werden die erste 3 Schritte anhand einer Beispielsrelation „Investitionskosten“
vorgestellt.
• Unnormalisiert
Primärschlüssel von Relation „Investitionskosten“ ist der zusammengesetzte Schlüssel aus
„Rechnung_ID“ und „WP_ID“.
Investitionskosten
Rechnung_ID
Datum
Adresse
WP_ID
Anzahl
Einzelpreis
123
1309
Lena Müller, Baumstr.12, 53134, Bonn
45
20
50,00
Tabelle 2.2 Unnormalisiert
• Erste Normalform
Die Erste Normalform liegt vor, wenn jeder Attrubutwert atomar, also unzerlegbar ist. In
unserem Beispiel ist der Attributwert „Adresse“ nicht atomar, da er in mehrere Attribute
aufgeteilt werden kann.
7
2. Grundlage
Im ersten Schritt wird demnach der Attributwert „Adresse“ folgendermaßen aufgeteilt:
Investitionskosten
Rechnung_ID Datum Name Vorname
123
1309
Müller
Straße
Lena
PLZ
Ort
WP_ID
Anzahl
Einzelpreis
45
20
50,00
Baumstr.12 53134 Bonn
Tabelle 2.3 Erste Normalform
• Zweite Normalform
Eine Relation ist in der Zweiten Normalform, wenn die Erste Normalform vorliegt und jedes
Nicht-Schlüsselattribut von jedem Schlüsselkandidaten vollständig funktional abhängig ist.
Funktional abhängig bedeutet, dass jeder Attributwerte von einem Nicht-Schlüsselattribut
immer mit demselben, eindeutig bestimmten Schüsselattributwert kombiniert vorkommt.
Weiterhin bedeutet vollständig funktional abhängig, dass Nicht-Schlüsselattribut nicht nur von
einem Teil der zusammengesetzten Schlüssel funktional abhängig ist, sondern vom ganzen
Schlüssel.
Im Beispielsrelation „Investitionskosten“ in der Ersten Normalform sind die Attribute „Datum“,
„Name“, „Vorname“, „Straße“, „PLZ“ und „Ort“ nur funktional abhängig vom Attribut
„Rechnung_ID“ und unabhängig vom Attribut „WP_ID“. Das Attribut „Anzahl“ ist vollständig
funktional abhängig vom zusammengesetzten Primärschlüssel. Jedoch ist das Attribut
„Einzelpreis“ funktional abhängig nur von der „WP_ID“. Daher wird die Relation
„Investitionskosten“ in weiteren Relationen untergebracht:
Investition
Rechnung_ID
Datum
Name
Vorname
Straße
PLZ
Ort
123
1309
Müller
Lena
Baumstr.12
53134
Bonn
Position
Rechnung_ID
WP_ID
Anzahl
123
45
20
Wertpapier
WP_ID
Einzelpreis
45
50,00
Tabelle 2.4 Zweite Normalform
• Dritte Normalform
Eine Relation ist wiederum in der Dritten Normalform, wenn die Zweite Normalform vorliegt
und es keine transitive Abhängigkeiten vorliegen. Keine Transitive Abhängig hier bedeutet, dass
jedes Nicht-Schlüsselattribut direkt funktional abhängig von jedem Schlüsselkandidaten ist.
In der Relation „Investition“ in der Zweiten Normalform sind „Vorname“, „Straße“, „PLZ“
abhängig von „Name“, aber indirekt abhängig vom „Rechnung_ID“. Weiterhin wird eine
Kunden_ID in der Dritten Normalform dazugefügt, da „Name“ zur Identifikation von Kunden
nicht eindeutig ist. Das Attribut „Ort“ ist direkt abhängig vom „PLZ“. Somit wird die Relation
„Investition“ in der Zweiter Normalform folgendermaßen aufgeteilt:
Investition
Rechnungs_ID
Datum
Kunden_ID
123
1309
82
8
2. Grundlage
Kunden
Kunden_ID
Name
Vorname
Straße
PLZ
82
Müller
Lena
Baumstr. 12
53134
PLZ
PLZ
Ort
53134
Bonn
Tabelle 2.5 Dritte Normalform
Über die Erste bis Dritte Normalform hinaus gibt noch weitere Normalisierungsschritte, z.B.:
• Boyce-Codd-Normalform, die eine Erweiterung der Dritte Normalform ist,
• Vierte Normalform, basierend auf mehrwertigen Abhängigkeiten und
• Fünfte Normalform, welche auf Join Dependencies beruht.
In der Praxis allerdings wird meist die Einhaltung der vorgestellten Dritten Normalform als
ausreichend angesehen und angestrebt.
2.1.2 Kommerzielle Systeme
Relationale Datenbanken haben sich, trotz einiger Kritikpunkte, als etablierter Standard für
Datenbanken durchgesetzt. Als ein wesentlicher Grund für den Erfolg rationaler Datenbanken
gilt die Abbildung in Tabellenform. Im Vergleich zu den früheren Datenbankmodellen wie
„hierarchischen Modell“ oder „Netzwerkmodell“ sind Tabellen sehr anschaulich und bieten eine
flexiblere Struktur. Im Ergebnis können relationale Datenbanken lange Zeit den sich ändernden
Bedürfnissen angepasst werden, ohne grundlegende Systemänderungen vornehmen zu müssen.
Als einen weiteren wesentlichen Vorteil gegenüber früheren Modellen gibt es für relationale
Datenbanken eine einheitliche Datenbanksprache „SQL“, um relationale Datenbanken zu
verwalten.
Kritikpunkte zu relationalen Datenbanken beziehen sich im Wesentlichen auf die
Strukturabhängigkeit der Abfragen. So müssen komplexe Anwendungsobjekte bei einer Abfrage
durch eine Verwaltungssoftware mittels etlicher sogenannter Joins (Verknüpfungen von
Tabellen) aus den einzelnen Tabellen hergestellt werden. Solche Abfragen können schnell
unübersichtlich werden, da bei jeder strukturellen Änderung des Anwendungsobjekts alle
relevante Tabellen auf mögliche Strukturänderungen überprüft werden müssen. Die
Verwendung von Joins macht den Objektzugriff sowie die Entwicklung der Datenbanksystem
aufwendiger als z.B. bei einer sogenannten Objektdatenbank.
In manchen Fällen relationaler Datenbanken werden künstliche Schlüsselattribute eingesetzt,
um Tupel eindeutig identifizieren zu können. Diese künstlichen Attribute stellen allerdings
keine Informationen über die Anwendungsobjekte dar sondern dienen nur als
Verwaltungsinformation.
Als weiterer Nachteil relationaler Datenbanken sollte erwähnt werden, dass Objekteigenschaften
und –verhalten schwer beschrieben werden können.
In der modernen Software-Entwicklung sind objektorientierte Programmiersprache längst
Standard. Diesem Beispiel folgend, wurden Objektdatenbanken, welche Objekte abbilden,
zunehmend angeboten. Die Hersteller relationaler Datenbankmanagementsysteme (DBMS)
versuchen zunehmend ebenfalls, ihre Produkte um objektorientierte Fähigkeiten zu erweitern.
9
2. Grundlage
Ist dann zu erwarten, dass Objektdatenbanken der nächste Standard werden?
Gegenwärtig leiden Objektdatenbanken noch unter einem gewissen Leistungsnachteil
gegenüber relationalen Datenbanken bei der Verarbeitung großer Datenmengen. Dieser
Leistungsnachteil resultiert aus den Zugriffsprinzipien, wobei auf Objekte über mehrere
Pfadarten durch beispielsweise Vererbung und Assoziation zugegriffen werden muss. Als
weiterer wesentlicher Nachteil von Objektdatenbanken ist der noch fehlende Standard zur
Datenabfrage und Verwaltung zu nennen. Ein Standard wie SQL im Bereich der relationalen
Datenbanken existiert derzeit für Objektdatenbanken noch nicht.
2.2 SQL
Im Folgenden wird die Datenbanksprache SQL vorgestellt. SQL wird in dieser Arbeit für die
Berechnung der technischen Indikatoren, die Implementierung der Handelsstrategien sowie die
Bewertung der Handelsstrategien (Profitabilitaetsanalyse) eingesetzt. Im Rahmen der folgenden
Beschreibung wird auch dargestellt, dass die in dieser Arbeit benötigte Funktion rekursiver
Berechnungen von dem verwendeten Dialekt SQL-92 nicht unterstützt wird. Abschliessend wird
in diesem Abschnitt die Expandierung von Sichten beschrieben.
2.2.1 Einführung und Überblick
Die relationale Datenbanksprache SQL ermöglicht Daten in einer Verwaltungssoftware, genannt
Datenbankmanagementsystem (DBMS), anzulegen, zu ändern und abzufragen. SQL dient also
als ein Kommunikationsmittel zwischen dem Benutzer und dem DBMS und ist heute die am
weitesten verbreitete Datenbanksprache und wird von fast allen gängigen relationalen DBMS
unterstützt.
Als Sprache für die relationalen Datenbank wurde der Vorläufer von SQL, SEQUEL in den
1970er Jahre für das Projekt „System R“ durch IBM entwickelt. Ende der 70er Jahre wurde
SQL zum erstmalig mit Oracle V2 durch Relational Software Inc. auf den Markt gebracht.
Im Jahr 1986 wurde SQL durch das ANSI (American National Standard Institute) und ein Jahr
später durch die ISO (International Standards Organization) standardisiert. Sie wurde seitdem
mehrfach revidiert und liegt zuletzt in SQL:2008 als Standard vor.
Trotz aller Standardisierung verwenden fast alle kommerziellen Datenbankprodukte ihren
eigenen „SQL-Dialekt“ und bieten herstellerspezifische Erweiterungen, die unterschiedliche
Sprachelemente für die gleichen Funktion zur Folge haben. Außerdem werden nicht alle SQL
Standards in kommerziellen Systemen in vollem Umfang umgesetzt.
Grundlage relationaler Datenbanken ist die „relationale Algebra“. Alle Anfragen, die mittels
SQL gestellt werden, werden vom DBMS auf relationale algebraische Operationen übersetzt.
Die wesentlichen Operationen sind die folgenden:
•
•
•
•
•
•
Projektion (blendet bestimmte Spalten aus)
Selektion (blendet bestimmte Zeilen aus)
Kreuzprodukt
Umbenennung
Vereinigung
Differenz
10
2. Grundlage
Alle weiteren Operationen können aus den oben genannten Operationen abgeleitet werden. Zum
Beispiel lässt sich die häufig vorkommende Operation „Join“ durch eine Kombination von
Kreuzprodukt, Selektion und Projektion darstellen.
Die relationale Algebra bietet jedoch keine Möglichkeit, rekursive Anfragen (Transitive Hülle)
zu berechnen. Die bei der Berechnung von technischen Indikatoren vorkommende Rekursion ist
beispielsweise notwendig für die Berechnung vom gleitenden Durchschnitt des Schlusskurses,
welcher wiederum vom gleitenden Durchschnitt des vorigen Handelstages abhängt. Da das
dieser Arbeit zugrunde liegende DBMS Microsoft Access 2003 mit SQL-92 keine
Unterstützung für die Berechnung von Rekursionen bietet, musste die Berechnung der
Rekursion umständlich indirekt realisiert werden. Aber es ist festgestellt worden, dass die
verwendete Methode für die rekursive Berechnung nicht stabil laufen könnte. Weitere Details
hierzu werden in Kapital 8 dargestellt.
Mit dem SQL-99 Standard wurde eine erweiterte relationale Algebra eingefügt, welche erstmals
eine rekursive Berechnung, aber noch mit starken Einschränkungen, erlaubt.
SQL-Befehle lassen sich in verschiedene Sprachbereichen unterteilen.
• DML - Data Manupulation Language
Die DML enthält Befehle, die zum Abfragen, Ändern, Einfügen und Löschen von Daten
zuständig sind. Befehle sind z.B. SELECT, INSERT, UPDATE und DELETE.
• DDL – Data Definiton Language
Die DDL dient dazu, Datenbankschemata zu definieren und manipulieren. Die reservierten
Wörter dafür sind z.B. CREATE, ALTER und DROP.
• DCL – Data Control Language
Das DCL verwaltet die Zugriffsrechte auf Datenobjekte. Befehle sind z.B. GRANT und
REVOKE.
In den nächsten Abschnitten werden jene Befehle der DDL und DML vorgestellt, welche in
dieser Arbeit zur Implementierung und Bewertung von Handelsstrategien verwendet worden
sind.
2.2.2 DML - Data Manipulation Language
Die DML ändert Datenbankzustand durch den Befehl zum Ändern, Einfügen und Löschen.
Weiterhin bietet Befehle, Anfragen zu formulieren.
Eine grundlegende Struktur aller SQL-Anfragen ist der SELECT-FROM-WHERE-Block (SFW
Block):
• SELECT-Anweisung bestimmt, welche Spalte in der Antworttabelle geliefert werden soll.
• FROM-Anweisung bestimmt die zugrundeliegenden Basistabellen.
• WHERE-Anweisung formuliert die Bedingungen, welche die Ergebnismenge erfüllen muss.
Die folgende Abfrage liefert beispielsweise alle Öffnungs- und Schlusskurse sowie das
jeweilige Datum, in welchen das Verkaufshandelssignal mit dem Schlusskurs über 50
vorkommt.
11
2. Grundlage
SELECT K.Date, K.Open, K.Close
FROM Kurs AS K, Signal AS S
WHERE K.Date=S.Date AND K.Close>50 AND S.Signal=”Sell”;
Solche SFW Blöcke werden ausgewertet, indem Kreuzprodukte aller gegebenen Tabellen in
FROM-Teil gebildet werden. Anschließend werden die relevanten Zeilen selektiert, welche die
im WHERE-Teil angegebenen Kriterien erfüllen. Schließlich werden nur die Spalten als
Ergebnis geliefert, die im SELECT-Teil angegeben wurden.
• SELECT-Teil
Im SELECT-Teil sind die auszulieferenden Spaltennamen aufgeführt oder wie im obigen
Beispiel die Spaltennamen mit Tabellennamen in der syntaktischen Form
TABELLENNAME.SPALTENNAME, wenn die Zugehörigkeit unklar ist. Das Schlüsselwort
DISTINCT wird zur Duplikateliminierung benutzt. Weiterhin dürfen Attribute mit
arithmetischen Operationen weiter bearbeitet sowie vordefinierte Funktionen wie z.B. Year(),
UPPER(), ABS() benutzt werden. Das Sonderzeichen Stern ( * ) gibt alle Spalten zurück.
• FROM-Teil
Im FROM-Teil können eine oder mehrere Tabellen als Input angegeben werden und es dürfen
Tabellen wie im Beispiel mit AS-Klausel umbenannt werden. Hier können besonders
Kreuzprodukte durch JOIN-Operatoren mit Bedingungsklausel ON gebildet werden. Das obige
Beispiel kann man auch mit JOIN Operatoren wie folgt umschreiben. Welche Variante von
Beiden bevorzugt wird, ist je nach DBMS unterschiedlich. Gemäß ANSI SQL Standards ist die
unten gezeigte Variante unter Verwendung von JOIN empfohlen.
SELECT K.Date, K.Open, K.Close
FROM Kurs AS K INNER JOIN Signal AS S ON K.Date=S.Date
WHERE K.Close>50 AND S.Signal=”Sell”;
Durch die Verwendung von INNER JOIN im FROM-Teil wie im Beispiel werden nur die Zeilen
von Kreuzprodukt ausgewählt, die die Bedingung nach ON erfüllen. Dabei lässt man die
doppelt entstehenden gemeinsamen Werten durch SELECT-Teil nur noch einmal als Ergebnis
auftreten. Im obigen Beispiel werden alle Zeilen aus dem Kreuzprodukt von der Tabelle „Kurs“
und Tabelle „Signal“ im FROM-Teil selektiert, wo die Werte in der Spalte „Date“ gleich sind.
Als Ergebnis werden die gemeinsamen Werte „Date“ nur einmal projiziert.
LEFT OUTER JOIN arbeitet wie INNER JOIN aber zusätzlich werden alle Zeilen aus der
ersten (also linken) Tabelle in FROM-Teil als Ergebnis verwendet und dabei werden fehlende
„Join“-Partner mit Nullwerten gefüllt. Im weiteren Beispiel unten werden die Zeilen mit
derselben Wertpapier ID aus der Produktbildung der beiden Tabellen „Wertpapier“ und
„Bestellung“ selektiert. Allerdings wird durch die Verwendung von LEFT OUTER JOIN auch
ein Wertpapier mit der ID 45, welche keine Join Bedingung erüllt, in der Ergebnistabelle
ausgewiesen. Die Anzahl von noch nicht bestellten Wertpapieren ist somit mit dem Nullwert
gefüllt.
SELECT W.WP_ID, B.Anzahl
FROM Wertpapier AS W LEFT OUTER JOIN Bestellung AS B
ON S.WP_ID=B.WP_ID;
12
2. Grundlage
W.WP_ID
B.Anzahl
2
100
23
40
28
10
45
NULL
Tabelle 2.6 Left Outer Join Ergebnis
Analog zu LEFT OUTER JOIN übernimmt RIGHT OUTER JOIN die Zeile von der rechten
(also zweiten) Tabelle im FROM-Teil, welcher keinen Join-Partner besitzt. FULL OUTER JOIN
übernimmt die Zeilen von beiden Tabellen, welche keinen Join-Parter besitzen.
• WHERE-Teil
Im WHERE-Teil kommen folgende Operatoren zum Einsatz, um relevante Zeilen als Ergebnis
auszuwählen.
•
•
•
•
•
= , <>, <, >, =<, >= : Vergleichsoperatoren
AND, OR, NOT : Boolesche Operatoren
EXISTS : Existenzoperator testet, ob die Antworttabelle einer Unteranfragen leer ist.
LIKE : „pattern matching“-Operator
IN : Inklusionsoperator testet, ob die Spalte in der Kriterium in der Antworttabelle
einer Unteranfragen vorkommt.
Folgende beiden Beispiele liefern dasselbe Ergebnis, die nicht als top performiernde
Wertpapiere gewählten Wertpapiere. Im Beispiel kann hier der Boolesche Operator „NOT“ mit
dem Existenzoperator oder Inklusionsoperation kombiniert werden. Wie unten aufgezeigten
Beispielen dargestellt, können viele SQL Konstrukte durch anderen SQL Konstrukte ersetzt
werden. Nur wenige SQL Konstrukte sind einmalig und lassen sich nicht alternativ abbilden.
SELECT *
FROM Wertpapier
WHERE WP_ID NOT IN ( SELECT WP_ID
FROM TopWertpapier );
SELECT *
FROM Wertpapier AS W
WHERE NOT EXISTS ( SELECT *
FROM TopWertpapier AS T
WHERE W.WP_ID=T.WP_ID );
Bei einfachen Selektionsabfragen wird jede Zeile separat betrachtet, jedoch bei
Aggregationsabfragen werden mehrere Zeile zusammengefasst und gemeinsam betrachtet. Im
Ergebnis werden mehrere Zeilen der Tabelle zusammengefasst und die Aggregatfunktion
berechnet einen Ergebniswert aus den Spaltenwerten der zusammengesetzten Zeilen.
Aggregatfunktionen sind z.B. SUM (Summenbildung), AVG (Arithmetischer Mittelwert),
COUNT(Anzahl), MIN (Minimum), MAX (Maximum), ABS (Absolutbetrag), RANGE
(Spannweite zwischen niedrigstem und höchstem Wert), STDDEV (Standardabweichung),
VARIANCE (Varianz).
13
2. Grundlage
Als Beispiel kann man das Durchschnittshandelsvolumen von „Wertpapier“ mit ID 2 wie folgt
mit der Aggregatfunktion AVG berechnen:
SELECT AVG(Vol)
FROM Kurs
WHERE WP_ID=2;
Es gibt noch die Möglichkeit, die Zeilen zu gruppieren und alle Ergebnisse aus den jeweiligen
Gruppen als Antwort zu liefern. Hier werden die Zeilen mit demselben Wert, der im „GROUP
BY“ Teil angegeben wird, zu einer Gruppe zusammengefasst. Der HAVING-Teil enthält
Bedingungen, welche alle Zeilen in den jeweiligen Gruppen erfüllen müssen. Folgende Abfrage
liefert alle Wertpapiere, für welche die Schlusskurse mehr als zehn mal über 50 gestiegen sind.
SELECT WP_ID
FROM
Kurs
WHERE Close>50
GROUP BY
WP_ID
HAVING COUNT(*)>10;
In obigem Beispiel werden zuerst alle Zeilen der Tabelle Kurs, in welchen die Schlusskurse über
50 liegen gefiltert, dann werden die Daten durch verschiedene Wertpapiere gruppiert und es
wird getestet, ob die Anzahl der Zeilen in der Wertpapiergruppe über 10 liegt. Wenn ein
GROUP BY-Teil nicht angegeben ist, wie im Beispiel oben, dann wird die gesamte Tabelle als
eine Gruppe betrachtet. Im Beispiel dienen beide, WHERE-Teil und HAVING-Teil als
Bedingungskriterium allerdings liegt der Unterschied in der Reihenfolge der Operationen. Die
Bedingungen des WHERE-Teils werden vor der Gruppierung geprüft, während aber die
Bedingungen des HAVING-Teils nach der Gruppierung getestet werden.
Zum Ändern, Einfügen und Löschen von Daten können die Anweisungen wie UPDATE,
INSERT INTO, UPDATE verwendet werden. Zum Aktualisieren aller oder bestimmter
Zeilenwerten einer Tabelle wird die UPDATE-Anweisung verwendet. Der UPDATE-Teil enthält
die Tabellen, in welchen die Daten geändert werden sollen. Der SET-Teil enhält die eigentlichen
Änderungsoperationen. Letztlich filtert der WHERE-Teil die relevanten Daten, welche
Änderung annehmen müssen. Für unten gezeigtes Beispiel gilt, dass, wenn der
Ausgabeaufschlag des Wertpapiers mit ID 2 20% Rabatt geben soll, man die folgende
Aktionsabfrage verwenden kann:
UPDATE Wertpapier
SET
Ausgabeaufschlag = Ausgabeaufschlag*80/100
WHERE WP_ID=2;
Mit der INSERT INTO-Anweisung können explizit angegebene Werte oder eine Ergebnistabelle
durch einer Unteranfrage hinzugefügt werden. Das erstes Beispiel setzt ein Verkaufssignal für
heute und im zweiten Beispiel werden alle Wertpapiere ohne Ausgabeaufschlag in die Tabelle
„OhneAgasWertpapier“ hinzugefügt:
INSERT INTO Handelssignal(Datum, Signal)
VALUES( Date(), ‘ Sell ’ );
14
2. Grundlage
INSERT INTO OhneAgasWertpapier
SELECT *
FROM Wertpapier
WHERE Ausgabeaufschlag=0;
Die DELETE-Anweisung wird zum Löschen der Zeilen verwendet, welche die Bedingung im
WEHRE-Teil erfüllen. Das Beispiel dient zum Löschen des Wertpapiers mit der ID 28:
DELETE *
FROM Wertpapier
WHERE WP_ID=28;
2.2.3 DDL - Data Definition Language
Die DDL bieten Befehle an, um Datenbankschemata zu definieren und zu modifizieren.
Tabellenstrukturen können durch CREATE-, ALTER-, DROP-Anweisung erzeugt, modifiziert
oder gelöscht werden.
Mit Hilfe von CREATE TABLE-Anweisung erzeugt das folgende Beispiel die Tabelle „Kurs“:
CREATE TABLE Kurs (
N
INTEGER PRIMARY KEY,
KWP_ID INTEGER NOT NULL,
Datum
DATE NOT NULL,
Open
DOUBLE,
High
DOUBLE,
Low
DOUBLE,
Close DOUBLE
);
Solche CREATE TABLE-Anwesungen enthalten vor allem die zu erzeugenden Spaltennamen
mit Datentypen. Gegebenenfalls können auch Datengrößen und verschiedene
Spaltenbeschränkungen dazu definiert werden, wie z.B. PRIMARY KEY (Primärschlüssel),
NOT NULL (Verbot von Nullwerten), UNIQUE (Eindeutigkeitsbedingung), FOREIGN KEY
(Fremdschlüssel).
Wenn sich solche Beschränkungen auf mehrere Spalten beziehen sollen, kann man
CONSTRAINT-Anweisungen verwenden. Darüber hinaus kann man mit Hilfe von ON
UPDATE CASCADE/ON DELETE CASCADE-Anweisungen Änderungsweitergabe
verlangen, wenn eine Beziehung mit anderen Tabelle durch FOREIGN KEY-Anweisung
definiert ist. Alternativ lassen sich Nullwerte durch SET NULL anstatt CASCADE einsetzen.
CONSTRAINT KWP_ID FOREIGNKEY (WP_ID) REFERENCES Wertpapier
ON UPDATE CASCADE
Das obiges Beispiel in der CREATE TABLE-Anweisung bedeutet, dass wenn WP_ID in der
Wertpapier Tabelle geändert worden ist, diese Änderung automatisch in KWP_ID der Tabelle
„Kurs“ übernommen wird.
Die Struktur einer schon vorhandene Tabelle kann mittels der ALTER TABLE-Anweisung
modifiziert werden. Die folgende Bespielanweisung fügt weitere Spalten „Par4“ und „Par5“ in
die Tabelle „StrategyBuilder“ hinzu.
15
2. Grundlage
ALTER TABLE StrategyBuilder
ADD COLUMN (Par4 INTEGER, Par5 INTEGER);
Schließlich kann eine Tabelle auch entfernt werden:
DROP TABLE TopWertpapier;
2.2.4 Sichten
Eine Sicht (engl. View) kann als eine virtuelle Tabelle angesehen werden. Im Falle von Sichten
werden Tabelleninhalte nicht gespeichert, sondern existieren nur virtuell und nur die Definition
der Sicht, nicht aber die Ergebnistabelle, wird gespeichert. Sichten erlauben uns, benötigte
Informationen aus einer oder mehreren verknüpften Tabellen zu extrahieren und die
resultierende Datenmenge als eine Tabelle zu behandeln. Daher kann eine Sicht wie eine echte
Tabelle abgefragt und referenziert werden mit dem Vorteil eines geringeren
Speicherplatzbedarfes. Die Ergebnismenge wird bei jeder Abfrage neu berechnet und nicht als
eine Tabelle gespeichert.
Sichten bieten eine exzellente Möglichkeit zum Zugriff auf komplex ausgewählte Teile von
Daten und zu deren Bearbeitung, welche eine einzelne Abfrage nicht liefern kann und welche
daher durch Schachtelung von Sichtdefinitionen implementiert werden müssen. Mehrstufige
Schachtelungen von mehreren Abfragen, d.h. in einer Sichtdefinition werden als Inputdaten
wiederum Sichtdefinitionen verwendet, spielen eine enorm wichtige Rolle bei der
Implementierung der technischen Indikatoren sowie bei der Signalberechnung. Weitere Details
hierzu werden in den kommenden Kapiteln näher ausgeführt.
Nach den Normalisierungsschritten von Datenbankschemata entstehen zahlreiche Tabellen mit
komplexen Abhängigkeiten. Das kann zu aufwändigen Sichtdefinitionen führen. Die
Schachtelung von solchen Sichtabfragen ermöglicht einerseits, die gewünschten Daten präzise
zu filtern. Andererseits wird die gesamte Struktur der Schachtelungen sehr unübersichtlich und
die Komplexität der dahinterliegende Abfragen wird oft unterschätzt und verursacht unerwartete
z.T. erhebliche Performanzprobleme. Um solche Performanzprobleme bei der
Sichtexpandierung in der Signalberechnung in TInTo zu beseitigen, mussten mehrere
Optimierungsversuche unternommen werden (siehe Kap. 6.2).
Hersteller von Datenbanksoftware, z.B. Oracle, IBM und Microsoft haben in jüngster Zeit
Konzepte der materialisierten Sichten in ihren Produkt umgesetzt, um genannte
Performanzprobleme zu beseitigen. Materialisierte Sichten sind Sichten, die physikalisch
gespeichert werden.
Mittels Sichtanweisungen entsteht eine abgeleitete Tabelle und es kann sein, dass diese
abgeleiteten Daten weiter geändert werden müssen. Aber Updates auf Sichten lösen weitere
Änderungen auf Inputtabellen aus. Änderungen sind möglich, wenn eine Zuordnung zwischen
den zu ändernden Daten in der abgeleiteten Tabelle und den Inputdaten aus den physikalischen
Tabelle, welche der Sichtdefinition zugrunde liegt, eindeutig ist. Aber oft können Änderungen in
einer abgeleitete Tabelle zu Anomalien führen, wenn eine eindeutige Zuordnung nicht möglich
ist.
Änderungen auf der zugrunde liegenden Basistabelle erfordern indirekt Änderungen auf davon
abhängigen abgeleiteten Tabellen. Naiv kann dann die Sicht noch mal wieder hergeleitet
werden. Bei großen Datenmengen allerdings kann das ineffizient und sehr teuer sein. Innerhalb
des TInTo-Projektes wurde eine intelligente Methode, die sogenannte „Inkrementielle
Änderungspropagierung“ in der Diplomarbeit von Gereon Schüller eingesetzt [Sch07]. Seine
16
2. Grundlage
Arbeit zeigt, dass durch inkrementielle Anpassung der induzierten Änderung der abgeleiteten
Tabellen statt Neuherleitung der Sicht große Effizienz gewonnen werden kann.
2.3 Microsoft Access
Das TInTo-Projekt verwendet bis jetzt das relationale Datenbankmanagementsystem (DBMS)
Microsoft Access 2003, das in dieser Version den SQL-92 Standard unterstützt. Als wesentliche
Aufgaben
des
DBMS
sind
Datenbankschemaverwaltung,
Abfrageverwaltung,
Transaktionsverwaltung und Speicherverwaltung zu nennen. MS Access wurde unter dem
Projektnamen „Omnibase“ durch Microsoft entwickelt und in den 1990er Jahren in der ersten
Version auf dem Markt gebracht. Aktuell wird die Version Microsoft Access 2007 angeboten
und als ein Teil des MS Office-Paktetes (Word, Excel, PowerPoint, Outlook,...) vertrieben.
MS Access stellt visuelle Programmierobjekte bereit und ermöglicht dadurch innerhalb von
kurzer Zeit, datenbankbasierte Anwendungen zu erstellen, ohne umfangreiche
Programmierarbeiten durchführen zu müssen. Bei der Erstellung oder Änderung der Tabellen
sowie bei der Gestaltung der Abfragen kann man sogenannte „Entwurfssicht“ verwenden.
Dadurch lässt es sich ohne SQL-Programmierung graphisch arbeiten. Bei der Erstellung
aufwendiger Abfragen jedoch ist die „Entwurfssicht“ schnell umständlich zu bedienen und zu
unübersichtlich. MS Access bietet dafür die Möglichkeit, von der Entwurfssicht in die SQLSicht umschalten und zurück. Beispielsweise folgt „Entwurfssicht“ unten:
Abbildung 2.3 „Entwurfssicht“ von Tabelle und Anfrage
Weitere angebotene Anwendungsobjekte sind Formulare, Berichte, Makros und Module.
Mit Formularen kann man Anwendungsoberfläche graphisch erstellen, in welchen der Nutzer
Daten lesen, einfügen, ändern oder löschen kann. Dazu ist ein Palette von Steuerelementen wie
z.B. Textbox, Listbox, Command Button, Option Group, die durch Drag und Drop in
Formularen übernommen werden kann. Weiterhin lassen sich Ereignisse (eng. Events) in
Steuerelemente einbetten, mit welchen der Benutzer bei deren Eintritt interaktiv agieren kann.
In dem Falle des Ereigniseintritts werden automatisch Unterprogramme aufgerufen. Zum
Ausdruck von Daten auf Papier lassen sich Berichte verwenden. Daten können durch
Gruppierung oder Sortierung durch den Elementen von Berichten übersichtlich dargestellt
werden. Technisch gesehen ähneln Berichte den Formularen, allerdings dienen Steuerelemente
bei Berichten nicht der Datenpflege, sondern deren Anzeige. Darüber hnaus lassen sich mittels
17
2. Grundlage
Makros rudimentär Ereignisse behandeln, ohne dafür Programmcode in VBA schreiben zu
müssen. Dafür kann man in tabellarischer Form spezifizieren, wie die Elemente in Formularen
auf ein Ereignis reagieren sollen.
Die in Access integrierte Programmsprache VBA (Visual Basic for Applications) ermöglicht
dem Nutzer, Funktionalitäten hinzuzufugen, welche über das eigentliche Access-System
hinausgehen. VBA erlaubt den Zugriff auf sowohl alle Anwendungsobjekte, wie Formulare,
Tabellen und Berichte, als auch die Anwendung von SQL-Code. Mit dieser Funktionalität lassen
sich in VBA-Programmen beispielsweise Formulare eröffnen, Ereignisse behandeln, Datensätze
in Tabellen aufrufen und SQL-Anweisungen ausführen. Eine wichtige Komponente ist DAO
(Data Access Objekt), welche dazu dient, Datensätze in Tabellen einzulesen und in Tabellen zu
schreiben. Außerdem erlaubt DAO den Zugriff auf Windows-APIs, womit z.B. auch auf Daten
aus dem Internet zugegriffen werden kann. Diese Funktion wurde im Beispiel von TInTo für
den Zugriff auf Kursdaten auf der Yahoo Finanz Webseite eingesetzt.
Die in VBA-Code benutzerdefinierten Funktionen lassen sich auch in SQL-Anweisungen weiter
verwenden. Funktionseinschränkungen von SQL-Code lassen sich damit durch in VBA
geschriebene Funktionen umgehen und in SQL-Code anwenden. Als Beispiele hierfür können
mathematische Funktionen genannt werden, welche nicht von Access-SQL angeboten werden,
aber mit VBA implementiert und in SQL-Code eingesetzt werden können.
Access verwaltet eine komplette Datenbank in einer einzigen Datei im Access-eigenen mdbFormat. Diese Datei schließt sowohl Datenbankschema und Datenbankzustand als auch die
gesamten Anwendungselementen für die Benutzeroberfläche ein. ADO (ActiveX Data Objects)
kann eingesetzt werden, wenn weitere Funktionalitäten mittels anderer Programmiersprachen
wie z.B. Delphi oder Visual Basic implementiert werden sollen.
Aufgrund der einfach zu bedienenden graphischen Benutzerschnittstelle ist Access bei Nutzern
kleinerer und einfacher Datenbanklösungen beliebt. Für Anwender, welche mit MS Excel
vertraut sind, bietet Access, welches ebenfalls in die MS Office Familie gehört, einen einfachen
Einstieg in die Welt der Datenbanksysteme. Bestehende Daten aus Excel-Dateien können fast
nahtlos in Access weiter verwendet und verwaltet werden.
Microsoft positioniert Access im Markt für kleinere Datenbanksysteme und ist besonders gut
geeignet für Datenbestände, welche an einem festen Ort von einem kleinen Benutzerkreis
benötigt werden.
Für größere Datenbanksysteme mit besonderen Anforderungen an Webintegration,
Netzwerkfähigkeiten und Mehrbenutzerbetrieb bietet Microsoft das Produkt SQL Server an.
Als weltweite Marktführer für DBMS für größere Datenbanksysteme sind die Firma Oracle mit
dem Produkt Oracle, die Firma IBM mit dem Produkt DB2 und die Firma Microsoft mit dem
Produkt SQL Server zu nennen. Diese Produkte erfüllen alle die gängigen Standards an Webund Netzfähigkeit sowie Mehrbenutzerbetrieb und erlauben die Verwaltung von Datenbeständen
in der Größenordnung mehrerer Terabytes. Im Vergleich dazu ist MS Access auf eine relativ
bescheidene Datenbankgröße von maximal 2 Gigabyte und auf 255 Benutzer beschränkt.
Außerdem erlauben diese „großen“ DBMS sowohl relationale als auch multidimensionale und
objektrelationale Datenbank zu verwalten. Das Konzept der materialisierten Sichten, welches in
dieser Arbeit zu TInTo sehr gut eingesetzt werden könnten, wird ebenfalls von diesen DBMS
unterstützt. Im OpenSource Bereich populär ist besonders MySQL zu nennen, welches mehr als
6 Millionen Installationen und über 35.000 Downloads pro Tag erreicht [Wik08]. Ein
18
2. Grundlage
bevorzugte Einsatzgebiet von MySQL ist die Verwaltung von Daten in dynamischen Webseiten,
häufig in Verbindung mit dem Webserver Apache und PHP1.
Als einen kleinen Ausflug und als Übergang zum nächsten Kapitel mit dem Titel
„Wertpapieranalyse“ möchte ich hier kurz auf die Wertpapierkurse der marktführenden
Datenbankanbietern eingehen.
Marktanteil von Datenabnkanbietern
Oracle
IBM
Microsoft
Teradata
Sybase
Software AG
Progress Software
Sonstige
32,2%
21,4%
31,7%
Abbildung 2.4 Marktanteil von Datenbankanbietern in Deutschland nach Umsatz
(Stand 2006, Quelle Gartner, [CW08] )
Abbildung 2.5 Aktienkurs von Oracle Corp. (blau), IBM Corp. (rot)
und Microsoft Corp. (grün), [YH08f]
Die größten kommerziellen Datenbankanbieter in Deutschland im Jahr 2006 gemessen nach
Umsatz sind Oracle, IBM und Microsoft, siehe Abbildung 2.4. Es ist gut erkennbar, dass, Stand
2006, der Unterschied zwischen Oracle auf Platz 1 und IBM auf Platz 2 gering ausfällt.
1 PHP(Hypertext Preprocessor) ist eine Skriptsprache mit einer an C angelehnten Syntax, die hauptsächlich zur
Erstellung von dynamischen Webseiten oder Webanwendungen verwendet werden [Wik08].
19
2. Grundlage
In Relation dazu entwickeln sich die Aktienkursen beider Unternehmen bis Anfang 2006 sehr
ähnlich. Ab 2006 aber entwickelt sich der Kurs von Oracle sehr dynamisch positiv und kann
sich deutlich vom Aktienkurs von IBM absetzen. Microsoft im Vergleich, sicher auch auf Grund
des unterschiedlichen Produktportfolios, entwickelt sich besonders im Jahr 2008 negativ.
Es ist hernach zu vermuten, dass der Markt spezielle und positive Erwartungen an Oracle zu
haben scheint. Werden zukünftige Oracle-DBMSs der Kursentwicklung und damit der
Investorenerwartung entsprechend tendenziell deutlich bessere Funktionalitäten und eventuell
Bedienkomfort in ihr Produkt bringen?
20
3
Wertpapieranalyse
In diesem Kapitel werden die Grundlage zum Wertpapierhandel sowie unterschiedliche
Analysemethoden für Wertpapiere erläutert. Im Detail wird die Analyse technischer Indikatoren
als ein Teilgebiet der breiter gefassten Technischen Analyse ausführlich besprochen. Dabei ist
hervorzuheben, dass die Analyse technischer Indikatoren die Grundlage der in dieser Arbeit
entworfenen Handelsstrategien bildet. Hierzu wird auf wesentliche Grundannahmen sowie die
wirtschaftlichen Zusammenhänge im Detail eingegangen. Die präsentierten Informationen
beruhen im Wesentlichen auf [CT06], [SCharts08], [TSO08], [Wik08] sowie [Mur99].
3.1 Wertpapierhandel
Wertpapiere, welche das Recht an Kapitalanlagen verbriefen, werden an einem organisierten
Markt, der so genannten Börse, gehandelt. Beispielsweise werden Wertpapiere wie Aktien,
Anleihe, Fonds, Derivate, Zertifikate an der Börse gekauft und verkauft. Die oben genannte
Wertpapiere unterteilen sich wiederum in viele weitere Varianten mit unterschiedlichen
Konditionen.
Die Börse als Marktplatz gleicht Angebot und Nachfrage an Wertpapieren aus, ermöglicht die
Preisbildung, genannt Kurs, und bringt eventuell den Handel zwischen Anbieter und Nachfrager
zustande. Für die später folgende technische Wertpapieranalyse dienen die hier an der Börse
gebildeten Kursinformationen als Basisdaten. Ziele der Börse sind im Wesentlichen eine
gesteigerte Markttransparenz und verminderte Marktmanipulation sowie als ökonomisches Ziel
eine höhere Effektivität im Wertpapierhandel. Transaktionen über die Börse sollen mit
geringerem Aufwand, im Wesentlichen mit geringeren Transaktionskosten und möglichst
schnell, mit dem Ziel einer gesteigerten Marktliquidität, durchgeführt werden.
Die in den 1980er und 1990er Jahre weltweit eingeführten Computerbörsen (engl. Electronic
Trading) erlaubten erst die geforderten Steigerungen der Effektivität im Wertpapierhandel und
machten darüber hinaus weltweit ortsunabhängige Handelsabwicklungen. Im Ergebnis dieser
Entwicklung hat der Börsenhandel enorm an Umfang und Geschwindigkeit zugenommen. Das
jährliche Handelsvolumen an der New Yorker Börse (NYSE) stieg von 11.400 Millionen im
21
3. Wertpapieranalyse
Jahr 1980 auf 169.745 Millionen in 1998. In den folgenden 10 Jahren kam es zu einem weiteren
erheblichen Anstieg auf 698.658 Millionen im Jahr 2007 [NYSE08]. Als Ursachen für diese
rasanten Steigerungen kann sicher der allgemeine Trend hin zu Wertpapieren sowie
unterstützend auch die Verbreitung des Computerhandels und der freie Zugang zu
Personalcomputern gelten. Die Abbildung 3.1 zeigt die jährlichen Handelsvolumen und
verdeutlicht die enormen Steigerungsraten der letzten Jahre.
Die im folgenden Abschnitt dargestellte technische Wertpapieranalyse hat, begünstigt durch die
Verbreitung neuer Technologien wie Internet und Personalcomputer, enorm an Popularität
gewonnen. Mit ihrer Hilfe lassen sich Wertpapierkurse in Echtzeit darstellen und visuell auf
Transaktionssignale hin analysieren. Insbesondere so genannte Daytrader, welche aus selbst
geringen Kursänderungen im Tagesverlauf Gewinne zu erzielen versuchen, profitieren von der
sekundengenauen Verfügbarkeit der Kursinformationen. Weiterhin sind spekulative
Aktionärsherden, die extrem volatile Kursänderung treiben, zunehmend zu sehen.
Handelsvolumen (Mill.)
700.000
525.000
350.000
175.000
0
1957
1962
1967
1972
1977
1982
1987
1992
1997
2002
2007
Abbildung 3.1 Jährliche Handelsvolumen an New York Stock Exchange [NYSE08]
An der Börse agieren sehr verschiedene Beteiligte mit zum Teil jeweils ganz unterschiedlichen
Motiven. Anleger in Aktien beispielsweise zielen darauf ab, Anteile an eventuellen
Kursgewinnen zu erzielen, eine Beteiligung am Gewinn des Unternehmens (in der Regel über
die so genannte Dividende) zu erhalten, sowie gegebenenfalls über das Stimmrecht als Aktionär
auch Einfluss auf das Unternehmen auszuüben. Dagegen können Unternehmen durch
Aktienemissionen unter anderem benötigte größere Kapitalmengen, zum Beispiel zur
Finanzierung der Expansion, beschaffen. Allerdings wird das Unternehmen durch eine
Aktienemission eine Aktiengesellschaft, deren Grundkapital in Aktien aufgeteilt ist und deren
Aktionäre Miteigentümer am Unternehmen sind. Diese Miteigentümerschaft gibt Aktionären
ein Stimmrecht bei grundsätzlichen Entscheidungen, wie zum Beispiel der Wahl des Vorstands
oder bei Firmenübernahmen oder Fusionen. Im Kapitalmarkt stehen Unternehmen mit ihren
Aktien im Wettbewerb mit anderen Anlageformen, zum Beispiel Schuldverschreibungen (engl.
Bonds). Auf Grund dieser vorhandenen Wahlmöglichkeiten für die Anleger kommt der
Aktienpflege und der Kommunikation zwischen Anlegern und Unternehmen eine besondere
Bedeutung zu.
Besonders attraktiv als Anlage sind Aktien in Zeiten niedriger Zinsen durch alternative
Anlageformen. Im globalen Kapitalmarkt bieten Aktien die Möglichkeit, am
Wirtschaftswachstum in anderen Regionen, zum Beispiel den so genanten Emerging Markets,
teilzuhaben. Anders als alternative Anlagen in zum Beispiel Immobilien, bieten Aktien unter
anderem die Möglichkeit, im Allgemeinen bei Bedarf schnell liquidiert werden zu können. Die
22
3. Wertpapieranalyse
folgende Abbildung 3.2 illustriert Gewinnmöglichkeit aus höheren Wachstumsraten in Indien
und China im Vergleich zum Dow Jones Index und zum DAX.
Abbildung 3.2 Dow (blau), Dax (rot), Indien Fonds(INF, gelb)
und Chinesische Aktien Index(SSE, grün) [YH08f]
3.2 Analyseansätze
Wird der Kurs steigen oder wird der Kurs doch fallen? Wie lange soll ich warten? Wann kaufe
ich oder verkaufe ich?
Jeder Anleger stellt sich diese Fragen und versucht, darauf die für seine Situation jeweils
richtige Antwort zu finden. Und um diese Fragen zu beantworten, bemühen sich viele Anleger
seit Jahrzehnten, eine verlässliche Methode zu finden, welche zukünftige Preisentwicklungen
erkennt und sicher vorhersagt. Wie lange schon Menschen sich mit Preisvorhersagen
beschäftigen, zeigt das Beispiel des legendären Händlers Homma Munehisa, welcher schon im
17. Jahrhundert Kerzencharts für den Reishandel aufzeichnete.
Im Laufe der Zeit haben Investoren im Wesentlichen folgende zwei unterschiedliche Methoden
der Wertpapieranalyse entwickelt :
• Fundamentale Analyse
Diese Methode befasst sich neben den Kursdaten mit fundamentalen Informationen über
das jeweilige Handelsobjekt sowie mit Informationen über dessen relevantes
wirtschaftliches Umfeld und versucht daraus den „inneren Wert“ oder „fairen Wert“ des
Handelsobjektes zu bestimmen und prognostizieren. Durch den Vergleich dieses inneren
Wertes mit dem tatsächlichen Kurs wird eine Handelsentscheidung getroffen.
• Technische Analyse
Die technische Analyse dagegen befasst sich nur mit den Kursdaten sowie dem
Handelsumsatz und versucht, den Kurstrend aufgrund von grafisch dargestellten
bekannten Kursmustern oder von vergangenen Kurs- und Umsatzbewegungen zu
erkennen. Eventuelle Handelssignale werden dann aus den gegebenenfalls erkannten
Trends abgeleitet.
23
3. Wertpapieranalyse
Bei der fundamentalen Analyse von Aktien strebt man an, den „inneren Wert“ des jeweiligen
Unternehmens und somit den „inneren Wert“ der Aktien aufgrund von wirtschaftlichen
Analysen zu ermitteln. Dabei beachtet werden insbesondere die betriebswirtschaftlichen
Bilanzkennzahlen des Unternehmens. Aber auch qualitative Faktoren wie zum Beispiel die
Wettbewerbssituation, entsprechende Branchendaten, die Zukunftschancen der Produkte sowie
die Qualität des Managements werden betrachtet. Zugrunde liegende Annahme ist hier, dass
sich der Aktienkurs aufgrund der Markteffizienz früher oder später diesem inneren Wert des
Unternehmens annähert. Da dieser Prozess der Wertangleichung sowie auch die Veränderung
der zugrunde liegenden Faktoren in der Regel über längere Zeiträume ablaufen, ist die
Fundamentalanalyse eher für langfristiger orientierte Anleger geeignet. In Fällen kurzfristiger
starker Veränderungen von externen Faktoren, zum Beispiel des Ölpreises, kann die
Fundamentalanalyse jedoch auch Hinweise auf mögliche Wertentwicklungen über kürzere
Zeithorizonte geben.
Im Folgenden werden einige Beispiele zu wichtigen Unternehmenskennzahlen erläutert, welche
Anwendung in der fundamentalen Analyse finden:
• Eigenkapitalrendite (EKR, engl. Return on Equity bzw. ROE)
Die Eigenkapitalrendite bezeichnet die Profitabilität des Unternehmens in Bezug auf das
von den Kapitalgebern investierte Eigenkapital. Für die Eigentümer und Investoren zeigt
die EKR, ob sich der Einsatz des Eigenkapitals gelohnt hat. In der Regel geben sich die
Unternehmen selbst konkrete und mitunter recht anspruchsvolle EKR Ziele vor, je nach
Industriezweig mitunter im zweistelligen Prozentbereich. Eine langfristig konstant
positive Eigenkapitalrendite, welche die vorab durch das Management bekanntgegebenen
Ziele erfüllt, kann in der Regel als ein Indikator für eine Kaufentscheidung gesehen
werden. Vergleiche zwischen Unternehmen auf Basis der EKR sollten jedoch nur
zwischen Unternehmen desselben oder eines vergleichbaren Industriezweiges erfolgen.
Die Eigenkapitalrendite gilt als eine der wichtigsten Unternehmenskennzahlen und wird
als Prozentzahl angegeben.
• Kurs-Gewinn-Verhältnis (KGV, engl. price earnings ratio bzw. PER)
Das Kurs-Gewinn-Verhältnis ist eine der gebräuchlichsten Unternehmenskennzahlen. Das
KGV betrachtet den Aktienkurs des Unternehmens in Relation zum Gewinn und kann als
„Preis-Leistungs-Verhältnis“ angesehen werden. Bei einem relativ niedrigen KGV wird
eine Aktie als günstig bewertet angesehen, was in der Regel als Kaufsignal gewertet wird.
Weitere wichtige und für Investoren sehr informative betriebswirtschaftliche Kennzahlen sind
zum Beispiel der Gewinn pro Aktie (engl. EPS bzw. earnings per share), das Kurs-CashflowVerhältnis, das Kurs-Umsatz-Verhältnis sowie die Eigenkapitalquote des Unternehmens.
Schließlich können diese einzelnen Kennzahlen auch unterschiedlich gewichtet in eine generelle
Kennzahl für die Gesamtbewertung einer Aktie eingesetzt werden.
Im Projekt TInTo spielt momentan die fundamentale Analyse keine wesentliche Rolle, weshalb
ich auch im Weiteren nicht auf weitere Details zu dieser Methode eingehen möchte. Aber auch
wenn in TInTo gegenwärtig nur die technische Analyse im Mittelpunkt steht, ist die
fundamentale Analyse dennoch zweifellos ein wichtiges Instrument für die Bewertung von
Aktien. Sehr wünschenswert ist es, innerhalb einer Portallösung zur Wertpapieranalyse wie
TInTo, zukünftig wichtige betriebswirtschaftlichen Kennzahlen in graphischer Form mit
24
3. Wertpapieranalyse
darzustellen. In Ergänzung zu den in TInTo umgesetzten technischen Analysen können mit Hilfe
fundamentaler Unternehmensdaten robuste Handelsentscheidungen unterstützt werden.
Die Bedeutung der fundamentalen Analyse erschließt sich, wenn man historische
Marktbewegungen zurückverfolgt. Was aus volkswirtschaftlicher Sicht von Kapitalmärkten zu
erwarten ist, ist, dass sowohl die Markteffizienz als auch die Vernunft der Anleger, die
Aktienkurse und damit die Marktbewertung der Unternehmen um den inneren oder fairen Wert
der Aktien und somit auch den fairen Wert des Unternehmens schwanken lässt. Allerdings sind
in den vergangenen Jahren immer wieder dramatische und auch irrationale Kursbewegungen zu
beobachten. Mitunter scheint es, als ob viele Anleger Handelsentscheidungen auf Grundlage
der Daumenregel, nicht nur aufgrund vernünftiger Analyse treffen und das Psychologie wie Gier
und Angst die Marktteilnehmer beherrschen. Massenpsychologie, wie allgemeine Habgier oder
allgemeine Panik, kann zu weit verbreiteten Phänomenen wie Gruppenverhalten im
Aktienmarkt führen.
Die folgende Abbildung 3.3, Nasdaq Computer Technologie Index Ende 90er Jahre zeigt
beispielsweise, wie gleichartiges Handel größerer Aktionärsgruppen den Markt treiben kann.
Einige IT-Aktien erreichten ein KGV(Kurs-Gewinn-Verhältnis) von über 100 gegen Ende der
90er Jahre. Konkret bedeuten diese Aktienkurse, dass diese Unternehmen in den nächsten 10 bis
15 Jahren jedes Jahr mit einer Wachstumsrate von 30-40% wachsen müssen, um diesen
Aktienkurs zu rechtfertigen [FA06]. Diese Kurse waren einfach maßlos übertrieben, dennoch
kauften die Anleger weiter. Bis zu dem Zeitpunkt als gegen Ende dieser so genannten Blase die
Kurse wieder den fairen Wert der jeweiligen Unternehmen abbildeten, konnten Anleger dennoch
Gewinne erzielen, indem sie teuer kauften und noch teurer wieder verkauften. Vorherrschend
war die Psychologie der Massen, aber nicht die Berücksichtigung der fundamentalen Daten der
Unternehmen.
Abbildung 3.3 Gruppenverhalten in Aktienmarkt, NASDAQ Computer [YH08f]
Um solche abnormalen Kursbewegungen durch Massenpsychologie ausnutzen zu können, kann
die so genannte Sentimentanalyse, welche die „Stimmung des Marktes“ misst und interpretiert,
durchgeführt werden. Die Sentimentanalyse basiert auf der Verhaltensfinanz (engl. Behavior
Finance), welche sich mit irrationalem Verhalten auf Kapitalmärkten beschäftigt. Eine Strategie
aus der Verhaltensfinanz, die „Konträrtheorie“, besagt, dass die extreme allgemeine
Meinungsbildung über Markttendenzen falsch ist und man die entgegengesetzte Position zur
mehrheitlichen Meinung einnehmen soll, um aus einer überverkauften oder überkauften
25
3. Wertpapieranalyse
Situation zu profitieren. Eine solche Stimmungserhebung im Markt kann zum Beispiel durch
Befragungen erstellt werden und ist dazu geeignet, Handelsentscheidungen zu unterstützen.
Neben der fundamentalen Analyse ist die zweitgängigste Methode der Wertpapieranalyse die
technische Analyse. Im Gegensatz zur Fundamentalanalyse untersucht die technische Analyse
nicht unternehmensspezifische oder gesamtwirtschaftliche Daten, sondern betrachtet nur die
Kursverläufe und Änderungen in den Handelsvolumen. Charles Dow, Entwickler des bekannten
Aktienindex, Dow Jones Industrial Average, veröffentlichte seine Gedanken im Wall Street
Journal, die später als Dow-Theorie bekannt wurden und bis heute die Grundlage der technische
Analyse darstellen. Die technische Analyse basiert auf folgenden philosophischen oder
rationalen Prämissen:
• Kursbewegungen diskontieren alles.
Alle Faktoren, welche die Aktienkurse beeinflussen könnten (betriebswirtschaftliche,
volkswirtschaftliche, politische, marktpsychologische und andere Faktoren)
widerspiegeln sich in den Kursen, sind also schon in die Kurse eingepreist. Daher werden
in der technischen Analyse nur noch die eigentlichen Kurse betrachtet. Als Vorteil dieser
Methode lässt sich der Markt mit geringem Zeit- und Ressourcenaufwand analysieren.
Allerdings fließen in die Analyse direkt keinerlei reelle Wirtschaftsdaten mehr mit ein,
was als Nachteil dieser Methode gelten muss.
Verkaufssignal
Kaufsignal
Abbildung 3.4 Trendfolgende Strategie, NASDAQ Computer [YH08f]
• Kurse bewegen sich im Trend.
Der Trend, also die allgemeine Neigung eines Marktes, ist absolut essentiell in der
technischen Analyse. Das wesentliche Ziel der technischen Analyse besteht darin,
Trendverläufe von Kursen möglichst frühzeitig zu erkennen und diesem Trend zu folgen.
Sobald also ein steigender Trend erkannt wird, soll eine Kaufposition, und sobald ein
fallender Trend erkannt wird, eine Verkaufsposition eingenommen werden. In der
Abbildung 3.4, Nasdaq Computer ist bis Anfang 2000 ein starker Aufwärtstrend und
danach ein ebenfalls starker Abwärtstrend zu sehen. Die entsprechende technische
Analyse beruht auf dem technischen Indikator Gleitender Durchschnitt, welcher im
26
3. Wertpapieranalyse
nächsten Abschnitt ausführlich beschrieben wird. Der Gleitende Durchschnitt liefert
Anfang 1998 ein Kaufsignal und wiederum ein Verkaufssignal im September 2000. Als
wichtiges Prinzip bei diesem Indikator gilt, dass, wenn der Haupttrend aufwärts geht,
immer dieselbe Position einzuhalten ist, auch wenn der gestiegene Kurs schon
übertrieben scheint. Das Verkaufssignal wird erst dann ausgelöst, wenn der Trendwechsel
durch den Indikator bestätigt wird.
• Die Geschichte wiederholt sich.
Diese Prämisse besagt, dass es ähnliche, wiederkehrende Kursmuster gibt. Der
Grundgedanke dahinter besagt, dass ähnliche gesamtwirtschaftliche oder
unternehmenswirtschaftliche Umstände auch ähnlich Kursverläufe hervorrufen. Als
abgeleitete Methode lässt sich dann aus der Wiedererkennung bereits bekannter
Kursmuster der zukünftige Kursverlauf prognostizieren.
Diese drei Grundphilosophien umreißen grob die wesentlichen Annahmen der technischen
Analyse. In den nächsten Abschnitten werden die am weitesten verbreiteten technischen
Analyseverfahren „Chartanalyse“ und „Technische Indikatoren“ detailliert vorgestellt. Zum
Schluss dieses Abschnittes möchte ich noch die kritischen Punkte in der technischen Analyse
erläutern.
Die in den 1980er und 1990er Jahren eingeführten Computerbörsen und die darauf folgende
Verbreitung von PCs und Internet haben unter anderem die Geschwindigkeit des Aktienhandels
enorm beschleunigt und in der Folge auch das Handelsvolumen ansteigen lassen. Durch die
nunmehr ständige Verfügbarkeit von Kursinformationen im Internet hat die technische Analyse
schnell an Popularität gewonnen. Technische Analyseverfahren werden in letzter Zeit häufig
auch im Internet angeboten und sind auch für Laien schnell verfügbar.
Neue Investmentziele und neue Handelsstrategien haben sich im Laufe der Zeit herausgebildet.
Daytrader versuchen, auch aus sehr kurzfristigen, Intra-Day Kursschwankungen noch Gewinne
zu erzielen. Hedge Fonds, ausgestattet mit erheblichen Summen von geliehenen Liquiditäten
versuchen seit einigen Jahren mit Kurswetten Gewinne zu erzielen. Auch normale Verbraucher
werden motiviert, ihre zu erwartenden Altersrenten mit Aktienkursgewinnen aufzubessern.
Für viele dieser neuen Marktteilnehmer ist es mitunter nicht möglich, für alle anstehenden
Kauf- oder Verkaufsentscheidungen komplexe Fundamentalanalysen durchzuführen. Deshalb ist
zu vermuten, dass sowohl Informationen über historische Kursverläufe, allgemeine aktuelle
Trends als auch die Gruppenpsychologie maßgeblich diese Entscheidungen mit prägen.
Computergestützte Chartanalyse ist für viele Wertpapiergeschäfte das Entscheidungsinstrument
geworden. Einige Handelsstrategien, zum Beispiel das erwähnte Intra-Day Trading benötigen
unter Umständen keinerlei Fundamentalanalyse, da Transaktionsentscheidungen sekundengenau
vorgenommen werden. Innerhalb dieser Sekunden-Zeiträume ändern sich Fundamentaldaten in
der Regel nicht, so dass bei diesen Strategien, auf diese Analyse verzichtet werden kann.
Der weitere Fortgang dieser Tendenzen hin zu Trendfolge und rein technischer Analyse muss
genau beobachtet und bei eigenen Investitionsentscheidungen berücksichtigt werden. Bergen
diese Tendenzen doch die Gefahr, dass die rationalen Prämissen, welche die Grundlage für die
Gültigkeit und Aussagekraft von technischen Analysen bilden, geschwächt wenn nicht sogar
außer Kraft gesetzt werden.
27
3. Wertpapieranalyse
Was ist also zu beachten?
• Technische Analyse funktioniert nur, wenn die überwiegende Zahl der Marktakteure
nach Fundamentalanalyse ihre Handelsentscheidungen treffen.
Diese Notwendigkeit beinhaltet eine zwingende Logik. Wenn im angenommenen
Extremfall kein Handelsteilnehmer mehr die Fundamentaldaten analysiert, welche die
reale Wirtschaft widerspiegeln, dann koppeln sich Kursverläufe von eben dieser
Realwirtschaft ab. In der Folge würde eine reelle Bewertung des Kurswertes unmöglich.
Ohne Kenntnis des „fairen“ Aktienwertes eines Unternehmens wären sämtliche
Marktmechanismen außer Kraft gesetzt. In der Folge würde kein Anleger mehr in
fallende Kurse investieren, da ohne Fundamentaldaten eine Kaufempfehlung im fallenden
Markt, wann ein Wertpapier unterbewertet ist, nicht wahrscheinlich ist.
• Handelsstrategien nach ausschließlich technischer Analyse sind anfällig für
Marktmanipulationen.
Manipulationen, welche Handelssignale auslösen, können je nach Marktsituation unter
Umständen mit relativ begrenzten Mitteln durchgeführt werden. Als Beispiel kann in
einem allgemein fallenden Markt mit durch den Kauf bestimmter Volumen eines
Wertpapiers ein Kaufsignal gesetzt werden. Folgen viele Anlieger diesem Signal und
steigt der Kurs entsprechend stärker an, kann der „Manipulierer“ sich aus dem Markt
zurückziehen, seine Positionen an diesem Wertpapier liquidieren und durch den
gestiegenen Verkaufspreis einen Gewinn erzielen.
• Der Finanzmarkt kann seine führende Rolle in der wirtschaftlichen Entwicklung nicht
mehr erfüllen.
Die Börse dient als Markt, auf welchem sich Unternehmen um freie Finanzmittel von
Investoren bewerben. Damit nimmt die Börse eine steuernde Funktion für die
Gesamtwirtschaft ein, allgemein Allokation genannt. Profitable und allgemein attraktive
Unternehmen ziehen grosse Anteile freier Finanzmittel an, nicht profitable und weniger
attraktive Unternehmen gehen unter Umständen leer aus. Werden nun die
Fundamentaldaten nicht mehr als primäre Informationsquelle genutzt, da Investoren nur
noch dem allgemeinen Trend und den technischen Analyseergebnissen folgen, besteht die
Gefahr, dass Finanzmittel nicht mehr in die gesamtwirtschaftlich attraktivsten
Unternehmen investiert werden. Damit würde die Börse ihre eingangs erwähnte
gesamtwirtschaftliche Grundfunktion der Finanzmittelallokation verlieren.
Für das Projekt TInTo ist zu wünschen, dass zukünftig auch in gewissen Grenzen
Fundamentaldaten in die Bewertungen von Handelsstrategien mit einfließen können. Trotz der
oben genannten Einschränkungen hat die technische Analyse auch erhebliche Vorteile, unter
anderen den der maschinellen Verarbeitung der Kursdaten. Komplexe, mehrdimensional
abhängige Analysen von Fundamentaldaten sind weitaus aufwendiger, wenn überhaupt
modellierbar und technisch umsetzbar. Auch geben technische Analysen durchaus werthaltige
Signale für Anleger, welche tendenziell eher auf Fundamentaldaten in ihren Strategien setzen.
Abschließend bleibt zu empfehlen, in der Praxis beide Analysemethoden miteinander zu
kombinieren, gewichtet nach persönlicher Anlagestrategie.
28
3. Wertpapieranalyse
3.3 Chartanalyse
Die Chartanalyse ist ein Analyseverfahren der technischen Analyse und beinhaltet die im letzten
Abschnitt erläuterte Grundphilosophie:
• Kursbewegungen diskontieren alles.
• Kurse bewegen sich in Trend.
• Die Geschichte wiederholt sich.
In der Chartanalyse werden Kursverläufe und Verlaufsformationen von Charts untersucht, um
Trendverläufe von Kursen möglichst frühzeitig zu erkennen und aus typischen Kursmustern
Kauf- und Verkaufssignale abzuleiten. Das Werkzeug Chart stellt Kursinformationen gegen die
Zeit graphisch dar und ermöglicht somit eine direkte Übersicht über den Kursverlauf. Die
gängigsten Chartdarstellungen sind die folgenden:
• Linienchart
Hier werden nur die Schlusskurse eines
jeweiligen Zeitintervalls dargestellt und durch
eine Linie miteinander verbunden. Das
Linienchart findet Verwendung, da manche
Anleger die jeweiligen Schlusskurse für
wichtig erachten oder wenn nur ein Wert pro
Zeitintervall zur Verfügung steht.
• Balkenchart (oder OHLC-Chart)
Für jedes Intervall wird ein senkrechter
Balken dargestellt, dessen oberes Ende den
Höchstkurs und dessen unteres Ende den
Tiefstkurs abbilden. Ein waagerechter Strich
auf der linken Seite zeigt den Eröffnungskurs
an und ein Strich auf der rechten Seite
repräsentiert den Schlusskurs.
• Kerzenchart
Das Kerzenchart ist eine andere Art von
Balkenchart. Allerdings wird hier die Spanne
zwischen Eröffnungs- und Schlusskurs als ein
Rechteck, als so genannter Kerzenkörper
dargestellt. Wenn der Schlusskurs über dem
Eröffnungskurs liegt, ist der Körper grün, im
umgekehrten Fall rot.
Abbildung 3.5 Chartdarstellungen, Apple Inc. [YH08f]
29
3. Wertpapieranalyse
Innerhalb der Chartanalyse existieren eine Vielzahl von Erkennungslinien sowie
Kursformationen, welche direkt aus dem Chart abgeleitet werden können und eventuell auf
günstige Zeitpunkte zum Kauf oder Verkauf verweisen. Im Folgenden werden nur die häufig
verwendeten beispielhaft erläutert.
• Unterstützungs- / Widerstandslinie
Die Unterstützungs- und Widerstandslinien sind ein wichtiges und grundlegendes
Werkzeug in der Chartanalyse und repräsentieren die Kräfte von Angebot und Nachfrage
im Finanzmarkt. Erfolgt zum Beispiel nach einem Kursanstieg ein entsprechender
Kursrückgang, gekoppelt mit nachlassender Nachfrage und steigendem Verkaufsdruck, so
bezeichnet man den zuvor erreichten Höhepunkt, das lokale Maximum, als Widerstand.
Wenn man über den zeitlichen Verlauf eines Wertpapierkurses alle lokalen Maxima, die
Widerstandspunkte, horizontal miteinander verbindet, erhält man die so genannte
Widerstandslinie. Je öfter eine Widerstandslinie durch Widerstandspunkte bestätigt wird,
desto aussagekräftiger ist sie. Analoges gilt für die Unterstützungslinie, welche eine
horizontale Verbindung der lokalen Minima des Wertpapierkurses darstellt. Ein
Durchbruch des aktuellen Kurses durch die Widerstandslinie oder die Unterstützungslinie
bedeutet, dass sich das Verhältnis von Angebot und Nachfrage maßgeblich geändert hat.
Durchbrüchen dieser Art liegen in der Regel Änderungen der Fundamentaldaten zugrunde
und können somit als Handelssignale interpretiert werden. Die folgende Abbildung
veranschaulicht Handelssignale am Beispiel von Widerstands- und Unterstützungslinie:
Widerstandslinie
Widerstandslinie
Kaufsignal
Unterstützungslinie
Verkaufssignal
Unterstützungslinie
Abbildung 3.6 Unterstützungs- und Widerstandslinie
• Trendlinie
Mit Hilfe von Trendlinien lassen sich schnell Erkenntnisse über den allgemeinen
Kurstrend erhalten, um diesen frühzeitig zu erkennen oder auch beobachtete Trends zu
bestätigen. Abbildung 3.7 zeigt an einfachen Beispielen, wie Trendlinien erstellt und
verwendet werden können. Dabei wird eine Aufwärts-Trendlinie so wie dargestellt durch
Verbinden der lokalen Minima eines Aufwärtstrends gezeichnet. Je öfter diese Linie mit
lokalen Minima bestätigt wird und um so länger sich diese Linie über den zeitlichen
Kursverlauf abbilden lässt, desto bedeutsamer ist dieser Trend. Sollte der aktuelle Kurs
diesen Aufwärtstrend signifikant nach unten durchbrechen, so signalisiert dies einen
Trendwechsel und kann als Verkaufssignal gewertet werden. Wiederum Analoges gilt für
die Abwärts-Trendlinie, welche die lokalen Maxima eines Abwärtstrends miteinander
verbindet.
30
3. Wertpapieranalyse
Abwärts-Trendlinie
Kaufsignal
Verkaufssignal
Aufwärts-Trendlinie
Abbildung 3.7 Aufwärts- / Abwärtstrendlinie
• Trendwendeformationen
Der zeitliche Übergang von einem allgemeinen Trend zu einem entgegengesetzten, eine
so genante Trendumkehr, kündigt sich in der Regel über eine Trendwendeformation an.
Bekannteste Formationen sind zum Beispiel die Schulter-Kopf-Schulter-Top- oder die
Schulter-Kopf-Schulter-Boden Formation, die V-Formation, oder auch die Zweifachhochoder Zweifachtief-Formationen. Abbildung 3.8 zeigt eine häufig auftretende und im
allgemeinen als zuverlässig angesehene Trendwendeformation, die Schulter-KopfSchulter-Top-Formation. Am Ende eines Aufwärtstrends kann diese Formation auftreten,
wobei die jeweiligen Kurshochs, welche die beiden Schultern bilden, etwas niedriger
ausfallen als das Kurshoch, welches den Kopf darstellt. Die Trendwendeformation kann
mit einer Unterstützungslinie kombiniert werden. Dabei werden die lokalen Minima
zwischen den beiden Schultern und dem Kopf der Formation miteinander verbunden. In
dieser Kombination wird diese Linie Nackenlinie genannt. Durchbricht der aktuelle Kurs
die Nackenlinie, wird dies im Allgemeinen als Verkaufssignal gewertet.
Kopf
Rechte Schulter
Linke Schulter
Nackenlinie/Unterstützungslinie
Verkaufssignal
Abbildung 3.8 Schulter-Kopf-Schulter-Top
• Trendbestätigungsformationen
Das Auftreten von so genannten Trendbestätigungsformationen wird im Allgemeinen als
Indikator dafür gewertet, dass sich der bestehende Trend fortsetzt. In dieser Formation
bewegen sich die Kurse seitwärts oder gegebenenfalls sogar leicht gegen den bestehenden
Trend. Bekannte Beispiele für Trendbestätigungsformationen sind das so genannte
Dreieck, der Wimpel, oder die Flagge. Die Abbildung 3.9 zeigt ein symmetrisches
Dreieck, im welchem sich der Kurs grundsätzlich neutral bewegt und anschließend dem
bestehenden, in diesem Beispiel ansteigenden, Trend folgt.
31
3. Wertpapieranalyse
Abbildung 3.9 Symmetrisches Dreieck
• Kerzenchart Muster
Nicht nur in den oben genannten Liniendiagrammen, sondern ebenfalls in Kerzencharts
treten bestimmte Kursmuster auf. Auch diese Muster können dazu verwendet werden,
eine Bestätigung des bestehenden Trends oder einen Trendwechsel abzulesen. Die in
Abbildung 3.10 gezeigten Muster kündigen alle jeweils eine Umkehr von Abwärts- zu
Aufwärtstrend an: Morgenstern, Hammer und Harami. Harami kann auch bei der Umkehr
vom Aufwärts- zum Abwärtstrend auftreten.
Morgenstern
Hammer
Harami bei Abwärtstrend
Abbildung 3.10 Trendumkehr von Abwärts- zu Aufwärtstrends in Kerzenchartmustern
Zusammenfassend muss erwähnt werden, dass weder Erkennungslinien noch Formationen
eindeutig abgelesen werden können und jeweils einer subjektiven und somit persönlichen
Einschätzung der konkreten Situation unterliegen. Weitere Unterstützung könnte hier der
Einsatz von Mustererkennungstechnik leisten, um zur besseren Erkennbarkeit mögliche
Unschärfen in auftretenden Mustern zu modellieren. Darüber hinaus kann die Fuzzy-Theorie
eingesetzt werden, um nach der jeweiligen Relevanzgröße des auftretenden Musters ein
Handelssignal zu liefern.
Das Projekt TInTo-Projekt hat in erster Linie die Analyse technischer Indikatoren zu Ziel,
welche im nächsten Abschnitt vorgestellt und erläutert werden. Die Chartanalyse wird in der
gegenwärtigen Version von TInTo nicht direkt unterstützt. Wie jedoch in diesem Kapitel
beschrieben, kann man mit Hilfe von vergleichsweise einfachen Linien Trends und Formationen
schnell erkennen. Für die zukünftige Entwicklung von TInTo ist zu wünschen, dass auf
Kurscharts Linien abgebildet werden können. Gegebenenfalls lassen sich auch vordefinierte,
bewegliche Formationen auf die Kurscharts projizieren und bei Bedarf abändern. Im Beispiel
von Kerzencharts lassen sich Muster mit vergleichsweise geringem Aufwand mathematisch
definieren und als Unterstützung für Handelsentscheidungen programmieren.
32
3. Wertpapieranalyse
3.4 Technische Indikatoren
Die Analyse technischer Indikatoren ist neben der im vorangegangenen Abschnitt vorgestellten
Chartanalyse ein wichtiges Teilgebiet der technischen Analyse von Wertpapieren. Mathematisch
gesehen stellt ein technischer Indikator eine mathematische Funktion dar, welche aus einzelnen
Kursdaten wie Schlusskurs, Eröffnungskurs, Höchstkurs, Tiefstkurs oder Handelsvolumen einen
Indikatorwert zu einem bestimmten Zeitpunkt berechnet. Über einen gegebenen Zeitraum
betrachtet, lässt sich aus diesen berechneten Indikatorwerten eine übersichtliche und informative
Linie graphisch abbilden.
Die verschiedenen existierenden technischen Indikatoren erlauben auch verschiedene
Perspektiven auf den Kursverlauf des jeweiligen Wertpapiers. Meist sind die Indikatoren
spezialisiert, um gut Trendrichtungen aufzuzeigen oder zum Beispiel Trendwechsel zu
erkennen. Mit Hilfe anderer Indikatoren wiederum kann die Trendintensität bestimmt werden.
Auf Grund dieser meist einseitigen und beschränkten Perspektive einzelner Indikatoren auf den
Kursverlauf müssen Indikatoren kombiniert verwendet werden, um zukünftige Kursverläufe zu
prognostizieren und Handelsempfehlungen abzugeben.
Darüber hinaus ist zu beachten, dass diese Indikatorwerte das Ergebnis mathematischer
Berechnungen sind und damit nicht direkt die jeweiligen Kursverläufe reflektieren. Die
wichtigste Entscheidungsgrundlage ist immer noch die eigentliche Kursinformation des
Wertpapiers unter jeweiliger Berücksichtigung der technischen Indikatoren.
Heutzutage existieren hunderte von technischen Indikatoren und jede Woche kommen weitere
hinzu. Dabei nehmen viele Indikatoren eine nahezu identische Perspektive auf die Kursverläufe,
bieten vergleichbare Verwendungsmöglichkeiten und kommen auch auf ganz ähnliche
Ergebnisse. Wiederum sind nur wenige Indikatoren für hinreichend lange Zeit von einer
repräsentativen Anzahl von technischen Analytikern verwendet worden, um ihre Aussagekraft
zu bestätigen. In der konkreten Anwendung erscheint es auch weitaus wichtiger und sinnvoller,
einige wesentliche Indikatoren in ihrer Aussage sehr gut zu verstehen und die jeweiligen
Indikatorwerte richtig interpretieren zu können, als Dutzende Indikatoren jeweils nur grob zu
studieren. In den nächsten Abschnitten möchte ich einige der am häufigsten angesetzten
Indikatoren erläutern, welche jeweils unterschiedliche Perspektiven auf die Kursverläufe
nehmen, aber sich im Laufe der Zeit als aussagekräftig erwiesen haben. In der täglichen Praxis
haben sich die englischen Bezeichnungen für die technischen Indikatoren durchgesetzt, weshalb
diese so auch in den folgenden Erläuterungen verwendet werden.
3.4.1 Trendfolger
Trendfolgeindikatoren, wie zum Beispiel der Moving Average, filtern kleine chaotische
Kursbewegungen heraus und ermöglichen daher, einen klaren Blick auf das wirkliche
Trendverhalten und die allgemeine Trendrichtung des Kursverlaufs zu behalten. Der wesentliche
Vorteil dieser Gruppe von Indikatoren ist, dass Trends klar identifiziert werden können und es
damit Anlegern ermöglicht wird, im jeweiligen Trend zu bleiben und nicht gegen den Trend zu
handeln.
Der Einsatz von Trendfolgeindikatoren kann enorm profitabel sein, hat aber auch einige
kritische Punkte. Einer der Nachteile von Trendfolgeindikatoren besteht zum Beispiel darin,
dass der Trend zeitlich verzögert verfolgt wird und das jeweilige Handelssignal relativ spät
geliefert wird, zu einem Zeitpunkt, wenn der Trend sich bereits schon entwickelt hat. Daher
sollten diese Indikatoren in Phasen mit häufig stark schwankenden, volatilen Kursverläufen
nicht eingesetzt werden, da durch die genannte Zeitverzögerung häufig auf kurze aber
33
3. Wertpapieranalyse
signifikante Schwankungen nicht früh genug reagiert werden kann. In Phasen ohne erkennbaren
klaren Trend, zum Beispiel wenn Kurse sich seitwärts bewegen, sollten Trendindikatoren
ebenfalls nicht verwendet werden, da diese sich mit den Kursen gleichfalls seitwärts bewegen,
ohne sinnvolle Signale zu liefern. Darüber hinaus reagieren Trendfolgeindikatoren in
Seitwärtsphasen auf jede Kursschwankung auch ohne klaren Trend und liefern somit viele
Fehlsignale.
Beispiel: MA (Moving Average)
Der Moving Average (MA) ist der am weitesten verbreitete technische Indikator und findet zum
Beispiel auf fast allen Charting-Webseiten und auch in Anleger-Magazinen seine Verwendung.
Mathematisch stellt der MA den Durchschnittskurs über einen bestimmten Zeitraum dar. Unter
den zahlreichen Varianten von MA finden der SMA (Simple Moving Average) und der EMA
(Exponential Moving Average) am meisten Verwendung. Auch dient der MA als eine
grundlegende Teilformel für viele andere technische Indikatoren.
Berechnung:
• SMA (Simple Moving Average)
SMA ist die einfachste Variante der MA und ergibt sich aus der Berechnung des Durchschnitts
der Schlusskurse für einen bestimmten Berechnungszeitraum:
Dabei gibt t die fortlaufenden Zeitpunkte, zum Beispiel das jeweilige Datum im Falle einer
täglichen Berechnung, und n die Berechnungsperiode an. Je nach Berechnungsperiode glättet
SMA den Kursverlauf unterschiedlich stark. Je länger die Berechnungsperiode ist, desto weicher
ist das Muster von SMA.
• EMA (Exponential Moving Average)
Der EMA versucht, zu einem gewissen Grade den Nachteil der zeitlichen Verzögerung des
SMA zu reduzieren. Während der SMA alle Kurse innerhalb einer Berechnungsperiode gleich
gewichtet, gibt EMA den zeitlich gesehen aktuelleren Kursen mehr Gewicht als den zeitlich
gesehen älteren Kursen.
Anfangswert:
Gewichtungsfaktor:
Dabei gibt t die fortlaufenden Zeitpunkte und n die jeweilige Berechnungsperiode an. Für
Nummerierung wird der jeweilige Zeitpunkt i verwendet. Zuerst wird die Differenz aus
aktuellem Schlusskurs und gestrigem EMA mit dem Gewichtungsfaktor multipliziert. Danach
wird der gestrige EMA addiert. Diese Formel ist rekursiv. Der Anfangswert der Rekursion, also
der erste EMA-Wert im Betrachtungszeitraum, ergibt sich aus dem SMA über die jeweilige
Berechnungsperiode n.
Die Gewichtung der jeweiligen Einzelkurse im EMA hängt direkt von der Berechnungsperiode
ab. Je kürzer die Berechnungsperiode gewählt wird, mit umso mehr Gewicht gehen die
34
3. Wertpapieranalyse
aktuellsten Kurse in die Berechnung ein und umso empfindlicher reagiert der EMA auf die
jüngsten Kursänderungen. Während bei der Berechnung des SMA nur die Kurse aus der
Berechnungsperiode verwendet werden, gehen in die Berechnung des EMA alle Kurse aus dem
gesamten Betrachtungszeitraum, also aus dem gesamten Analysezeitraum ein.
Interpretation:
• SMA im Vergleich zu EMA
Der Unterschied zwischen SMA und EMA bezüglich ihrer Indikatorwerte ist relativ gering, aber
dennoch vorhanden. So verläuft der EMA auf Grund der höheren Gewichtung der aktuellsten
Kurse fast immer näher an dem eigentlichen Kursverlauf und reagiert auch schneller auf
Kursänderungen als der SMA. Der SMA hingegen ist gegenüber dem EMA zeitlich verzögert
und daher besser geeignet, Trendänderungen über einen längeren Zeitraum zu betrachten, mit
dem Ziel, länger andauernde, nachhaltige Trends zu erkennen.
• Trendrichtung
Mit Hilfe von MA-Indikatoren kann man die generelle Richtung eines Trends sowie Wechsel
hin zu einem anderen Trend erkennen. Der MA-Indikator glättet hierzu schwankende
Kurvenverläufe sowie kleinere Kurswenden, welche nicht auf eine generelle Trendänderung
hindeuten. Der MA bietet drei Methoden, einen Trend zu identifizieren.
Erstens, die Neigung, mathematisch der Anstieg, der MA-Linie weist den aktuellen Trend auf.
Eine ansteigende MA-Linie steht für einen Aufwärtstrend der Kurse, wobei eine abfallende
Linie auf einen Abwärtstrend hinweist.
Zweitens kann man den Trend aus der relativen Position des betrachteten Kurswertes zur MALinie erkennen. Liegt der aktuelle Kurswert über der MA-Linie, befindet sich der Kurs im
Aufwärtstrend. Analog gilt für den Abwärtstrend, dass sich die aktuellen Kurswerte unterhalb
der MA-Linie befinden.
Drittens kann man zwei MA-Linien mit jeweils unterschiedlichen Berechnungsperioden
verwenden. Liegt dann die MA-Linie mit der kürzeren Periode über der Linie mit der längerem
Periode, dann befindet sich der betrachtete Kurswert im Aufwärtstrend. Analog gilt auch hier
wieder, dass eine MA-Linie mit kurzer Periode, welche unterhalb einer Linie mit längerer
Periode liegt, auf einen Abwärtstrend hinweist.
• Überkauft- und Überverkauftsituation
Durch den Abstand zwischen aktuellem Kurs und der MA-Linie kann man mögliche
überkaufte- oder überverkaufte Marktsituationen erkennen. Steigt der Kurs über der MA-Linie
weiter an, vergrößert sich also der Abstand zwischen aktuellem Kurs und der MA-Linie weiter,
so besteht eine überkaufte Situation. Sollte sich in einer überkauften Situation dann der Abstand
zur MA-Linie wieder verkleinern, deutet dies auf steigenden Verkaufsdruck hin, und der Kurs
kann bis auf die MA-Linie zurückfallen. Eine solche Marktsituation nennt man „bärisch“. Fällt
der aktuelle Kurs nun weiter unterhalb der MA-Linie ab, vergrößert sich also der Abstand zur
MA-Linie weiter, so entsteht eine überverkaufte Situation. Eine darauf folgende
Wiederannäherung der aktuellen Kurse an die MA-Linie gibt eine Indikation auf steigenden
Kaufdruck. Eine solche Marktsituation nennt man „bullischen“ Markt oder auch „bullische“
Trendwende. In der folgenden Abbildung 3.11 sind drei überkaufte Situationen zu erkennen,
welche im Beispiel jeweils mit „überhitzt“ gekennzeichnet sind. In allen drei Fällen liegen die
aktuellen Kurswerte des Dow Jone Index über dem 200-Tage SMA.
Während der MA-Indikator einen Hinweis auf eine überkaufte oder überverkaufte
35
3. Wertpapieranalyse
Marktsituation gibt, signalisieren hierauf spezialisierte Indikatoren, zum Bespiel der im
folgenden erläuterte RSI, deutlich eine solche Marktsituation.
• Unterstützungs- und Widerstandslinie
MA-Linien dienen vielen Anlegern als Unterstüzungs- oder Widerstandslinien in ihren
Handelsstrategien. Zum Beispiel signalisiert dabei das Durchbrechen der Unterstützungen in
einem Aufwärtstrend einen möglichen Trendwechsel. In der folgenden Abbildung 3.11 ist der
allgemeine Aufwärtstrend mit drei Unterstützungspunkten bestätigt. Gegen Ende 2007 jedoch
durchbricht der Kursverlauf die als Unterstützungslinie dienende MA-Linie und gibt damit ein
Verkaufssignal.
Widerstand
Widerstand
Überhitzt
Überhitzt
Unterstützung
Überverkauft
Überverkauft
Unterstützung
Überhitzt
Abbildung 3.11 50-MA (rot), 200-MA (grün), Dow Jones Industrial Average (blau), [YH08f]
• Berechnungsperiode
Die Berechnungsperiode in der MA-Berechnung besitzt eine Austauschbeziehung zwischen
Sensitivität und Zuverlässigkeit.
Je kürzer die Berechnungsperiode ist, um so sensibler ist die MA-Linie für aktuelle
Kursänderungen. Mit kurzen Berechnungsperioden erkennt man rechtzeitig Kursänderungen,
diese liefern aber auch häufig Fehlsignale, welche nicht auf einen allgemeinen Trendwechsel
hindeuten. MA-Indikatoren mit längeren Berechnungsperioden reagieren zwar träger als solche
mit kurzen Perioden, liefern damit zwar zeitlich verzögerte aber markttechnisch signifikante
Handelssignale. Allgemein verbreitete Berechnungsperioden sind 21, 50, 89, 150 und 200 Tage.
Je nach der gegenwärtigen Marktsituation und damit aktuellem Kursverlauf, zum Beispiel sehr
volatil oder nachhaltig, und je nach Verwendungszweck bezüglich Anlagehorizont und
Handelsstrategie, sollten geeignete Berechnungsperioden eingesetzt werden.
Handelssignale:
Das Überkreuzen zweier MA-Linien wird im Allgemeinen als Handelssignal gedeutet und auch
in computergestützen Handelssystemen als solches verwendet. Wenn sich im konkreten Beispiel
die MA-Linie mit der kürzeren Berechnungsperiode mit der MA-Linie mit längerer
Berechnungsperiode von unten nach oben schneidet, so liegt ein Kaufsignal vor. Analog dazu
gilt: Schneidet sich hingegen die MA-Linie mit der kürzeren Berechnungsperiode mit der MALinie mit einer längeren Periode von oben nach unten, so liegt ein Verkaufssignal vor. Ein
schwaches oder auch täuschendes Kaufsignal liegt dann vor, wenn in einem allgemein
aufsteigenden Markt, indiziert durch eine aufsteigende MA-Linie mit langer Periode, diese MALinie mit langer Periode durch eine MA-Linie mit kurzer Periode von oben nach unten
36
3. Wertpapieranalyse
geschnitten wird. Gleichfalls liegt ein schwaches oder täuschendes Verkaufssignal vor, wenn in
einem allgemein fallenden Markt eine MA-Linie kurzer Periode eine MA-Linie langer Periode
von unten nach oben schneidet. Täuschende Fehlsignale entstehen durch kurzfristige
Trendänderungen, welche nicht auf eine langfristige Trendumkehr hindeuten. Abbildung 3.12
zeigt Beispiele für jeweils deutliche und auch für schwache Kauf- und Verkaufssignale.
Verkaufssignal
Deutliches Verkaufssignal
Schwaches Verkaufssignal
Schwaches Kaufsignal
Deutliches Kaufsignal
Abbildung 3.12 21-SMA (rot), 150-SMA (grün), Dow Jones Industrial Average (blau), [YH08f]
Als eine Variante für sehr kurzfristige Handelshorizonte wird das Überkreuzen der Kurs-Linie
mit einer MA-Linie kurzer Periode analog oben erläuterter Methodik als Handelssignal
verwendet.
Da im Allgemeinen Marktgeschehen das Überkreuzen von mittel- und langfristigen MA-Linien,
zum Beispiel der 50-Tage-MA-Linie mit 200-Tage-MA-Linie, sehr selten vorkommt, kann auch
eine kurzfristige MA-Linie hinzugefügt werden, um weitere Signale zu generieren. Wirklich
zuverlässig sind allerdings nur jene Kaufsignale aus kurz und mittelfristigen MA-Linien, wenn
diese über der langfristigen MA-Linie liegen. Gleiches gilt für Verkaufssignale aus kurz- und
mittelfristigen MA-Linien. Diese müssen für ein signifikantes Verkaufssignal unterhalb der
langfristigen MA-Linie liegen.
Einschränkungen in der Anwendbarkeit und der Aussagekraft der MA-Indikatoren ergeben sich
in sich seitwärts bewegenden sowie in sehr volatilen Märkten.
Wie in der Abbildung 3.11 zu sehen ist, lieferten die MA-Indikatoren in der Seitwärtsphase
zwischen Mitte 2004 und Ende 2005 häufig Fehlsignale. Ebenso wurden in der sehr volatilen
Marktphase in den Jahren 2001 und 2002 Fehlsignale geliefert. Ein Beispiel für ein solch
schwaches Kaufsignal zeigt sich in der Abbildung 3.12 im Mai 2008, als die kurzfristige MALinie die zu diesem Zeitpunkt fallende langfristige MA-Linie von unten durchschneidet. Die
kurzfristige MA-Linie deutet einen kurzfristig „bullischen“ Markt an, jedoch keinen generellen
Trendwechsel. Ein genereller Wechsel könnte nur von einem deutlichen Kaufsignal angedeutet
werden, wenn zum Beispiel wie im August 2006 eine kurzfristige MA-Linie eine steigende
langfristige MA-Linie von unten durchschneidet. Ein solcher Schnitt bestätigt den allgemeinen
Aufwärtstrend und gibt ein deutliches Kaufsignal.
Warum kommt es zu schwachen Signalen oder sogar Fehlsignalen?
In Seitwärtsmärkten liegen kurzfristige und langfristige MA-Linien eng beieinander, ohne einen
klaren Trend zu zeigen. In dieser Situation führt jede kleine Kursänderung zu einer Reaktion der
37
3. Wertpapieranalyse
kurzfristigen MA-Linie. In der Regel wird diese die langfristige Linie schneiden und ein Signal
auslösen. Da ein kurzfristiger Kurswechsel von wenigen Tagen aber im Allgemeinen keine
allgemeine Trendwende kennzeichnet, sollte dieses Signal nicht zu hoch gewichtet werden. Im
Beispiel Juni 2006 schneidet die kurzfristige, fallende MA-Linie von oben kommend eine
ansteigende langfristige MA-Linie. Der allgemein ansteigende Trend ist noch vorhanden,
allerdings haben einige wenige Perioden von fallenden Kursen den kurzfristige MA-Indikator
ebenfalls fallen und die langfristige MA-Linie schneiden lassen. Im Beispiel gut ersichtlich, die
kurzfristig fallende Kurse konnten den Aufwärtstrend nicht stoppen. Ein Verkauf nach dem
Signal im Juni 2006 hätte auf mittlere Sicht Verluste gebracht. Um nun genannte Fehler in
Seitwärtsphasen zu verhindern ist insbesondere wichtig, diese Phasen als solche zu erkennen.
Bei Verwendung von Unterstützungs- und Widerstandslinien kann man einen Seitwärtsmarkt
optisch gut erkennen. Horizontal verlaufende sowie parallel verlaufende kurz- und langfristige
MA-Linien sind ebenfalls klare Signale auf einen Seitwärtsmarkt und ein Hinweis auf die
Fehleranfälligkeit von MA-Indikatoren zu dieser Zeit. In diesen Phasen sollten MA-Indikatoren
durch weitere geeignete Indikatoren ergänzt werden.
3.4.2 Oszillatoren
Oszillatoren bilden neben Trendfolgeindikatoren eine wesentliche Indikatorgruppe mit komplett
anderen Eigenschaften und Verwendungsmöglichkeiten. Der wesentliche Unterschied liegt
hauptsächlich darin, dass Ozillatoren mögliche zukünftige Trendwechsel erkennen können,
während Trendfolgeindikatoren nur dem vorherrschenden Trend folgen und bestätigen.
Oszillatoren stellen mögliche bevorstehende Trendwechsel deutlich graphisch dar, welche man
ohne Zuhilfenahme von Indikatoren aus dem originalen Kursverlauf mit bloßem Auge kaum
erkennen kann.
Die grundliegende Idee für die Berechnung der Oszillatoren ergibt sich aus der Differenz oder
Relation aus aktueller Kursinformation zu vergangenen Kursinformationen. Diese Differenz
oder Relation wird graphisch meistens unter dem eigentlichen Kursverlauf dargestellt. Diese
„historische“ Differenz oder Veränderungsgeschwindigkeit des Kurses pendelt um eine
horizontale Mittelpunktslinie, auch wenn der Kurs sich stark aufwärts oder dramatisch abwärts
bewegt. Oszillatoren sind daher nicht geeignet, den langfristigen Trend zu erkennen oder
signifikante Kursverhalten übersichtlich darzustellen, sondern um den kommenden möglichen
Trendwechsel zu prognostizieren. In einer Seitwärtsphase liefern Oszillatoren bessere
Handelssignale als in extrem steigenden oder fallenden Märkten, da sie in jenen Fällen oft
Fehlsignale erzeugen, welche sich gegen den Haupttrend stellen.
Beispiel: RSI (Relative Strength Index)
Der RSI (Relative Strength Index) wurde von dem technischen Wertpapieranalysten Welles J.
Wilder entwickelt und in seinem Buch, „New Concepts in Technical Trading Systems“ im Jahre
1978 veröffentlicht. Der RSI ermittelt die relative Schwungstärke des Kurses, indem er die
Kursgewinne einer Periode mit den Kursverlusten einer Periode vergleicht. Der RSI ist ein
repräsentatives Beispiel für Oszillatoren und wird verwendet, um überkaufte- oder
überverkaufte Marktsituationen zu erkennen und Warnsignale für einen möglichen
Trendwechsel zu geben.
38
3. Wertpapieranalyse
Berechnung:
Die von Welles Wilder bezeichnete „Relative Stärke“ RSI ergibt sich dadurch, dass die
durchschnittliche Summe der positiven Kursänderungen mit der durchschnittlichen Summe der
negativen Kursänderungen in gleichlangen Perioden in Relation gesetzt werden:
Dabei ist n die Berechnungsperiode und t der fortlaufende Zeitpunkt. Diese Relation bedeutet,
dass die RSI-Werte nur zwischen 0 bis 100 schwanken können. AvgSU ist dabei der
Durchschnitt der Summe der positiven Kursänderungen, wodurch die Änderungsmaße geglättet
werden. Für die Berechnungsperiode wird häufig 14 verwendet. Mit kürzeren
Berechnungsperioden wird weniger geglättet und es ergibt sich ein etwas chaotischerer Verlauf.
Analog wird AvgSD für die negativen Kursänderungen berechnet.
SU summiert alle positiven und SD alle negativen Kursveränderungen in der Periode:
Up und Down bezeichnen jeweils den Anstieg bzw. den Verlust des aktuellen Schlusskurses im
Vergleich zum vorangegangen Schlusskurs:
Interpretation und Handelssignale:
Numerisch bewegt sich der RSI zwischen 0 und 100. In der Regel schwankt der RSI zwischen
10 und 90. Der Verlauf der RSI-Linie erfasst dabei die Stärke hinter einer Kursbewegung, als
eine „relative“ Stärke in Prozent, welche um die Mittelpunktslinie mit Wert 50 pendelt.
Handelsempfehlungen können mittels der folgenden drei Auswertungsmöglichkeiten analysiert
werden:
• Divergenz
Entwickeln sich die RSI-Linie und der Kursverlauf tendenziell auseinander oder zutreffend in
gegenläufige Richtungen, dann wird von einer Divergenz gesprochen. Eine Divergenz entsteht
nicht oft, aber wenn sie entsteht, dann deutet sie einen Trendwechsel an. In einem Aufwärtstrend
zum Beispiel zeigt die Divergenz an, dass die Steigungsstärke des Kurses nachgelassen hat und
ein Abwärtstrend imminent ist. Wenn eine Divergenz in der extremen Zone (über 70 oder unter
30) auftritt, ist dies signifikanter und sollte als ein starkes Warnsignal wahrgenommen werden.
Die Abbildung 3.13 zeigt eine Divergenz im Mai und Juni 2006 und liefert ein signifikantes
Signal einen Trendwechsel von fallenden hin zu steigenden Kursen.
39
3. Wertpapieranalyse
• Überkaufte- / Überverkaufte Situationen
Befindet sich die RSI-Linie im extremen oberen Bereich der Graphen, d.h. über 70, kann man
dies als überkaufte Marktsituation interpretieren. In der Regel führen viele aufeinanderfolgende
Kursgewinne zu solch „überhitzten“ Situationen. Allgemein prognostiziert man daraus ein
baldiges Drehen des Kursverlaufs hin zu wieder fallenden Kursen. Das Verlassen des extremen
Bereiches wird als Handelssignal gewertet. In einer starken Trendphase jedoch liefert RSI oft
Fehlsignale, da Handelssignalen zu früh entstehen. Im Beispiel in der Abbildung 3.13 gibt es
relativ gute Signale während der Seitwärtstrends. In der starken Aufwärtsphase in 2006
allerdings liefert der RSI ein Verkaufssignal zu früh schon im August, während der Kurs weiter
bis Anfang 2007 ansteigt.
• Das Überkreuzen der Mittelpunktslinie
In der Anwendung des RSI wird das Überkreuzen der Mittelpunktslinie im Allgemeinen als ein
weiteres Handelssignal interpretiert.
Dabei wird davon ausgegangen, dass die RSI-Linie bei Durchlaufen der Mittelpunktslinie ihre
Bewegung in die gleiche Richtung bis zu einer Extremzone fortsetzt. Schneidet die RSI Linie
die Mittelpunktslinie von unten nach oben, wird dies als Kaufsignal, ein Schnitt von oben nach
unten als Verkaufssignal angesehen.
Verkauf
Zu frühes Verkaufssignal
Überkauft
Mittelpunktslinie
Überverkauft
Kauf
Divergenz
Kauf
Abbildung 3.13 RSI, Microsoft Corp. [SCharts08]
40
Verkauf
3. Wertpapieranalyse
3.4.3 Trendintensitätsindikatoren
Für eine optimale Auswahl der geeigneten Indikatoren in der jeweiligen Marktphase ist es
entscheidend zu beurteilen, ob sich der Markt in der Trendphase oder in einer trendlosen Phase
befindet. Einige Indikatoren liefern bessere Handelssignale in einer trendlosen Phase, während
andere in einer Trendphase besser geeignet sind. Für diese Trendbeurteilung werden
Trendintensitätsindikatoren eingesetzt.
Beispiel: ADX (Average Directional Movements)
Der ADX wurde, wie auch der RSI, von Welles J. Wilder in den 70er Jahren entwickelt. Der
ADX berechnet die vorherrschende Trendintensität, zeigt aber nicht dessen Trendrichtung an.
Der ADX wird oft als Filter in der Seitwärtsbewegung des Marktes verwendet.
Berechnung:
Für die Berechnung des ADXs gibt es einige Varianten, welche sich nur unwesentlich
unterscheiden und zu nahezu identischen Ergebnissen führen. Im Folgenden wird die ADXVariante erläutert, welche in TInTo Anwendung findet. Die Berechnung des ADX gliedert sich
in mehrere Schritte auf. Zuerst werden die grundlegenden Teilindikatoren erläutert, welche als
Hilfsgrößen für die Berechnung des ADX dienen.
1. Ermittelt wird zuerst die positiv gerichtete Bewegung (+DM: Positive Directional
Movement) und die negative gerichtete Bewegung (-DM) im Vergleich zum gestrigen Tag.
Bildet sich ein vergleichbar höheres Hoch, dann wird dies als eine positive Bewegung
gewertet, ein vergleichbar tieferes Tief als negative Bewegung:
t ist der fortlaufende Zeitpunkt.
2. Um die im ersten Schritt berechnete Aufwärts- oder Abwärtsbewegung als einen relativen
Wert verwenden zu können, wird zusätzlich eine Handelsspanne (TR: True Range)
berechnet. Diese Handelsspanne berücksichtigt auch den gestrigen Schlusskurs und wird
daher auch als „wahre Handelsspanne (True Range)“ bezeichnet:
3. Anschließend wird der Durchschnitt der aufgetretenen Kurslücken (+DM oder -DM) in
einer bestimmten Periode (n) mit dem Durchschnitt der wahren Handelsspanne im Relation
gesetzt:
41
3. Wertpapieranalyse
4. Im vierten Schritt wird die Stärke der Kursbewegung (DMI) als ein relativer Wert aus der
Kraft der positiven und negativen Kurslücken berechnet. Dabei wird in der Formel ein
absoluter Betrag der Differenz von +DI und -DI verwendet. Daher bezeichnet DMI nur die
Stärke des Kurstrends, besagt aber nicht, ob die Stärke aus einem Aufwärtstrend oder
Abwärtstrend heraus stammt:
5. Abschließend wird der ADX aus einer zusätzlichen Glättung des DMI geformt, da der DMI
selbst ein recht volatiler Indikator ist:
Wobei n2 die Berechnungsperiode zum Glätten des DMIs ist.
Trendstärke sinkt
Trendstärke sinkt
Trendstärke steigt
Abbildung 3.14 ADX, Intell Corp. [SCharts08]
Interpretation und Handelssignale:
In Abbildung 3.14 stellen die schwarze Linie den ADX, die grüne und die rote Linie die Stärke
der Aufwärtsbewegung (+DI) bzw. die Stärke der Abwärtsbewegung (-DI) dar.
Je höher der ADX Wert ausfällt, desto stärker ausgeprägt ist der vorhandenen Trend. Umgekehrt
gilt auch, dass ein niedriger ADX Wert auf eine niedrige Trendintensität hinweist. Es ist jedoch
zu beachten, dass ein steigender ADX lediglich eine steigende Trendintensität bedeutet, er
besagt aber nicht, dass ein Aufwärtstrend vorliegt. Ein fallender ADX hingegen zeigt nur eine
nachlassende Trendintensität, aber keinen Abwärtstrend. Die ADX-Linie in Abbildung 3.14 fällt
ab Ende November 1998, während der Kurs weiter stark nach oben steigt. Dieser Verlauf deutet
darauf hin, dass der vorherrschende starke Aufwärtstrend nachlassen wird. In der trendlosen
42
3. Wertpapieranalyse
Phase ab Mitte März bis Anfang Juni bleibt die ADX-Linie niedrig und deutet keinen
ausgeprägten Trend an.
Auf Grund dieser Eigenschaft kann der ADX in trendlosen Phasen Fehlalarme von zum Beispiel
Trendfolgeindikatoren filtern. Sollte während der trendarmen Periode ein als solcher nicht
unmittelbar erkennbarer Fehlalarm auftreten, kann der ADX darstellen, dass kein ausgeprägter
Trend existiert und es sich um ein Fehlsignal eines Trendfolgeindikators handelt.
3.4.4 Volumenindikatoren
Während die bisher vorgestellten Indikatoren nur auf Kursinformationen basieren, beziehen
Volumenindikatoren die gehandelten Wertpapiervolumina in die Betrachtung ein. Die Anzahl
von Wertpapieren, welche in einem bestimmten Zeitraum gekauft oder verkauft wurden, stellen
die Marktkräfte dar, welche hinter den Kursbewegung stehen. Eine starke Kursbewegung bei
niedrigen Volumina kann zum Beispiel aus rein zufälligen Gründen durch wenige Ausreißer
zustande gekommen sein. Wenn eine etwaige starke Kursbewegung durch viele
Marktteilnehmer bestätigt wird, also wenn hohe Volumina gehandelt werden, können solche
Kursentwicklungen als zuverlässiger angenommen werden. Aus diesem Grund ist es wichtig,
das jeweils gehandelte Volumen in die Analyse mit einzubeziehen.
Beispiel: CMF (Chaikin Money Flow)
Der von Marc Chainkin entwickelten CMF misst das „echte“ Kaufinteresse oder
Verkaufsinteresse, indem dieser Indikator sowohl die Stärke der Kursbewegung als auch die
jeweilige Handelskraft, also die Volumen, in die Berechnung mit einbezieht.
Berechnung:
Das Kauf- bzw. Verkaufsinteresse wird durch den CLV (Closing Location Level) ausgedrückt.
Definiert ist der CLV durch die relative Lage des Schlusskurses zu dem höchsten bzw. tiefsten
Kurs. Der CLV stellt hiermit dar, ob der Schlusskurs über oder unter dem Mittelpunkt der
betrachteten Handelsspanne (High(t)-Low(t)) liegt:
Befindet sich der Schlusskurs oberhalb der Handelsspanne, kann man von Kaufinteresse oder
Kaufdruck sprechen. Liegt der Schlusskurs unterhalb der Handelsspanne, besteht allgemein
Verkaufsinteresse oder Verkaufsdruck.
Im nächsten Schritt wird der CLV mit dem gehandelten Volumen multipliziert. Dabei wird die
Stärke des Handelsinteresses noch durch den jeweiligen Volumenanteil gewichtet. Dieses
Zwischenergebnis wird weiter geglättet, indem es durch das Durchschnittsvolumen dividiert
wird und schließlich den CMF formt:
Dabei kann man auch von Geldströmen sprechen, da der relative Kurspreis mit den
Handelsvolumen multipliziert in der Berechnung vorkommt.
43
3. Wertpapieranalyse
Verkaufssignal
Verkaufsdruck lässt sich nach.
Kaufsignal
Abbildung 3.15 CMF, Fresenius Medical Care Corp. [SCharts08]
Interpretation und Handelssignale:
Der CMF misst die Geldströme, welche in den Markt hineingehen oder diesen verlassen.
Kommt immer mehr Geld in den Markt hinein und steigt der Kurs, steigt auch der CMF. Dieses
signalisiert eine bullische Marktsituation und vorherrschenden Kaufdruck.
Der aktuelle CMF oszilliert um die Nulllinie. Dabei bedeutet die Lage des CMF zur Nulllinie
die vorherrschende Marktsituation. Liegt der CMF über der Nulllinie, dann zeigt er an, dass eine
bullische Marktsituation vorliegt und Kaufinteresse vorherrschend ist. Liegt der CMF unter der
Nulllinie, dann ist von einem bearischen Markt und vorherrschendem Verkaufsdruck
auszugehen.
Je länger der CMF über oder unter der Nulllinie verbleibt, desto ausgeprägter ist die angezeigte
Marktsituation. Gleiches gilt für den Betrag des CMF, je höher oder niedriger der CMF-Wert
aktuell liegt, desto extremer bullisch oder bearisch ist die Marktsituation.
Ein mögliches Kaufsignal liegt vor, wenn die CMF-Linie die Mittelpunktslinie von unten nach
oben schneidet, wenn also die Marktsituation zu bullisch neigt. Ein mögliches Verkaufssignal
liegt hingegen vor, wenn die CMF-Linie die Mittelpunktslinie von oben nach unten schneidet.
In diesem Fall neigt die Marktsituation zu bearisch. Mögliche Kauf- und Verkaufssignale sind in
Abbildung 3.15 entsprechend beispielhaft markiert.
Der CMF eignet sich auch gut für die Anwendung der Divergenzanalyse. Im Beispiel in
Abbildung 3.15 fällt der Kurs Anfang 2003, jedoch deutet der CMF darauf hin, dass der
Verkaufsdruck nachlässt und bald ein bullischer Markt zu erwarten ist.
44
4
Handelsstrategien
Das Ziel dieses Teils meiner Arbeit liegt darin, dem TInTo-Anwender bereits vordefinierte und
„erfolgversprechende“ Handelsstrategien anzubieten, welche relevante Kauf- oder
Verkaufssignale liefern können. Im Rahmen dieser Arbeit sollten Handelsstrategien basierend
auf technischen Indikatoren entworfen werden. Fundamentale Analyse sowie Chartanalyse
wurden in dieser Implementierung nicht berücksichtigt, können aber gegebenenfalls in einer
späteren Programmversion Verwendung finden.
Als Grundlagen für dieses Kapitel dienen die Erläuterungen der technischen Indikatoren in
Kapitel 3. Im Folgenden wird in einem ersten Schritt die Generierung der eindeutigen
Handelssignale wie Kaufen und Verkaufen ohne subjektive Elemente erläutert. Entwürfe von
elementaren Handelsstrategien, welche auf einem technischen Indikator basieren, werden
beispielhaft vorgestellt. Anschließend werden Entwürfe und Analysen von erweiterten
Handelsstrategien beispielhaft erläutert, welche neben einem technischen Indikator weitere
Handelskriterien in den Entscheidungsprozess mit einbeziehen. In einem letzten Schritt werden
analysierte Handelsstrategien in Handelspausen beispielhaft vorgestellt.
4.1 Generierung von Handelssignalen
Wie in Abschnitt 3.4 dargestellt worden ist, können technische Indikatoren Handelssignale
liefern und somit Unterstützung bei eventuellen Handelsentscheidungen geben. Damit ist es
möglich, technische Indikatoren eigenständig als eine einfache Form einer Handelsstrategie
einzusetzen. Kombinationen aus verschiedenen Indikatoren bieten darüber hinaus die
Möglichkeit, komplexe Strategien zu entwerfen.
Beispiele für in 3.4 beschriebene Methoden für die Signalgenerierung sind:
•
•
•
•
•
Die Neigung der Indikatorwertlinie
Die Lage von zwei oder drei Indikatorwertlinien zueinander
Der Abstand von Indikatorwertlinie und Kurslinie
Das Überkreuzen von zwei Indikatorwertlinien
Das Überkreuzen von Indikatorwertlinie und Mittelpunktlinie
45
4. Handelsstrategien
•
•
•
•
Das Überkreuzen von Indikatorwertlinie und Nulllinie
Das Eintreten in den überkauften oder überverkauften Bereich
Das Verlassen der jeweiligen extremen Zone
Die Divergenzen-Analyse
Handelsstrategien sollten immer eindeutige Handelssignale erzeugen, ohne subjektive Elemente
oder die Notwendigkeit weiterer Interpretationen. Dies ist eine Grundvoraussetzung, um
Handelsstrategien regelbasiert implementieren zu können. Im Weiteren genauer betrachtet
worden sind jene Methoden, welche mit vergleichsweise geringem Aufwand und ohne
subjektive Faktoren eindeutig eine der dreiwertigen Handelssituationen darstellen können:
„Kaufen“, „Verkaufen“ oder „Halten“. „Halten“ bezieht sich auf jene Fälle, wo weder ein Kaufnoch ein Verkaufssignal generiert wird.
Mögliche subjektive Faktoren können beispielsweise die Ergebnisse der Divergenzanalyse oder
die Interpretation der Neigung der Indikatorlinie beeinflussen. Beide Methoden können wichtige
Signale liefern, wenn sie richtig interpretiert werden. Abbildung 4.1 zeigt die Divergenzanalyse
von CMF am Beispiel des Kurses FMC für Anfang 2003. Zum Analysezeitpunkt März scheint
der Verkaufsdruck in einem fallenden Markt nachzulassen als ein Zeichen für eine eventuell
bevorstehende Trendumkehr hin zu einem steigenden Markt.
Analyse-Zeitpunkt
Betrachtungszeitraum : ca. 2 Monaten
Steigender CMF deuten auf fallenden
Verkaufsdruck.
Betrachtungszeitraum :
ca. 1 Monat
Fallender CMF deuten
auf steigenden
Verkaufsdruck.
Betrachtungszeitraum
: ca. 4 Monaten
Konstanter CMF
deuten auf Konstanten
Verkaufsdruck.
Abbildung 4.1 Subjektive Interpretationen, CMF, Fresenius Medical Care Corp. [SCharts08]
46
4. Handelsstrategien
Bei detaillierter Betrachtung zeigt sich jedoch, dass je nach gewähltem Betrachtungszeitraum
unterschiedliche Analyseergebnisse möglich sind:
• kurzfristig (Betrachtungszeitraum 1 Monat) ergibt sich ein steigender Verkaufsdruck
• mittelfristig über 2 Monate scheint der Verkaufsdruck zu fallen, während
• über 4 Monate betrachtet der Verkaufsdruck konstant bleibt.
Die Teildarstellungen in Abbildung 4.1 zeigen beispielhaft diese verschiedenen
Interpretationsmöglichkeiten. Da die Divergenzanalyse also je nach Situation die subjektive
Einschätzung des Analysten notwendig macht, wird diese nicht für die Verwendung in der
automatischen Signalgenerierung empfohlen. Möglicherweise kann diese dennoch unter
Verwendung komplexerer adaptiver Analysen und gegebenenfalls Künstlicher Intelligenz in
zukünftigen Versionen des TInTo-Programms eingesetzt werden.
Im Gegensatz zur Divergenzanalyse oder zur Neigung der Indikatorlinie liefern die folgenden
Methodiken eindeutige Handelssignale ohne den Einfluss subjektiver Faktoren:
•
•
•
•
•
•
•
Die Lage von zwei oder drei Indikatorlinien zueinander
Der Abstand von Indikatorlinie und Kurslinie
Das Überkreuzen von zwei Indikatorlinien
Das Überkreuzen von Indikatorlinie und Mittelpunktlinie
Das Überkreuzen von Indikatorlinie und Nulllinie
Das Eintreten in den überkauften oder überverkauften Bereich
Das Verlassen der jeweiligen extremen Zone
Auf Grund ihrer eindeutigen Handelssignale sind hauptsächlich diese Methodiken in den in den
folgenden Abschnitten dargestellten Handelsstrategien verwendet worden. Beispielhaft zeigt
Abbildung 4.2 eindeutige Handelssignale eines Kurses bei Verlassen der überkauften oder
überverkauften Zonen.
Verkaufssignale
Kaufsignale
Abbildung 4.2 Handelssignale, RSI, Microsoft Corp. [SCharts08]
4.2 Elementare Handelsstrategien
Eine Vielzahl von Indikatoren können einzelstehend Handelssignale liefern und als eine
Handelsstrategie Verwendung finden. Elementare Handelsstrategien basieren auf einem einzigen
Indikator und dessen sogenannter „starren Signallinie“. Starre Signallinie ist eine Hilfslinie für
technische Indikatoren zur Generierung von Handelssignalen. Starre Signallinien haben einen
über Analysezeitraum immer konstanten Wert.
Zu diesen elementaren Strategien gehören Vielzahl von Oszillator-basierte Strategien
beispielsweise die RSI-basierte oder die CMF-basierte Strategie. Dabei verwenden diese
47
4. Handelsstrategien
elementaren Handelsstrategien beispielsweise folgende starre Signallinien, um Handelssignale
zu erzeugen:
• Die Nulllinie
• Die Mittelpunktslinie
• Die Linien, welche extremen Marktsituationen abgrenzen.
Nulllinie, CMF
Verkauf
Verkauf
Kauf
Kauf
Kauf
Mittelpunktslinie, RSI
Verkauf
Kauf
Kauf
Die extremen Zonen abgrenzenden Linien, RSI
Verkauf
Kauf
Abbildung 4.3 Signallinien und Handelssignale, [SCharts08]
Das folgendes Beispiel zeigt die Handelslogik einer RSI-basierten Strategie, welche als starre
Signallinien zwei jeweils die extremen Zonen abgrenzende Linien verwendet:
Handelslogik:
• Kaufe ein Wertpapier, wenn die RSI-Linie den Wert 30 übersteigt, die 30er starre Signallinie
also von unten nach oben schneidet. Dies signalisiert, dass der Kurs die überverkaufte Zone
verlässt.
• Verkaufe ein Wertpapier, wenn die RSI-Linie den Wert 70 unterschreitet, die 70er starre
Signallinie also von oben nach unten schneidet. Dies signalisiert, dass der Kurs die überkaufte
Zone verlässt.
Ein Nachteil dieser Strategie ist unter anderem, dass diese Strategie sehr wenige Signale liefert.
Um mehr Signale zu erzeugen, können die Werte der Signallinien beispielsweise wie folgt
geändert werden:
• Kaufe ein Wertpapier, wenn die RSI-Linie den Wert 20 übersteigt, die 20er starre Signallinie
also von unten nach oben schneidet.
• Verkaufe ein Wertpapier, wenn die RSI-Linie den Wert 60 unterschreitet, die 60er starre
Signallinie also von oben nach unten schneidet.
48
4. Handelsstrategien
Eine adaptive Anpassung der Werte für die starren Signallinien durch den Anwender sind in
dieser Arbeit durch entsprechende Eingabefunktionen realisiert worden. Die detaillierte
technische Umsetzung wird in den nächsten Kapiteln beschrieben.
4.3 Erweiterte Handelsstrategien
Mit dem Ziel, eine erfolgversprechende Handelslogik unter allen Marktsituationen zu entwerfen
wurde in der Voranalyse festgestellt, dass kein einzelner Indikator allein universell in jeder
Situation rentable Handelssignale liefert. Daher sind erweiterte Handelsstrategien entworfen
worden, welche neben einem Indikator durch weitere Handelskriterien ergänzt werden.
4.3.1 Kombination technischer Indikatoren
Technische Indikatoren sind für unterschiedliche Verwendungszwecke entwickelt worden und
enthalten daher auch verschiedene und meist einseitige Eigenschaften. Gesucht ist demnach eine
Kombination sich ergänzender Indikatoren, welche wenig bis keine redundante Informationen
enthalten. Informationsredundanz würde nur den Verarbeitungsaufwand erhöhen ohne das
jeweilige Handelsergebnis zu verbessern. Abbildung 4.4 zeigt Indikatoren, welche sehr ähnlich
verlaufen und keine zusätzlichen neuen Informationen liefern und deshalb auch nicht in einer
Handelslogik kombiniert werden sollten:
Abbildung 4.4 RSI, CCI, Slow Stochastics, Hewlett-Packard Co. [SCharts08]
Um eine sich positiv ergänzende Kombination verschiedener Indikatoren ohne
Informationsredundanz zu finden, wurden diese nach ihrem Verwendungszweck, ihren
hauptsächlichen Eigenschaften und ihrer jeweiligen Aussage klassifiziert.
49
4. Handelsstrategien
Die folgende Aufstellung orientiert sich an einem Artikel in [SCharts08].
Kategorie
Beispiele
Trendfolge
-indikatoren
SMA
Verwendungszweck
RSI
CCI
• Das Überkreuzen
der MA-Linie
• Die Neigung der
Trendlinie
• Bessere Signale
in der starken
Trendphase
• Trägheit
Überkaufte- /
Überverkaufte
Marktsituation
• Das Verlassen
von extremen
Bereiche
• Die Divergenz
Analyse
• Bessere Signale
in der trendlosen
Phase
• Gleitende
Signallinie bei
Stochastics
Kurz- / Mittelfristige
Kursbewegung
• Das Überkreuzen
der
Mittelpunktslinie
• Die Divergenz
Analyse
• Bessere Signale
in der trendlosen
Phase
• Trendfolge
Eigenschaft bei
MACD
Stochastics
Zentrierte
Oszillatoren
Momentum
Besonderheiten
Mittel- / Langfristige
Trendrichtung
EMA
Bandbegrenzte
Oszillatoren
Handelssignale
ROC
MACD
Trendintensitäts
-Indikatoren
ADX
Trendintensität
• Die Neigung der
Trendlinie
• Trendfilter
• Oszillator
Volumen
-indikatoren
CMF
Marktkräfte mit
Handelsvolumen
• Das Überkreuzen
der
Mittelpunktslinie
• Die Divergenz
Analyse
• Trendbestätigung
• Oszillator
Tabelle 4.1 Klassifikation technischer Indikatoren nach Verwendungszweck
Oszillatoren wurden hierbei weiter unterteilt, haben aber allgemein gemeinsame Eigenschaften,
zum Beispiel einen möglichen zukünftigen Trendwechsel erkennen zu können. Oszillatoren sind
vorausschauender und empfindlicher in ihrer Reaktion als Trendfolgeindikatoren und liefern
daher häufiger Handelssignale. Einerseits bedeutet dies mehr Handelschancen, andererseits
liefern Oszillatoren aber auch mehr Fehlsignale als Trendfolgeindikatoren. Die weitere
Unterteilung der Oszillatoren ergab sich aus der unterschiedlichen Zielsetzung, mit welcher ein
Indikator entwickelt wurde. In Tabelle 4.1 wurden Verwendung, Signale und Besonderheiten
aufgelistet, welche das Ziel beim Entwurf der Indikatoren waren und deren jeweiligen
vorherrschendem Charakter entsprechen. Handelssignale wurden nur aufgeführt sofern es sich
nicht um subjektive Faktoren handelt. Signale mit subjektiven Einflussgrössen wurden in
Tabelle 4.1 gestrichen dargestellt. Besonderheiten in den Eigenschaften des MACDs werden im
folgenden Abschnitt detailliert behandelt.
Im Folgenden werden beispielhaft analysierte Handelsstrategien mit ihrer jeweiligen:
• grundlegenden Idee
• Handelslogik sowie
• Analyseergebnissen
dargestellt.
50
4. Handelsstrategien
Auf Basis der Analyseergebnisse wird auch eine Empfehlung für oder gegen eine
Implementierung der entsprechenden Handelsstrategie in das TInTo-System abgegeben. Im
Weiteren werden vier erweiterte Handelsstrategien beispielhaft vorgestellt. Als Hinweis sei
vorweg genommen, dass die ersten beiden Handelsstrategien letztlich enttäuschende
Handelsergebnisse liefern, jedoch Potential für zukünftige Weiterentwicklungen von
Handelsstrategien in TInTo bieten.
4.3.2 SMA + ADX
Idee dieser Strategie war es, Handelssignale mittels SMA-Überkreuzen nur in der starken
Trendphase zu verwenden und dadurch Fehlsignale in der seitwärts Phase zu reduzieren. Da
SMA-Überkreuzen viele Fehlsignale in der Seitwärtsphase liefert, soll der ADX als
Filterindikator für die Trendstärke dienen. Diese Kombination wurde gewählt, da die Strategie
mittels SMA-Überkreuzen unterschiedlicher Perioden in Trendphasen allgemein sehr gute
Signale geliefert hat. In der Literatur sowie Fachartikeln werden oft beide Indikatoren als sich
gut ergänzend beschrieben. Die vorangegangene Diplomarbeit zum Thema TInTo empfiehlt
ebenfalls die weitere Untersuchung der Anwendbarkeit dieser Indikatorenkombination.
Handelslogik:
• Kaufe ein Wertpapier, wenn der 21-Tage-SMA den 89-Tagen-SMA (Gleitende Signallinie)
von unten nach oben schneidet und gleichzeitig der 14-Tage-ADX größer als 25 ist.
• Verkaufe ein Wertpapier, wenn der 21-Tage-SMA den 89-Tagen-SMA (Gleitende Signallinie)
von oben nach unten schneidet und gleichzeitig der 14-Tage-ADX größer als 25 ist.
Analyse:
Das Handelsergebnis der Simulation war enttäuschend. Getestet wurde mit dem in dieser Arbeit
geschriebenen Programm „StrategyBuilder“, welches den gesamten Handelsgewinn im
Analysezeitraum basierend auf historischen Daten berechnet. Auch unter Verwendung
unterschiedlicher Berechnungsparameter (zum Beispiel 50-Tage, 200-Tage für SMA und 20Tage für ADX) hat sich das Ergebnis nicht wesentlich verbessert. Als ein Testbeispiel liefert
diese Strategie 5,88% Rendite im Analysezeitraum von 2004 bis 2007 für das
Analysewertpapier Dow Jones Industrial Average. Zum Vergleich: die nur SMA-Überkreuzen
basierte Strategie erzielt im selben Zeitraum 11,34% Rendite2.
Worin hat das schlechte Handelsergebnis seine Ursache?
Der SMA ist ein Trendfolgeindikator, welcher als eine seiner grundlegenden Eigenschaften dem
Trend folgend, also allgemein zeitlich verzögert oder träge reagiert. Der ADX ist ein
Trendintensitätsindikator mit Oszillatoreigenschaften, welcher schneller als der SMA reagiert
und frühzeitig die Intensität des Trends signalisiert.
Vor bzw. nach wichtigen Trendumkehren:
In Kombination beider Indikatoren verpasst diese Strategie wichtige Signale generiert aus dem
SMA-Überkreuzen und verursacht in vielen Fällen große Verluste. Im Beispiel in Abbildung 4.6
ist dargestellt, dass das Verkaufssignal des SMA im Februar 2004 nicht genutzt werden konnte,
da die Trendintensität (gemäß ADX) schon unter 25 lag. Das Analyseergebnis zeigt, dass
2 Detaillierte Testergebnisse und Testbedingungen sind in Anhang 4-A erhältlich.
51
4. Handelsstrategien
wichtige SMA Überschneidungen, welche im Allgemeinen eine Trendumkehr signalisieren,
zeitlich verzögert eintreten zu einem Zeitpunkt, wenn die Trendintensität schon nachgelassen
hat. Somit kann das SMA-Überkreuzen Signal gemäss dieser Handelslogik nicht mehr
berücksichtigt werden.
In Seitwärtsmärkten:
Wie in Abschnitt 3.4.1 beschrieben, hat das SMA-Überkreuzen die Besonderheit in
Seitwärtsmärkten, dass die SMA-Linien eng beieinander liegen. Dies führt dazu, dass jede
kleine Bewegung der kurzfristigen SMA-Linie die langfristige SMA-Linie schneidet und ein
Handelssignal auslöst. Daher entstehen in dieser Marktsituation viele Fehlsignale wobei zu
Ende dieser Phase auch ein signifikantes und nicht zeitlich verzögertes Signal entstehen kann. In
dieser trendlosen Phase ist der ADX-Wert häufig kleiner als 25, weshalb diese Handelslogik
auch viele wichtige gewinnbringende Signale verwirft, welche zu Ende der Seitwärtsphase
ausgelöst worden sind. Abbildung 4.5 zeigt, dass ein signifikantes Kaufsignal im April 2003
abgelehnt worden ist, als die Trendintensität schwach, der ADX-Wert unter 25 war.
In der schwachen Trendphase:
SMA-Überkreuzungen sind signifikante Signale in einer Trendphase, welche den vollen
Handelsgewinn ermöglichen können, siehe Beispiel Trendphase 2003 in Abbildung 4.5
Signifikante Signale entstehen allerdings oft in der schwachen Trendphase, weshalb diese
Handelslogik nicht gut funktionieren konnte, da der ADX auch diese signifikanten Signale in
der schwachen Trendphase filtert. Durch kürzere Berechnungsperioden des SMA kann man
diesen Indikator so gestalten, dass wichtige Verkaufssignale früher, also noch in der Trendphase
entstehen. Signifikante Kaufsignale entstehen allerdings immer noch früh oder dadurch sogar
noch früher in der Seitwärtsphase und konnten auch mit kürzeren SMA Perioden nicht korrigiert
werden.
Ergebnis:
Obwohl diese Strategie gerade nach dieser Handelslogik enttäuschende Handelsergebnisse
liefert, ergänzen sich die beiden Indikatoren SMA und ADX prinzipiell gut. ADX filtert in der
Tat viele Fehlsignale aus dem SMA-Überkreuzen in der trendlosen Phase und der ADX erkennt
Trendwechsel zeitiger als der SMA. Im Beispiel in Abbildung 4.5 signalisiert der ADX eine
sinkende Trendintensität von September bis November 2003 und deutet darauf hin, dass der
Kursanstieg nachlassen wird und ein Trendwechsel bevorstehen könnte. Dies signalisiert der
ADX deutlich vor dem Verkaufssignal aus dem Überkreuzen der SMA-Linien, welches erst im
Februar 2004 erfolgt. Auf Grund der Analyseergebnisse wird empfohlen, diese Handelsstrategie
weiter zu untersuchen um gegebenenfalls eine optimale Abstimmung aus SMA und ADX zu
finden.
52
4. Handelsstrategien
Verkauf
Verkauf
Kauf
Trendintensität sinkt
Abbildung 4.5 21-Tage-SMA (blau oben), 89-Tage-SMA (rot oben), 14-Tage-ADX (schwarz unten),
Intel Corp. [SCharts08]
4.3.2 SMA + CMF
Grundlegende Idee dieser Handelsstrategie ist eine Kombination aus dem Trendfolgeindikator
SMA-Überkreuzen mit dem Volumenindikator CMF. Vergleichbar mit der zuvor beschriebenen
Strategie (SMAC+ADX) ist das Ziel hierbei wiederum, Fehlsignale oder schwache Signale des
SMA-Überkreuzens zu eliminieren. Der CMF gibt dazu zum jeweiligen Zeitpunkt an, ob ein
bärischer oder bullischer Markt vorherrscht. In Kombination mit dem SMA-Überkreuzen soll
dann kein Kaufsignal abgegeben werden, wenn ein bärischer Markt vorherrscht. Ebenso soll im
bullischen Markt ein mögliches Verkaufssignal mittels SMA-Überkreuzen unterdrückt werden.
Handelslogik:
• Kaufe ein Wertpapier, wenn der 50-Tage-SMA den 200-Tagen-SMA (Gleitende Signallinie)
von unten nach oben schneidet und gleichzeitig der 20-Tage-CMF größer oder gleich null ist.
• Verkaufe ein Wertpapier, wenn der 50-Tage-SMA den 200-Tagen-SMA (Gleitende
Signallinie) von oben nach unten schneidet und gleichzeitig der 20-Tage-CMF kleiner als null
ist.
Analyse:
Getestet wurde diese Handelsstrategie wieder mit dem Programm „StrategyBuilder“ in TInTo.
Verglichen mit den Ergebnissen aus nur dem Überkreuzen der SMA-Linien stellt diese Strategie
keine wesentliche Verbesserung dar. Als ein Testbeispiel liefert diese Strategie 12,97% Rendite
über 3 Jahre von 2004 bis 2007 für das Analysewertpapier Dow Jones Industrial Average (DJI).
Ein Handel nur nach SMA-Überkreuzen dagegen liefert im selben Zeitraum lediglich 11,34%.
In der Simulation filtert der CMF einige Fehlsignale aus dem SMA-Überkreuzen in der
analysierten Seitwärtsphase. Abbildung 4.6 zeigt beispielhaft ein abgelehntes SMA Fehlsignal
53
4. Handelsstrategien
in der trendlosen Phase im Mai 2005. Der 50-Tage-SMA schneidet hier den 200-Tage-SMA von
oben nach unten und signalisiert damit eine Verkaufsempfehlung. Gleichzeitig weist ein CMF
mit Wert größer null auf einen noch vorherrschenden Kaufdruck, einen bullischen Markt hin.
Das Verkaufssignal mittels SMA-Überkreuzen wird zu diesem Zeitpunkt also abgelehnt.
Wie auch in der Strategie (SMAC+ADX) liegt eine prinzipielle Gefahr dieser Handelsstrategie
darin, dass signifikante Signale mittels SMA-Überkreuzen wegen der zeitlichen Verzögerung als
Fehlsignale betrachtet und durch die CMF Bedingung eliminiert werden könnten. So kann der
SMA mit zeitlicher Verzögerung ein wichtiges Signal liefern, während der in Echtzeit dem
Marktvolumen folgende CMF schon eine sich gegebenenfalls geänderte Marktsituation
widerspiegelt. Deshalb ist in CMF Charts oft zu sehen, dass dieser vorausschauend zur
Kursbewegung reagiert und zukünftige Kursbewegungen prognostizieren kann. Im konkreten
Beispiel in der Abbildung 4.6 stieg der Kurs Anfang 2004 weiter an bzw. tendierte leicht
seitwärts, während der CMF schon einen sich abschwächenden Kaufdruck signalisierte und
einen möglichen Kursrückgang prognostizierte.
Diese vorgestellte Handelsstrategie SMAC+CMF hat das Handelsergebnis insgesamt ebenfalls
nicht wesentlich verbessert. Allerdings haben Volumenindikatoren oder auch die jeweiligen
Handelsvolumia selbst eine besondere Bedeutung in der Modellierung von Handelsstrategien,
führen sie doch eine neue Dimension von Marktinformationen in die Betrachtung mit ein. Auch
wenn im konkreten Beispiel nicht erfolgreich, so wird doch empfohlen, weitere Untersuchungen
zur Kombination von Kursverlaufsindikatoren und Volumenindikatoren in möglichen
Handelsstrategien zu untersuchen.
Verkauf
Verkauf
Kauf
Kauf
Kauf
Verkauf
Kauf
Kauf
Kauf
Kauf
Kauf
Kauf
Verkauf
Verkauf
Abbildung 4.6 50-Tage-SMA (blau oben), 200-Tage-SMA (rot oben), CMF (schwarz unten),
Dow Jones Indusrial Average. [SCharts08]
54
4. Handelsstrategien
4.3.3 SMAC (SMA Crossover)
Die zuvor untersuchten Handelsstrategien in 4.3.1 und 4.3.2 lieferten weitgehend enttäuschende
Resultate aufgrund der zeitlichen Verzögerung, mit welcher die MA Indikatoren Handelssignale
abgeben. Die nun in diesem Abschnitt vorgeschlagene Strategie mit SMA-Überkreuzen
verwendet keinen weiteren unterschiedlichen Indikator, sondern vielmehr die Lage und den
Abstand zweier SMA-Linien mit dem Ziel, Fehlsignale in der seitwärts Phase zu eliminieren.
Dabei soll ein geringer Abstand zweier SMA-Linien auf eine Seitwärts- oder eine
trendschwache Phase hinweisen. Im Beispiel in der Abbildung 4.6 werden Fehlsignale zwischen
Mitte und Ende 2005 generiert, als der Abstand beider SMA-Linien sehr gering war.
Handelslogik:
• Kaufe ein Wertpapier, wenn nach dem Überkreuzen beider Linien die 50-Tage SMA-Linie um
100 höher als die 130-Tage SMA-Linie liegt.
• Verkaufe ein Wertpapier, wenn die 50-Tage SMA-Linie die 130-Tage SMA-Linie von oben
nach unten schneidet.
Analyse:
Im Vergleich zu den bereits untersuchten Strategien lassen sich mit dieser Strategie bessere
Handelsergebnisse erzielen. Diese Handelsstrategie wurde als „SMA Crossover (SMAC)“ im
StrategyBuilder in TInTo umgesetzt und steht dort den Anwendern zur Verfügung. Dabei ist
eine Eingabefunktion zum Festlegen des Abstandes beider SMA-Linien für Kauf- und
Verkaufssignale implementiert. Mit Hilfe dieser Eingabe kann der Abstand der SMA-Linie für
ein Handelssignal gemäß oben genannter Logik gewählt und damit die Empfindlichkeit der
Strategie für Fehlsignale eingestellt werden. Die genaue technische Umsetzung wird in
weiteren Details in den Kapiteln 6 und 7 beschrieben.
In der Simulation für die analysierte Seitwärtsphase filtert diese Strategie die Fehlsignale aus
dem SMA-Überkreuzen heraus. Je nach gewähltem Abstand beider SMA-Linien kann man
mehr oder weniger Signale in der trendschwachen Phase generieren sowie die Zeitpunkte der
erzeugten Signale beeinflussen. Die im Beispiel vorgestellte Handelslogik generiert Kaufsignale
nur, wenn sich der Aufwärtstrend in dem durch die Eingabefunktion vorgegebenen Maß
entwickelt hat. Damit konnten fehlerhafte Kaufsignale in der trendschwachen Phase eliminiert
werden und im Ergebnis generiert diese Strategie die gewünschten signifikanten Signale. Ein
möglicher Nachteil dieser Strategie wären gegebenenfalls entgangene Gewinne durch Abwarten
auf den sich entwickelnden Abwärtstrend bevor ein relevantes Kaufsignal entsteht. Im Ergebnis
eliminiert diese Strategie Fehlsignale, generiert allerdings noch trägere Kaufsignale.
In der praktischen Anwendung liefert diese Strategie gute Handelsergebnisse, wenn man mitteloder langfristig und generell in einem Markt mit ausgeprägtem Trend handelt. Unter diesen
Bedingungen ist dann der möglicherweise entgangene Gewinn im Vergleich zum gesamten
erzielten Gewinn vernachlässigbar. Eine weitere ausgeprägte Eigenschaft dieser Strategie ist
ihre Trendfolge, wodurch in einem stark fallenden Markt nur relativ geringe Verluste entstehen.
Eine detaillierte Darstellung der Handelsergebnisse der verschiedenen Strategien beinhaltet
Kapitel 8.
In einer Beispielanalyse liefert diese Handelsstratege mit dem zusätzlichen Handelskriterium
des Abstandes der beiden SMA-Linien eine Rendite von 68% über die 5 Jahre von 2004 bis
2008 für das Testwertpapier GDax (GDAXI). Im Vergleich dazu erzielt die Strategie nur auf
55
4. Handelsstrategien
Basis des SMA-Überkreuzens lediglich eine Rendite von 62% unter sonst identischen
Bedingungen. Mit dem Testwertpapier MSFT über 4 Jahre von 2004 bis 2007 ist der
Renditeunterschied noch deutlicher, wobei die Strategie mit dem zusätzlichen Handelskriterium
37% Rendite liefert und die Strategie mit nur SMA-Überkreuzen lediglich 26%3 .
4.3.4 MACDCP(MACD Crossover Plus)
Weiterhin sollte eine Lösung gefunden werden, um die zuvor dargestellten MA-typischen
Verzögerungen zu reduzieren und profitablere Handelsergebnisse zu erzielen. Eine sinnvolle
Kombination aus Oszillatoren und Trendfolgeindikatoren war gesucht.
?
Trendfolgeindkator:
Trendrichtung
Zeitliche Verzögerung
Trendphase
Oszillatoren:
Sensibeler
Seitwärtsphase
Zu frühe Signale
Verschiedene Recherchen haben zu einem bereits existierenden Lösungsansatz von Gerald
Appel geführt. Vor über 30 Jahren hatte er mit dem Ziel, mittels MA Indikatoren frühzeitige
Handelssignale zu generieren, den MACD (Moving Average Convergence Divergence)
entwickelt.
Im Folgenden werden wesentliche Details des MACD erläutert sowie eine erfolgsversprechende
Handelsstrategie auf Basis des MACD dargestellt. Diese Einführung basiert auf Artikeln aus
[CT06] in [TSO08], [SCharts08]. Anregungen zur Handelslogik sind dem Vorschlag von John F.
Murphy in seinem Artikel „Ten Laws of Technical Trading“ in [SCharts08] entnommen.
Einführung zur MACD (Moving Average Convergence Divergence):
Der MACD ist ein einzigartiger Indikator, welcher Trendfolge- und Oszillatoreigenschaften
miteinander verbindet. Durch seine speziellen Eigenschaften reduziert der MACD das Problem
der MA-typischen Zeitverzögerung behält jedoch die Fähigkeit bei, dem vorherrschenden
Markttrend zu folgen.
Mathematisch stellt sich die Konstruktion des MACD erstaunlich simpel als die Differenz
zweier EMAs (Exponential Moving Average) dar:
3 Detaillierte Testergebnisse und Testbediungungen sind in Anhang 4-B aufgeführt.
56
4. Handelsstrategien
In dieser Gleichung ist t der fortlaufende Zeitpunkt des Analyseszeitraums und sind n1 und n2
die Berechnungsperioden. Bei genauer Betrachtung ist erkennbar, dass diese Gleichung eine
Kombination der Formeln für den Indikator „EMA“ sowie den Oszillator „Momentum“
darstellt. Typischerweise berechnet sich der Oszillator als Differenz aus zwei Schlusskursen, in
unserem Fall als Differenz aus zwei EMA Werten.
Was macht den MACD so besonders und warum ist er bei vielen Analysten so beliebt?
Vermutlich liegt diese Beliebtheit an der Eigenschaft des MACD, die MA-typische zeitliche
Trägheit aufzuheben.
Verkauf
MACD
EMA
Kauf
Verkauf
Verkauf
Kauf
Kauf
Abbildung 4.7 12-Tage-EMA (blau oben), 26-Tage-EMA (rot oben), 12-26-9-Tage-MACD (schwarz unten),
MSFT Corp. [SCharts08]
In der Abbildung 4.7 ist der MACD als schwarze Kurve im unteren Graphen dargestellt. Diese
MACD-Linie ergibt sich aus der Differenz der im oberen Graph gezeigten EMAs.
Interpretation des MACD:
Verläuft die kurzfristige EMA-Linie unterhalb der langfristigen Linie, ergibt sich mathematisch
gemäß obiger Gleichung ein negativer MACD. Dieser signalisiert einen bärischen Markt, d.h.
einen Markt unter Verkaufsdruck. Umgekehrt ergibt sich ein positiver MACD, wenn der EMA
der kurzen Periode oberhalb des EMA der langen Periode verläuft. Ein positiver EMA
signalisiert einen bullischen Markt unter Kaufdruck. Kreuzen sich beide EMA Linien, so ergibt
sich ein MACD von null.
In einer „traditionellen“ Anwendung des EMA-Überkreuzens würden sich in Abbildung 4.7
beispielsweise am 9. April und am 23. Juni Kauf- bzw. Verkaufssignale ergeben, jeweils dann,
wenn sich die beiden EMA-Linien überkreuzen. Zu diesen Zeitpunkten schneidet der MACD
seine Nulllinie von unten nach oben, wenn die kurzperiodige EMA-Linie die langperiodige
ebenfalls von unten nach oben schneidet. Der MACD bewegt sich aus dem negativen in den
positiven Bereich. Aus dieser Anwendung der EMA-Überkreuzung alleine ergibt sich noch
keine neue profitablere Handelsstrategie. Dazu müssten überkaufte oder überverkaufte
Marktsituationen sicher erkannt werden.
57
4. Handelsstrategien
In Abbildung 4.7 ist erkennbar, dass, wenn sich der MACD an seinem lokalen Minimum
befindet, der Abstand der beiden EMAs ist lokal am größten in einem Abwärtstrend des Kurses.
Dieses kann man als überverkaufte Marktsituation interpretieren. Wenn sich der MACD
hingegen an seinem lokalen Maximum befindet, dann ist der Abstand beider EMAs lokal am
größten und im Aufwärtstrend. Dieses kann man als überkaufte Marktsituation interpretieren.
Um nun ein Handelssignal in diesen extremen Marktsituationen zu generieren, wird der EMA
der MACD Linie als gleitende Signallinie verwendet. Diese Signallinie ist im unterem Graphen
in der Abbildung 4.7 in Rot dargestellt. Ein Kaufsignal liegt dann vor, wenn die MACD-Linie
die Signallinie von unten nach oben schneidet. Ein Verkaufssignal liegt vor, wenn die MACDLinie die Signallinie von oben nach unten schneidet. Im konkreten Beispiel am Kurs von
Microsoft im Frühjahr 2007 ergibt sich am 18. März ein Kaufsignal, ein Verkaufssignal
wiederum am 18. Mai. Beide Signale entstehen jeweils vor den EMA-Überkreuzungspunkten.
Die jeweils erzielbaren Kursgewinne aus EMA bzw. MACD sind für diese Fäll rechts neben den
Graphen in Abbildung 4.7 dargestellt.
Aus diesen Erkenntnissen ergibt sich folgende Handelslogik.
Handelslogik:
• Kaufe ein Wertpapier, wenn die MACD-Linie die Signallinie von unten nach oben schneidet
und gleichzeitig die MACD-Linie und die Signallinie kleiner als null sind.
• Verkaufe ein Wertpapier, wenn die MACD-Linie die Signallinie von oben nach unten
schneidet und gleichzeitig die MACD-Linie und die Signallinie größer als null sind.
Analyse:
Diese Handelsstrategie wurde als MACDCP (MACD Crossover Plus) im StrategyBuilder in
TInTo umgesetzt. Die genaue technische Umsetzung wird in weiteren Details in den Kapiteln 6
und 7 beschrieben. Im Vergleich zur Strategie mit nur EMA-Überkreuzen lässt sich mit dieser
Strategie besonders im volatilen Markt ein besseres Handelsergebnis erzielen, welches
vergleichsweise näher an dem maximalen Kursgewinn der jeweiligen Handelsperiode verläuft.
Eine detaillierte Darstellung der Handelsergebnisse der verschiedenen Indikatoren beinhaltet
Kapitel 8.
Diese Handelsstrategie ist spekulativ und disziplinierend, schlägt sie doch vor, nur in bärischen
Märkten zu investieren und in bullischen zu verkaufen. Dabei unterscheidet die MACD
Nulllinie zwischen beiden Marktsituationen. Dieser Ansatz ist konträr zu instinktivem
menschlichen Handeln, erwartet man doch tendenziell eher zu verkaufen, wenn alle anderen
Marktteilnehmer dies auch tun bzw. zu kaufen, sollte dies der vorherrschende Trend sein.
Verkäufe in bärischen Märkten sind nach dieser Logik sogar ausgeschlossen und man ist
gezwungen, auf eine bullische Marktsituation zu warten. Diese Strategie zielt darauf ab, vollen
Kursgewinn aus der Differenz zwischen niedrigstem und höchstem Kurswert zu erzielen, und
spekuliert auf eine Umkehr der Kursbewegung in der jeweils extremen überkauften oder
überverkauften Marktsituation.
Schwache oder Fehlsignale können jedoch auch hier entstehen, wenn der MACD nahe der
Nulllinie verläuft. Um diese Signale zu eliminieren, kann die Handelslogik beispielsweise wie
folgt erweitert werden:
58
4. Handelsstrategien
• Kaufe ein Wertpapier, wenn die MACD-Linie die Signallinie von unten nach oben schneidet
und gleichzeitig die MACD-Linie und die Signallinie kleiner als -0,3 sind.
• Verkaufe ein Wertpapier, wenn die MACD-Linie die Signallinie von oben nach unten
schneidet und gleichzeitig die MACD-Linie und die Signallinie größer als +0,3 sind.
•
Die Werte -0,3 sowie 0,3, welche die nur gewünschten starken Marktsituationen abgrenzen,
müssen je nach Wertpapier adaptiv festgelegt werden. Diese Möglichkeit für die Abgrenzung
von Marktsituationen ist im TInTo-StrategyBuilder durch eine Eingabefunktion implementiert
worden. In einem Testbeispiel für Aktien der Microsoft Corp. liefert die Strategie mit dieser
adaptiven Abgrenzung von Marktsituationen mit Werten von -0,3 und 0,3 im Ergebnis 81%
Rendite über die 4 Jahre von 2004 bis 2007. Verglichen damit liefert die Strategie mit der
Abgrenzung von Marktsituationen mittels Nulllinie eine Rendite von nur 59% über die 4 Jahren
von 2004 bis 2007 4.
Über diese Betrachtung hinaus können Fehlsignale entstehen, wenn zum Beispiel in einer
überkauften Marktsituation weitere Kurssteigerungen und nicht die erwartete Trendumkehr
erfolgen. Dann liefert auch diese Strategie MACDCP zu frühe Handelssignale.
Überkauft
Überverkauft
Überkauft
Überverkauft
Abbildung 4.8 14-Tage-RSI, 20-Tage-CCI, 12-26-9-Tage-MACD, MSFT Corp. [SCharts08]
4 Detaillierte Testergebnisse sind in Anhang 4-C aufgeführt.
59
4. Handelsstrategien
Vergleich mit weiteren Oszillatoren:
Ähnlich wie der MACD verwenden andere Oszillatoren wie RSI oder CCI überkaufte oder
überverkaufte Marktsituationen, um Handelssignale zu generieren. Kaufsignale entstehen dann,
wenn die jeweilige Indikatorlinie den unteren extremen Bereich verlässt. Analog ergeben sich
Verkaufssignale bei Verlassen des oberen extremen Bereichs. Die Indikatoren MACD, CCI und
der RSI wurden an den Kursverläufen des Dow Jones, DAX, Microsoft und Nasdaq getestet und
die Ergebnisse beispielhaft für Microsoft in Abbildung 4.8 dargestellt. Dabei stellte sich heraus,
dass der RSI signifikante, aber sehr wenige Signale liefert. Der CCI liefert viele Signale,
darunter auch eine Reihe von Fehlsignalen oder zu frühen Signalen. Im Vergleich liefert der
MACD bessere Signale, wobei diese beschriebene Strategie auch noch die Abgrenzungslinien
für Marktsituationen verwendet, um nur gewünschte Signale herauszufiltern.
Im TInTo-StrategyBuiler stehen neben diesen zwei vorgestellten erweiterten Strategien SMAC
und MACDCP noch weitere 6 analysierte erweiterte Handelsstrategien für den Anwender zur
Verfügung, welche durch weitere Handelskriterien ebenfalls bessere Handelsergebnisse erzielen.
Auf eine detaillierte Erläuterung dieser Strategien wurde hier jedoch aus Platzgründen
verzichtet. Eine Übersicht bietet Kapitel 7.
4.4 Kombinierte Strategien mit Investition in Handelspausen
Um zusätzliche Gewinne während einer möglichen Handelspause zu erzielen, können Anleger
das verfügbare Kapital in alternative Anlageformen investieren. Je länger die Handelspause
ausfällt, umso bedeutsamer werden diese alternativen Anlageformen für die Gesamtrendite.
Kauf
Handelspause
Verkauf
Verkauf
Kauf
Handelspause
Kauf
Handelspause
Verkauf
Fortlaufender
Zeitpunkt
Beispiel: Strategie MACDCP + CD (Combine With Cash Deposit)
Als eine sichere Variante für eine Investition in der Handelspause kann das Kapital in
festverzinsliche Produkte investiert werden. Im Allgemeinen werden Zinsprodukte attraktiver in
Märkten mit fallenden Aktienkursen. Dies resultiert daher, dass Unternehmen sich weiter
Kapital beschaffen müssen. Ist der Eigenkapitalmarkt (Aktienmarkt) für Anleger zeitweise
unattraktiv, so weichen Unternehmen in den alternativen Markt (Schuldverschreibungen,
Bonds) zur Kapitalbeschaffung aus.
Folgende Strategie kombiniert die zuvor erläuterte Strategie MACDCP (MACD Crossover Plus)
als Aktive-Markt-Strategie mit einer Kapitalanlage während der Handelspause auf einem
verzinsten Verrechnungskonto. Der zusätzliche Ertrag ergibt sich aus dem erzielten Zins auf
dem Verrechnungskonto während der Handelspause.
60
4. Handelsstrategien
Handelslogik:
• Ziehe Kapital vom Verrechnungskonto ab und kaufe ein Wertpapier, wenn die MACD-Linie
die Signallinie von unten nach oben schneidet und gleichzeitig die MACD-Linie und die
Signallinie kleiner als -0,3 sind.
• Verkaufe ein Wertpapier und deponiere das Kapital auf dem Verrechnungskonto, wenn die
MACD-Linie die Signallinie von oben nach unten schneidet und gleichzeitig die MACDLinie und die Signallinie größer als +0,3 sind.
Diese kombinierte Strategie aus der Investition in Handelspausen, mit dem MACDCP+CD
erzielt nicht wesentlich höheren, aber in allen Marktsituationen sicheren zusätzlichen Gewinn.
In dieser Arbeit sind die folgenden zwei Handelspausen-Strategien, inklusive der hier
vorgestellten, entwickelt worden:
• OP („Combine With Opposite Product“)
• CD („Combine With Cash Deposit“)
Diese Handelspausen-Strategien lassen sich mit allen in TInTo-StrategyBuilder angebotenen
elementaren sowie erweitere Strategien optional kombinieren, um zusätzliche Gewinne in den
Handelspausen zu erzielen.
Die Analyseergebnisse zu den in dieser Arbeit entwickelte Strategien haben zu einigen viel
versprechenden Verbesserungen im Vergleich zu den bislang im Projekt eingesetzten Strategien
geführt. Eine viel versprechende und deutliche Verbesserung des Handelsergebnisses wurde
beispielsweise durch die erweiterten Strategien wie „MACDCP“ und „SMAC“ sowie optional
kombinierbare Handelspausen-Strategien schon erzielt.
Für die zukünftige Entwicklung der Handelsstrategien sollten darüber hinaus weitere
Funktionen wie zum Beispiel feste Risikogrenzen in TInTo umgesetzt werden. Zukünftig lässt
sich gegebenenfalls unter Verwendung neuronaler Netze eine selbstlernende Handelsstrategie
realisieren, welche zum Beispiel optimale Kombinationen aus geeigneten Indikatoren anhand
der vorherrschenden Marktsituation selbständig auswählen kann. Anregungen für den Entwurf
weiterer profitablerer und stabilerer Strategien sowie Anwendung von Neuronalen Netzen für
selbstlernende Handelsstrategien können [TSO08] entnommen werden. Hier sind Entwurfsideen
von über 250 Indikatoren vorgestellt, die Formeln der Indikatoren sowie detaillierte
Erläuterungen sind jedoch nicht erhältlich.
61
5
TInTo
Die Datenbankanwendung TInTo (Technical Indicator Tool) ist ein datenbankgestütztes
Werkzeug zur regelbasierten Analyse von Wertpapieren. Dieser Arbeit gehen bereits vier
Diplomarbeiten zur Entwicklung und Weiterentwicklung von TInTo voraus. Die Diplomarbeit
von Alexander Geppert beinhaltet den theoretischen Teil zur Modellierung der technischen
Analyse von Wertpapieren. Darauf aufbauend entwickelte Christian Hübel eine AccessApplikation “TInTo” zur Darstellung sowohl der Wertpapierkurse als auch der berechneten
Indikatoren in Charts. Eine webbasierte Version von TInTo wurde anschließend von Nargis
Hahn implementiert. Gereon Schüllers Diplomarbeit schließlich erweiterte TInTo um die
Möglichkeit der Intraday-Analyse. Ein allgemeine Besonderheit von TInTo liegt dabei darin,
dass die Berechnungsvorschriften der technischen Indikatoren sowie deren Aktualisierung in der
Datenbanksprache SQL gehalten sind.
Die in dieser Arbeit vorgestellte Implementierung von Handelsstrategien baut auf dem
existierenden System TInTo auf. Dieses Kapitel beinhaltet sowohl eine Beschreibung der
Systemarchitektur als auch der Spezifikation verwendeter technischer Indikatoren sowie der neu
implementierten Funktionen. Im Detail werden die an der Inkatorenberechnung
vorgenommenen extensiven Verbesserungen dargestellt.
5.1 Systemarchitektur
Die Anwendung TInTo verwendet Microsoft Access als das erforderliche DBMS. Die von
Access hierfür nicht angebotenen zusätzlich benötigten Funktionen wurden mittels Visual Basic
for Applications implementiert. Für die graphische Darstellung der Kursdaten sowie der
technischen Indikatoren wurde die von der Firma Advanced Software Engineering vertriebene
Anwendung ChartDirector verwendet. TInTo ist aus verschiedenen Komponenten aufgebaut,
welche im Folgenden kurz beschrieben werden.
63
5. TInTo
• Internet-Schnittstelle
Mit Hilfe von dieser Komponente werden die abgefragten Kursdaten sowie die Umsatzdaten
aus dem Internet eingelesen. Als Informationsquelle wird hierfür das Finanzportal Yahoo!
Finance verwendet, welches kostenlos End-of-day- und Intraday-Daten zur Verfügung stellt.
Dabei werden die Datenabfragen automatisch von TInTo an Yahoo! übergeben und die
gelieferten Daten anschließend als CSV-Datei5 in TInTo importiert.
• Datenbank Interface (Microsoft Jet Engine)
Diese Komponente bildet die Schnittstelle zwischen der eigentlichen Datenbank und den
Benutzeranwendungen.
Das Datenbankinterface ermöglicht anderen Komponenten die Daten aus der Datenbank zu
verwenden und darüber hinaus auch zu manipulieren. Als ein Teil des DBMSs dient das
Datenbankinterface der Speicherung und Verwaltung der Kurs- und Umsatzdaten sowie der
Definition der Sichten für die Berechnung der technischen Indikatoren.
Weitere Funktionalitäten dieser Komponente sind zum Beispiel Schemataverwaltung und
Transaktionsverwaltung.
• TInTo-Hauptkomponente
Dieses Modul fungiert als das Herzstück von TInTo und übernimmt die gesamte Steuerung aller
übrigen Komponenten. Alle Interaktionen der TInTo-Anwender mit der graphischen
Benutzeroberfläche werden hier weiter verarbeitet und die entsprechenden Anweisungen an alle
relevanten Anwendungskomponenten gegeben.
1. Anforderungen für ein neues Wertpapier.
Dabei wird das Symbol des gewünschten Wertpapiers sowie die Analyseperiode mit in
die URL des Abrufs einkodiert und an die Internet-Schnittstelle übergeben. Die Rückgabe
der angeforderten Daten im CSV-Format wird in einem String abgelegt und weiter
verarbeitet. Schließlich werden die erhaltenen Daten mit Hilfe der Microsoft Jet Engine in
Tabellen in der Datenbank gespeichert.
2. Änderungen der Chartdarstellung.
Alle vom Benutzer eingegebenen Informationen für die Chartdarstellung werden hier
übernommen und als Parameter an den Chartmanager weitergeleitet. Beispiele für diese
Parameter sind Charttyp, Anzeige von Volumenbalken und Auswahl von technischen
Indikatoren.
3. Indikatorverwaltung.
Die Berechnungsdefinitionen der technischen Indikatoren können beliebig von Benutzer
angelegt werden. Existiert ein benutzerdefinierter technischer Indikator bereits, kann
dieser auch weiter modifiziert werden. Diese Definitionen sollten dabei nur in der
Datenbanksprache SQL geschrieben werden. Die TInTo-Hauptkomponente speichert oder
modifiziert die Definitionen der Indikatoren über das Datenbankinterface, Microsoft Jet
Engine.
5 Das Dateiformat CSV beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfach
strukturierter Daten [Wik08].
64
5. TInTo
• Chartmanager
Der Chartmanager übernimmt die gesamten Charteinstellungen, um Kursinformationen,
Volumeninformationen und Indikatorenwerte graphisch als Charts mit Hilfe des nachfolgenden
ChartDirector darzustellen.
Hier werden die Größe des Hauptfensters sowie die Größe des zu zeichnenden Charts berechnet.
Der genaue Zeitraum zur Darstellung des Charts nach der vom Anwender gewünschten
Analyseperiode wird hier festgelegt und die Sichtendefinitionen der ausgewählten Indikatoren
durchgeführt. Außerdem, falls gewünscht, können die ChartDirector-internen Indikatoren
hinzugefügt, sowie Chardarstellungen, wie zum Beispiel Chartarten oder die
Skalierungsinformtaion als Parameter übergeben werden. Letztlich wird die
Visualisierungsmethode des ChartDirectors aufgerufen.
Falls die gewünschte Kursinformation sowie Volumeninformation nicht bereits in der
Datenbank vorhanden ist, werden diese zuerst über die Internetschnittstelle geladen und über die
Datenbankschnittstelle in Tabellen gespeichert.
Graphische Benutzeroberfläche
Eingabe
Rückgabe
ChartDirectorVisualisierung
TInTo Hauptkomponente
Neuen Kurs
/Indikator anzeigen
Chart Manager
WP/Indikator
Kursdaten Anfragen Stammdaten
Anzeigedaten
Kursdaten
DB Interface (Jet)
Interent Schnittstelle
Kurs-/
Wertpapierdaten
Nachrichten
Daten
Sichten
DB
Abbildung 5.1 TInTo Systemarchitektur, [Hüb07]
65
Neues
Wertpapier
Anfragen
5. TInTo
• ChartDirector-Visualisierung
Diese Komponente realisiert die Anbindung zur bereits vorhandenen COM-Komponente 6,
ChartDirector. Ihre Hauptaufgabe besteht darin, Kursdaten, Volumendaten sowie
Indikatorenwerte graphisch auf dem Bildschirm zu visualisieren.
• Grafische Benutzeroberfläche (engl. Graphical User Interface)
Die Benutzeroberfläche erlaubt dem TInTo-Benutzer die Interaktion mit dem gesamten System
über graphische Elemente wie Buttons, Listenfelder und Textfelder. Die Benutzeroberfläche
enthält dafür mehrere Access-Formulare. Das Hauptformular ist das Formular Main, in welchem
alle Formulare verbunden sind, welche Bedienelemente zur Verfügung stellen. Die einzelnen
Elemente von Main sind in Abbildung 5.2 dargestellt und werden im Folgenden erläutert:
❶
❼
❷
❸
❹
❻
❺
❼
❽
❾
Abbildung 5.2 TInTo Graphische Benutzeroberfläche
❶ Auf der oberen linken Seite befindet sich zunächst ein Kombinationslistenfeld zur Auswahl
eines anzuzeigenden Wertpapiers. Nach einem Klick auf die Pfeiltaste übergibt die TInTo-
6
COM: Component Object Model. Eine von Microsoft entwickelte Technologie, welche eine einfache
Wiederverwendung von bereits geschriebenen Programmcode unter dem Betriebssystem Windows
ermöglicht.
66
5. TInTo
Hauptkomponente die Identifikationsnummer des ausgewählten Wertpapiers sowie die
selektierten Charteinstellungen an den Chartmanager.
❷ Unter dem Auswahlfeld des Wertpapier befinden sich drei Schaltflächen, eine um ein neues
Wertpapier hinzufügen, eine weitere um ein bereits vorhandenes Wertpapier zu löschen, und
eine Schaltfläche, um die Kursinformationen in Form von Tabellen anzuzeigen.
❸ Dieses Textfeld dient der Anzeige der zuletzt abgefragten Intraday-Kurse.
❹ Unter dem Intraday-Textfeld befindet sich der Auswahlbereich für die Chartdarstellung. Hier
können die Charttypen wie Kerzenchart, Linienchart und Balkenchart eingestellt werden.
Volumenbalken sowie die logarithmische Skalierung werden optional angeboten und der
gewünschte Anaylsezeitraum und die Frequenz können ausgewählt werden. Die Frequenz legt
hier die zeitliche Auflösung fest, wie viele Werte zu einem Darstellungswert erfasst werden
sollen, zum Beispiel täglich oder monatlich. Price Band wie Bolliger Band oder Envelop können
auf dem Kurschart eingeblendet werden.
❺ Aus diesen Listenfeldern können die von ChartDirector sowie die von TInTo angebotenen
Indikatoren für die Darstellung unter dem Kurschart ausgewählt werden.
❻ Die vier Schaltflächen über dem Listenfeld für die TInTo-Indikatoren dienen zum Einfügen,
Bearbeiten, Löschen und Anzeigen der Indikatoren.
❼ TInTo bietet die Optionen, Access ein- oder auszublenden, Linien auf dem Chart
aufzuzeichnen und die Charts als Grafik abzuspeichern.
➑ Die zwei Schaltflächen unten links dienen zum fortlaufenden Abruf von aktuellen IntradayDaten und zur Auswahl der Einstellungen für die Intraday-Analyse.
➒ Diese Schaltfläche aktiviert die Komponente „Strategy Builder“, welche unter 5.5 und in den
nächsten Kapiteln vorgestellt wird.
5.2 Spezifikation technischer Indikatoren
Die Hauptanwendung von TInTo liegt in der Darstellung des Kursverlaufs, des Volumenverlaufs
sowie technischer Indikatorenwerte graphisch als Charts. Dafür müssen zuerst die
Indikatorwerten berechnet werden, während Kursinformationen und Handelsvolumen
unmittelbar zur Anzeige übergeben werden. Die Berechnung der technischen Indikatoren in
TInTo sind in der Datenbanksprache SQL hintergelegt. In diesem Abschnitt werden die SQLFormulierung der Indikatoren beispielhaft vorgestellt.
Für die Berechnung der technischen Indikatoren werden als Datenbasis die Kursinformationen
und die Volumeninformationen verwendet. Die Tabelle TKurs enthält die Kursinformationen
und die Volumendaten.
67
5. TInTo
Tkurs : Table
ID
n
Date
Open
High
Low
Close
Vol
2
1
03.01.2000
11501
11641
11180
11357
931800000
2
2
04.01.2000
11349
11358
10907
10997
1009000000
...
...
...
...
...
...
...
...
v1
v2
v3
Tabelle 5.1 TKurs : Table
Die Spalte ID enthält die Kennzahlen, welche TInTo intern für das jeweilige Wertpapier
vergeben hat. n ist die fortlaufende Nummer des Kurses und dient bei der Berechnung von
Indikatoren als fortlaufender Zeitpunkt. Je kleiner der n-Wert ist, desto älter ist der damit
gekennzeichnete Kurs. Je größer der n-Wert ist, desto jünger ist der Kurs. Weiterhin enthält die
Tabelle TKurs noch das Datum, den Eröffnungs-, Höchst-, Tiefst- und Schlusskurs sowie das
Handelsvolumen des jeweiligen Tages. Die zusätzlichen Spalten v1, v2 und v3 dienen als
Hilfswerte für die rekursiven Berechnungen jener technischen Indikatoren, welche sich
besonders schwierig formulieren lassen.
Je nach vom Anwender gewünschtem Analysezeitraum werden die in der Tabelle TKurs
befindlichen Daten vorläufig in die Tabelle tmpAggregation gespeichert. Damit enthält die
Tabelle tmpAggregation die jeweiligen Kursdaten aus dem Analysezeitraum und darüber hinaus
auch weitere Kursdaten, welche für die Berechnung der Indikatoren benötigt werden. Diese
temporären Tabellen sind in der Arbeit von Gereon Schüller eingerichtet worden, um die
Sichten bei der Aktualisierung des Kursverlaufs sowie der Indikaotorwerte inkrementiell zu
ändern.
TInTo verwendet ferner Hilfsfunktionen, um die Interaktion mit dem Anwender in die SQLAbfragen einfließen zu lassen:
• Die Funktion spGetID() liefert die Wertpapier-ID des vom Anwender aktuell
ausgewählten Wertpapiers. Diese Funktion kann in SQL-Abfragen direkt verwendet
werden und dient der Beschränkung auf die nötigen Datensätze.
• Die Funktion spGetPar() öffnet bei Aufruf ein Eingabefenster zur Eingabe der vom
Anwender
gewünschten
Berechnungsperiode.
Diese
eingegebenen
Berechnungsperioden können dann flexibel in SQL-Abfrage eingesetzt werden.
Im Folgenden sind Beispiele für SQL-Formulierungen zur Berechnung von technischen
Indikatoren aufgeführt. Beispielhaft soll der Trendfolgeindikator SMA, welcher in Kapitel 3
erläutert wurde, in seiner Umsetzung beschrieben werden.
Beispiel: SMA
Einer der bekanntesten Indikatoren, der SMA, filtert kleine chaotische Kursbewegungen heraus
und ermöglicht, die allgemeine Trendrichtung des Kursverlaufs zu ermitteln. Der SMA ergibt
sich aus der Berechnung des Durchschnitts der Schlusskurse für eine angegebene
Berechnungsperiode.
SQL-Abfrage:
Der SMA bildet für jeden Zeitpunkt den Durchschnitt für eine bestimmte Periode. Aus dem
Kursverlauf muss dann immer ein neuer Durchschnitt gebildet werden. Dabei ist eine
68
5. TInTo
Verknüpfung der Kurstabelle auf sich selbst nötig, um die erforderlichen Kursdaten für die
Berechnung des Durchschnitts für jeden gewählten Zeitpunkt zu erhalten.
JOIN
TmpAggreation: Table
TmpAggreation: Table
ID
n
..
ID
n
..
2
7
..
2
..
..
2
8
..
2
9
..
2
9
..
2
10
..
2
..
..
n: Fortlaufender Zeitpunkt
AVG
Sicht
ID
TmpAggreation: Table
ID
n
..
2
8
..
2
9
..
2
10
..
n
..
Ind1
2
..
..
..
2
9
..
XX
2
10
..
XX
2
..
..
..
AVG
Abbildung 5.3 SMA Berechnung mit Wertpapier-ID 2 und Berechnungsperiode 3
Die Abbildung 5.3 zeigt, dass die Tabelle tmpAggregation mit sich selbst verbunden wird, so
dass für jeden Zeitpunkt die erforderlichen Kursdaten für die Berechnung des Durchschnitts für
eine bestimmte Berechnungsperiode (in diesem Beispiel ist es 3) zur Verfügung stehen. Dabei
ist zu beachten, dass n in der Tabelle tmpAggregation den fortlaufenden Zeitpunkt darstellt,
während n in der SMA Formel als Berechnungsperiode verwendet wird. Dies ist traditionell im
TInTo Projekt so gehandhabt worden und im Rahmen dieser Arbeit ist diesbezüglich keine
Anpassung erfolgt.
Abschließend wird der Durchschnitt aus den aggregierten Werten berechnet und das Ergebnis ist
dann in der Spalte, Ind1 in der Sicht zu erhalten.
1
2
3
SELECT tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
tmpAggregation.Vol, AVG(TK1.Close) AS Ind1, tmpAggregation.Volstart
4
5
FROM tmpAggregation INNER JOIN tmpAggregation AS TK1 ON (tmpAggregation.ID=TK1.ID)
6
7
8
WHERE tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
TK1.n>tmpAggregation.n-spGetPar("Periodenvorgabe Glättung=10")
9
10
11
12
13
14
GROUP BY tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
tmpAggregation.Vol, tmpAggregation.Volstart
ORDER BY tmpAggregation.ID DESC, tmpAggregation.Date DESC;
• Im FROM-Teil bildet die Tabelle tmpAggregation mit sich selbst ein Kreuzprodukt. Dabei
wird eine Tabelle mit AS-Klausel in TK1 umbenannt.
• Im WHERE-Teil werden die Werte auf das ausgewählte Wertpapier und den ausgewählten
Zeitraum eingeschränkt. Somit werden pro Zeitpunkt-Verknüpfung nur genau so viele Zeilen
aus der Tabelle TK1 ausgewählt, wie als Berechnungsperiode eingegeben sind. Weiterhin
sollen die Zeitpunkte, also hier n-Werte, von TK1 kleiner oder gleich sein wie der verknüpfte
Zeitpunkt n aus der Tabelle tmpAggregation. Abbildung 5.3 zeigt beispielsweise eine 3 Tage69
5. TInTo
Berechnungsperiode. Dabei werden nur so viele Zeilen ausgewählt, dass deren Anzahl der
Berechnungsperiode entspricht, und dabei nur jene Zeilen selektiert, welche in kleineren oder
gleichen n-Werten im Vergleich mit dem verknüpften n-Wert der anderen Tabelle stehen.
• Im GROUP BY-Teil werden die selektierten Werte von TK1 je Zeitpunkt aus der Tabelle
tmpAggregation zusammengesetzt.
• Im SELECT-Teil werden die Spaltennamen aus der Tabelle tmpAggregation projiziert und
zusätzlich der Durchschnitt der jeweiligen Gruppe berechnet und als Ergebnis in Ind1
umbenannt und dargestellt. Abbildung 5.3 zeigt, dass im Ergebnis die virtuelle Tabelle alle
Spalten aus tmpAggregation sowie Ind1 das Ergebnis der Berechnung des Indikators enthält.
Die projizierten Spalten aus der Tabelle tmpAggregation werden später verwendet, um den
Kursverlauf in das Chart zu zeichnen. Das Ergebnis Ind1 zeichnet dann den Verlauf der
Indikatorwerte im Chart.
• Im ORDER BY-Teil werden die Werte absteigend nach Datum sortiert und somit später in der
richtigen Reihenfolge an den ChartDirector übergeben.
Die Wertpapier ID wurde in obiger Erläuterung nicht mit einbezogen, da diese in der
Berechnung der Indikatorenwerte keine eigentliche Rolle spielt, sondern lediglich sicherstellt,
dass das gültige Wertpapier aus der Tabelle TKurs in die Tabelle tmpAggregation geladen wird.
Die Tabelle tmpAggregation enthält immer nur die Daten eines einzigen Wertpapiers.
Beispielsweise sind die Bedingung in der ON-Klause in der Zeile 5 überflüssig. Die
Verbesserungen an der Formulierung der SQL-Abfragen sind für den Programmteil, „Strategy
Builder“ in den Optimierungsschritten durchgeführt worden und werden im Kapitel 6 erläutert.
Weitere Beispiele der SQL-Formulierungen von technischen Indikatoren folgen noch im
Abschnitt 5.4 „Korrekturen der Indikatorberechnung“
5.3 Diskussion des bestehenden TInTo-Systems
Für die in der Wertpapieranalyse anfallenden Datenmengen ist der Einsatz eines DBMS
unverzichtbar. Insbesondere bei der Bearbeitung der Handelsstrategien und der
Indikatorenberechnungen aus vielen Einzelwerten kann ein DBMS seine Fähigkeit gezielt in der
Bearbeitung großer Datenmengen einsetzen.
Die Anwendung TInTo ist ein datenbankgestütztes Werkzeug zur Analyse von Wertpapieren.
Die programmtechnische Umsetzung von TInTo wurde in Microsoft Access vorgenommen unter
Verwendung eines regelbasierten Ansatzes für die Berechnung der technischen Indikatoren. Für
die Formulierung der Berechnungsformeln der technischen Indikatoren ist die
Datenbanksprache SQL sehr gut verwendbar. Die in Access integrierte Programmsprache
„VBA“ ermöglicht, zusätzliche Funktionalitäten im SQL-Code zu verwenden.
Im Laufe der bisherigen Entwicklungsstufen von TInTo wurde wiederholt die grundlegende
Frage diskutiert, ob Access ein technisch geeignetes und komfortabel zu nutzendes Fundament
für die Anforderungen der Wertpapieranalyse bereitstellen kann. So fehlt Access zum Beispiel
im Vergleich zu anderen DBMS eine prozedurale Erweiterung wie PL/SQL, welche die
Geschwindigkeit der Abfragesprache SQL mit dem Komfort einer prozeduralen
Programmiersprache verbindet. Bei der Berechnung der rekursiven Formeln in der technischen
Analyse sind aber solche hintereinander abfolgende Ausführungen von SQL-Anweisungen
notwendig. Christian Hübel hat dieses Defizit durch selbst erstellte Erweiterungen
(Workarounds) ausgeglichen, aber festgestellt, dass diese Methode nicht stabil laufen könne.
Eine nähere Erläuterung hierzu folgt im nächsten Abschnitt. Als weitere Einschränkung sei
70
5. TInTo
erwähnt, dass im Allgemeinen Access keine materialisierten Sichten unterstützt. Dies bedeutet
auch einen möglichen Effizienzverlust, da materialisierte Sichten Zugriffe beschleunigen. In der
Arbeit von Gereon Schüller sind neben Basistabellen zusätzliche Tabellen eingefügt worden, um
indirekt materialisierte Sichten zu simulieren. Die von Gereon Schüller dafür gewählte Methode
ermöglicht es, die Rechenleistung zu beschleunigen und gar erst die inkrementielle
Aktualisierung zu realisieren. Durch diese Erweiterungen hat jedoch die Übersichtlichkeit der
Anwendung gelitten. Auch aus diesem Grund läuft gegenwärtig ein Projekt zur Portierung von
TInTo in Oracle und Java.
Ziel der vorliegenden Arbeit war es, weitere Funktionalitäten für die Wertpapieranalyse zu
untersuchen und in die vorhandene Access-Anwendung zu integrieren. Dazu sollte die bisherige
Hauptanwendung von TInTo, Kursverläufe und technische Indikatoren graphisch darzustellen,
um eine Analysefunktion für Handelsstrategien erweitert werden. Aus den in der bislang
vorliegenden Version implementierten Graphen lässt sich in der Regel nicht gut erkennen,
welchen Gewinn oder Verlust ein Anleger erzielt hätte, wenn er den Handelssignalen gefolgt
wäre. Der im Rahmen dieser Arbeit implementierte „StretegyBuilder” bietet dem Anwender die
Möglichkeit, über beliebige, frei wählbare Berechnungsperioden sowie Signalparametern
verschiedene technische Indikatoren auszuprobieren und die resultierenden Handelssignale
gemäß ihrer Profitabilität zu bewerten. Eine weitere detaillierte Vorstellung des StrategyBuilder
folgt im letzten Abschnitt dieses Kapitels.
5.4 Korrekturen der Indikatorberechnung
Über die verschiedenen bisherigen Entwicklungsstufen von TInTo haben sich einige Fehler
sowohl in die eigentliche Access Anwendung als auch in die Indikatorenberechnungen
eingeschlichen. Da die Indikatorenberechnung auch als eine Grundlage für die Portierung nach
Oracle dient, habe ich mich im folgenden hauptsächlich auf die Korrektur dieser Fehler
konzentriert.
Im Rahmen meiner Analyse der bislang vorliegenden TInTo-Implementierung habe ich
festgestellt, dass von den 18 existierenden Indikatoren die überwiegende Mehrzahl auffällig
waren. Daraufhin wurden diese 18 Indikatoren umfangreich auf ihre Formeln sowie ihr
Verhalten hin untersucht und mit der einschlägigen Literatur abgeglichen. Im Ergebnis wurden
für 14 Indikatoren Korrekturen oder Anpassungen vorgenommen. Weitere 2 Indikatoren, die
eine rekursive Berechnung benötigen, deuten noch darauf hin, dass sie nicht stabil laufen. Eine
Korrektur dieser Indikatoren ist im Rahmen dieser Arbeit noch nicht erfolgt.
Es bleibt anzumerken, dass ein kompromisslos korrektes Verhalten etablierter
Standardindikatoren für jegliche Wertpapieranalyse eine grundlegende Voraussetzung ist. Aus
diesem Grund wurde der im folgenden beschriebenen Korrektur im Rahmen dieser Arbeit
besondere Aufmerksamkeit gewidmet.
5.4.1 Indikatorformeln
Die in TInTo umgesetzten Indikatoren sind im Allgemeinen weit verbreitet und zeigen im
Vergleich unterschiedlicher im Internet frei verfügbarer Analysen fast immer identische Charts.
In einschlägigen Artikeln jedoch werden die zugehörigen Formeln oft verkürzt, symbolisiert
oder anderweitig verändert dargestellt. Ein Blick auf die Autorenschaft lässt vermuten, dass
diese Darstellungen eher der prinzipiellen Erläuterung und Ergebnisinterpretation als der
Erklärung der detaillierten Formeln dienen. Es ist mitunter sehr verwirrend, solche Formeln zu
lesen, weshalb man schon verschiedene Artikel und Literaturstellen verwenden sollte, um
Missverständnisse in der Darstellung der Indikatorenformeln zu vermeiden.
71
5. TInTo
Korrektur Beispiel: CCI (Commodity Channel Index)
Der CCI wurde von Donald Rambert, einem Rohstoffhändler in den 80er Jahren, entwickelt, um
Handelszyklen zu erkennen. Der CCI ist ein Oszillator, welcher anzeigt wie weit sich ein Kurs
von einem gewählten MA (Moving Average) entfernt hat. Damit kann man überkaufte- oder
überverkaufte Marktsituation sowie auch mögliche Trendwechsel und die Richtung der
Kursbewegungen erkennen. Mögliche Handelssignale können durch das Verlassen der extremen
Marktsituationen oder mittels des Schnittpunktes an der Mittelpunktslinie entstehen.
Formel:
Die Berechnungsvorschrift lautet basierend auf [CT06], [SCharts08], [WiE08] und [ADT08]
wie folgt:
t: Fortlaufender Zeitpunkt
Richtig
n: Berechnungsperiode
(5.1)
Bei der Berechnung wird ein Typischer Kurs (TP) verwendet, welcher sich aus dem
arithmetischen Mittel aus Höchst-, Tiefst- und Schlusskurs am jeweiligen Handelstag ermittelt.
Die Differenz dieses typischen Kurses zum SMA des typischen Kurses über die
Berechnungsperiode n (SMATPn (t)) wird durch den Multiplikationsfaktor 0,015 und die
mittlere Abweichung (MDn (t)) normalisiert. Die mittlere Abweichung (MDn (t)) ergibt sich aus
dem Durchschnitt aus der absoluten Differenz zwischen dem typischen Preis über n
Berechnungszeitraum und SMATP des letzten Handelstages in der Berechnungsperiode.
Im Vergleich zu obiger korrekter Beschreibung stellen die folgenden Formeln dar, worauf die
CCI-Berechnung in TInTo basiert. Diese Formeln sind aus [Gep05] und [Sch07] entnommen:
t: Fortlaufender Zeitpunkt
n: Berechnungsperiode
Falsch
(5.2)
Der Fehler lag in der Berechnung der mittleren Abweichung. Die Definition der mittleren
Abweichung (engl. Mean Deviation) lautet wie folgt:
Wobei Xn,mean das arithmetische Mittel über der Periode n ist. SMATPn(t) in Formel (5.1)
berechnet genau den Durchschnitt des typischen Kurses über Periode n, woraus sich die mittlere
Abweichung ergibt. Aber SMATPn(t-i) in (5.2) variiert fälschlicherweise zusammen mit dem
jeweiligen Typischen Kurs. Als resultierender Fehler bezieht sich dadurch die gesamte CCI
Formel auf eine fast doppelt so lange Berechnungsperiode. Der älteste Typische Kurs ist dann
TP(t-n+1) und SMA von TP(t-n+1) bezieht sich damit bis auf den TP(t-2n+2).
72
5. TInTo
SQL-Abfrage:
Bei der Berechnung von CCI ist eine zweistufige Aggregatbildung notwendig, um den ersten
Durchschnitt SMATP zu ermitteln und, basierend darauf, einen weiteren Durchschnitt MD zu
erzeugen.
JOIN
tmpAggregation
tmpAggregation AVG
JOIN
SMATP
AVG
SMATP
MD
CCI
Erste Aggregatbildung
Zweite Aggregatbildung
Abbildung 5.4 CCI Berechnung mit zwei stufigen Aggregaten
Abbildung 5.4 zeigt, dass die Tabelle tmpAggregation durch JOIN mit sich selbst ein
Kreuzprodukt bildet und mit der ersten Aggregatbildung den SMATP berechnet. Anschließend
wird eine weitere Aggregatbildung für den MD durchgeführt und schließlich der CCI auf Basis
von SMATP und MD berechnet.
Abfrage CCI0
1 SELECT tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
2
3
4
5 FROM
6
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close, tmpAggregation.Vol,
AVG((TK1.High+TK1.Low+TK1.Close)/3) AS Ind1, tmpAggregation.Volstart
tmpAggregation INNER JOIN tmpAggregation AS TK1 ON(tmpAggregation.ID=TK1.ID)
7 WHERE tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
8
TK1.n>tmpAggregation.n-spGetPar("Periodenvorgabe=20")
9
10 GROUP BY tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
11
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
12
tmpAggregation.Vol, tmpAggregation.Volstart
13
14 ORDER BY tmpAggregation.ID DESC, tmpAggregation.Date DESC;
Die Abfrage CCI0 ermittelt den Durchschnitt des typischen Kurses, SMATP (Zeile 3) und
benennt diesen um in Ind1. Dabei wird die Tabelle tmpAggregation mit sich selbst durch JOIN
verknüpft. Der WHERE-Teil enthält die Einschränkung der Daten passend zum bezogenen
Zeitpunkt n und zu der Periodenlänge.
73
5. TInTo
1 DELETE * FROM tmpCCI0;
1 INSERT INTO tmpCCI0 SELECT * FROM CCI0;
1 SELECT CCI0.ID, CCI0.n, CCI0.Date, CCI0.High, CCI0.Low, CCI0.Open, CCI0.Close, CCI0.Vol,
2
(((CCI0.High+CCI0.Low+CCI0.Close)/3)-CCI0.Ind1)/
Falsch
3
(0.015*AVG(ABS(((CCI1.High+CCI1.Low+CCI1.Close)/3)-CCI1.Ind1))) AS Ind1,
4
AVG(ABS(((CCI1.High+CCI1.Low+CCI1.Close)/3)-CCI1.Ind1)) AS Ind2,
5
CCI0.Ind1 AS Ind3, CCI0.Volstart
6
7 FROM
tmpCCI0 AS CCI0 INNER JOIN tmpCCI0 AS CCI1 ON (CCI0.ID=CCI1.ID)
8
9 WHERE CCI1.n<=CCI0.n AND CCI1.n>CCI0.n-spGetPar("Periodenvorgabe=20")
10
11 GROUP BY CCI0.ID, CCI0.n, CCI0.Date, CCI0.High, CCI0.Low, CCI0.Open,CCI0.Close,CCI0.Vol,
12
CCI0.Ind1, CCI0.Volstart, (((CCI0.High+CCI0.Low+CCI0.Close)/3)-CCI0.Ind1)
13
Richtig
14 ORDER BY CCI0.ID DESC, CCI0.Date DESC;
(((CCI0.High+CCI0.Low+CCI0.Close)/3)-CCI0.Ind1)/
(0.015*AVG(ABS(((CCI1.High+CCI1.Low+CCI1.Close)/3)-CCI0.Ind1)))
Die berechnete Sicht CCI0 wird zuerst in einer Tabelle tmpCCI0 gespeichert, welche als eine
Basistabelle für die nächsten Aggregatbildung dient. Im FROM-Teil wird diese jeweils in CCI0
und in CCI1 umbenannt und bildet mit sich selbst ein Kreuzprodukt. Die eigentliche
Berechnung von CCI folgt in den Zeilen 2 und 3. Die mittlere Abweichung wird in der Zeile 3
ermittelt.
Dabei ist in der ursprünglichen, hier zu korrigierenden Version CCI1.Ind1 verwendet, welcher
zusammen mit den typischen Kursen variiert. Jedoch soll gemäß geltender Definition für die
Berechnung von MD ein einfaches Arithmetisches Mittel, SMATP des letzten Handelstages in
der Berechnungsperiode, CCI0.Ind1 konstant für den jeweiligen Wert des MDs verwendet
werden.
CCI1
JOIN
CCI0
AVG
Ind1
CCI0
Ind1
Ind1
CCI1
CCI0
Ind1
Abbildung 5.5 CCI0.Ind1 im Vergleich zu CCI1.Ind1
74
Ind2
5. TInTo
Abbildung 5.5 zeigt, dass nunmehr CCI0.Ind1 richtigerweise gleichbleibend in der jeweiligen
Zeile des Endergebnisses einfließt, während in der ursprünglichen falschen Version die
verschiedenen Werte von CCI1.Ind1 zusammengesetzt wurden, um einen Wert des CCIs zu
bilden. Die CCI-Ergebnisse sind in Abbildung 5.5 in der Ergebnistabelle als Ind1 dargestellt.
Chart-Darstellung:
Abbildung 5.6 zeigt, dass der erste Chart von StockCharts aus [SCharts08] und der zweite Chart
von ChartDirector mittels CCI identische Signale liefern. Der dritte Chart ist der von TInTo
berechnete CCI Chart in der ursprünglichen Version. Man erkennt, dass dieser Chart deutlich
weniger überkaufte Marktsituation aufweist. Dieses abweichende Verhalten des originalen,
urkorrigierten CCI Charts resultiert daraus, dass die verwendete falsche Formel deutlich mehr
Kursdaten in die Berechnung einbezieht, was den Chartverlauf entsprechend glättet.
Auch wenn dieser Chart durch eine fehlerhafte Formel entstanden ist, so weist er dennoch für
die Beispielperiode interessante Eigenschaften auf. Es werden zu einem gewissen Grade die
Störungen im August 2008 gefiltert, wodurch dieser „CCI“ eher signifikante Signale liefert. Das
Grundproblem des CCI, zu frühe Signale zu liefern, scheint durch diese fehlerhafte Formel im
Beispielzeitraum etwas abgeschwächt zu sein.
Das vierte Chart in Abbildung 5.6 zeigt den CCI-Verlauf als Ergebnis der korrigierten, in der
Literatur verbreiteten Formel. Im Vergleich zu den Darstellungen in StockCharts und
ChartDirector erzeugt die korrigierte identische Handelssignale sowie einen identischen CCI
Kursverlauf.
StockCharts
[SCharts08]
ChartDirector
TInTo
Ursprünglich
TInTo
Korrigiert
Abbildung 5.6 CCI für Dow Jones Industiral Average im Jahr 2008
75
5. TInTo
5.4.2 Berechnungsperioden
In einigen Literaturstellen und Artikeln zum Thema technische Wertpapieranalyse sind die
jeweiligen Berechnungsperioden in den Formeldarstellungen ebenfalls nicht eindeutig
dargestellt oder auch nur verbal beschrieben worden.
Als ein Beispiel für eine solche verallgemeinernde Darstellung sei im Folgenden eine SMA
Formel aus einem Lexikon einer bekannten Website [TSO08] aufgeführt:
n: Berechnungsperiode
Gemeint ist allerdings, was korrekt und ausführlich dargestellt wie folgt aussieht :
n: Berechnungsperiode
t: Fortlaufender Zeitpunkt
Die bisherige Umsetzung des SMA aus den vorausgegangenen Diplomarbeiten [Gep05] und
[Sch07] basiert richtigerweise auf der zweiten oben angegebenen klar formulierten Formel,
jedoch wurde in der Implementierung die Berechnungsperiode falsch in SQL umgesetzt. Die
notwendige Korrektur wird weiter unten beschrieben.
Bei der Implementierung von Indikatoren in SQL sind bezüglich der Berechnungsperioden im
wesentlichen folgende drei Fällen zu berücksichtigen:
• SMA-basierende Indikatoren
• Momentum-basierende Indikatoren
• Aroon-Indikatoren
Die folgenden Darstellungen von Formeln basieren auf [CT06], [SCharts08], [WiE08],
[BörV08].
1. SMA-basierende Indikatoren
Der SMA wird als ein Basisindikator in vielen weiteren Indikatoren verwendet, beispielsweise
um den chaotischen Verlauf von Werten des Indikators zu glätten oder um eine Signallinie zu
erzeugen.
Die Berechnungsvorschrift lautet wie folgt:
n: Berechnungsperiode
t: Fortlaufender Zeitpunkt
Dabei werden genau so viele Schlusskurse (Close) für den jeweiligen Wert des Indikators
verwendet, wie die Berechnungsperiode abdeckt. Für einen Wert des Indikators sind demnach n
viele Schlusskurse in der Berechnung zu verwenden. Dabei ist der Schlusskurs zum Zeitpunkt t
auch für den Wert des Indikators zum Zeitpunkt t einzubeziehen.
76
5. TInTo
SQL-Abfrage:
Abweichend von der Formeldarstellung mit n als Berechnungsperiode und t als fortlaufender
Zeitpunkt sind traditionsgemäß in TInTo in der SQL Implementierung leider n als fortlaufender
Zeitpunkt verwendet worden. Diese Vereinbarung wurde im Rahmen dieser Diplomarbeit
beibehalten. Es gilt also zu beachten, dass die Formeln und die SQL Skripte in der Verwendung
dieser beiden Variablen voneinander abweichen. Die Berechnungsperiode wird durch die
Funktion spGetPar() aus der Eingabemaske in die SQL Berechnung übertragen. Der Teil der
SQL Abfrage zur Einschränkung der zu verwendenden Daten lautet wie folgt:
...
FROM tmpAggregation INNER JOIN tmpAggregation AS TK1 ON(tmpAggregation.ID=TK1.ID)
WHERE tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
TK1.n>tmpAggregation.n-spGetPar("Periodenvorgabe=20")
...
Beispielsweise sind für eine Berechnungsperiode 5 und für den Zeitpunkt 10 die folgenden
Werte für die Berechnung eines Indikatorenwertes zu berücksichtigen:
Betrachtungszeitpunkt: 10
Berechnungsperiode: 5
TK1
JOIN
n ≦ 10 AND n > 10 - 5
n
Ergebnis
6
7
8
9
10
tmpAggregation
n
10
n
Ind1
10
n: Fortlaufender Zeitpunkt
Abbildung 5.7 SMA Berechnungsperiode
Für den Wert des Indikators zum Zeitpunkt 10 werden ab den Zeitpunkten 6 bis 10 insgesamt 5
Datensätze verwendet. Dabei sollte man beachten, dass die Kursdaten vom Zeitpunkt 5 NICHT
mit einbezogen werden.
2. Momentum-basierende Indikatoren
Das Momentum dient ebenfalls häufig als ein Basiselement vieler Oszillatoren. Im Momentum
wird die Beschleunigung bzw. die Verlangsamung von Kursbewegungen gemessen.
Berechnet wird es, indem der aktuelle Schlusskurs mit dem Schlusskurs von vor der
eingegebenen Berechnungsperiode in Relation gesetzt wird:
n: Eingabeperiode
t: Fortlaufender Zeitpunkt
Eine alternative Berechnung besteht in:
77
5. TInTo
SQL-Abfrage:
In der folgenden SQL-Abfrage für die Berechnung des Momentums wird die Variable n wieder
für den laufenden Zeitpunkt verwendet. Die Eingabeperiode wird mittels der Funktion
spGetPar() ermittelt:
...
FROM tmpAggregation INNER JOIN tmpAggregation AS TK1 ON(tmpAggregation.ID=TK1.ID)
WHERE TK.n=tmpAggregation.n-spGetPar(„Kurseinheiten=10“)
...
Hiermit wird ein Kursdatensatz aus tmpAggregation mit einem Kursdatensatz aus TK1
verknüpft. Aus tmpAggregation wird hierfür der aktuelle Kurs zum betrachteten Zeitpunkt n
und aus TK1 der Kurs von Zeitpunkt n MINUS gewählter Berechnungsperiode verwendet.
Abbildung 5.8 zeigt ein Beispiel für die Berechnung eines Momentumwertes für den Zeitpunkt
10 mit der Berechnungsperiode 5:
Betrachtungszeitpunkt: 10
Eingabeperiode: 5
JOIN
tmpAggregation
TK1
n
n
5
n = 10 - 5
Ergebnis
n
Ind1
10
10
n: Fortlaufender Zeitpunkt
Abbildung 5.8 Momentum Berechnungsperiode
Dabei wird nur eine Zeile, d.h. nur ein Kurswert, aus Tabelle TK1 durch JOIN zum jeweiligen
Ergebniswert verbunden. Dabei muss beachtet werden, dass die Kursdaten zum Zeitpunkt 5,
NICHT aber die Daten zum Zeitpunkt 6 verwendet werden (Zeitpunkt n 10 MINUS
Betrachtungsperiode 5 = 5).
3. Aroon-Indikatoren
Aroon-Indikatoren treten im Vergleich zum SMA oder Momentum nicht so häufig in der
Berechnung von Indikatoren auf. Ihre Logik bezüglich der Berechnungsperiode wird aber
beispielsweise bei der Berechnung von Aroon-Up, Aroon-Down, Aroon Oszillatoren verwendet.
Im folgenden Beispiel dient der Aroon-Up zur Bestätigung und zur Anzeige der Stärke des
Aufwärtstrends. Der Aroon-Up errechnet sich aus der Anzahl der innerhalb der vorgegebenen
Berechnungsperiode seit dem letzten Kursmaximum vergangenen Tage. Diese Zahl wird durch
die Eingabeperiode (Gesamtzahl an Tagen in der Berechnungsperiode) dividiert und mit 100
multipliziert:
78
5. TInTo
n: Eingabeperiode
t: Fortlaufender Zeitpunkt
t max: Der Zeitpunkt des Kursmaximums während der Periode, t-n ≤ t
max ≤
t
Dabei ist zu beachten, dass gilt: Berechnungsperiode = Eingabeperiode +1. Dies ergibt sich
daraus, dass sowohl der erste wie auch der letzte Tag einer Berechnungsperiode in die
Betrachtung einfließen. Siehe Beispiel in Abbildung 5.10 Eingabeperiode ist hier 20, gemeint:
betrachtete Betrachtungsperiode von Tag 80 bis Tag 100 = mathematisch 21 Tage. Daraus
resultiert wie oben angegeben: BP = EP +1.
SQL-Abfrage:
In der beispielhaften SQL Abfrage steht, abweichend von obiger Formel, n wieder für den
fortlaufenden Zeitpunkt. Die Eingabeperiode wird mittels der Funktion spGetPar() ermittelt. Die
Abweichung in der Variablenkennzeichnung zwischen der Formel und dem SQL Code rührt
wieder aus der “traditionellen” Notation in TInTo her.
...
FROM tmpAggregation INNER JOIN tmpAggregation AS TK1 ON(tmpAggregation.ID=TK1.ID)
WHERE tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
TK1.n>=tmpAggregation.n-spGetPar("Periodenvorgabe=10")
...
Abbildung 5.9 zeigt die gemäß oben dargestelltem SQL-Code erzeugte Tabellenverknüpfung
bezüglich Aroon Berechnungsperiode. Wieder verwenden wir für den fortlaufenden Zeitpunkt
10 und für die Eingabeperiode 5. Aus t-n ≤ t max ≤ t in der obigen Formel ergibt sich
Berechnungsperiode = Eingabeperiode +1. Im Beispiel werden mit einer Eingabeperiode von 5
daraufhin 6 Tageskurse aus TK1 von Aroon verwendet.
Betrachtungszeitpunkt: 10
Eingabeperiode: 5
TK1
JOIN
tmpAggregation
n
n ≦ 10 AND n ≧ 10 - 5
Ergebnis
n
5
6
7
8
9
10
n
Ind1
10
10
n: Fortlaufender Zeitpunkt
Abbildung 5.9 Aroon Berechnungsperiode
Im Vergleich dazu werden für die Berechnung von SMA-basierten Indikatoren nur genau so
viele Tageskurse verwendet, wie die Eigabeperiode lang ist. Für SMA gilt also Eingabeperiode
79
5. TInTo
= Berechnungsperiode, weshalb im Falle von SMA nicht zwischen beiden unterschieden werden
muss.
Abbildung 5.10 zeigt den Periodenvergleich zwischen SMA-basierenden, Momentumbasierenden und Aroon-Indikatoren:
EP = 20:
80 81 82 83
...
99 100
n : Fortlaufender Zeitpunkt
Zeitpunkten
der
benötigen
Datensätze
81 82 83
...
80
80 81 82 83
99 100 SMA-basierende Indikatoren: BP = EP = 20
100 Momentum-basierende Indikatoren: BP = 2
...
99 100 Aroon-Indikatoren: BP = EP + 1 = 21
BP: Berechnungsperiode
EP: Eingabeperiode
Abbildung 5.10 Periodenvergleich
Korrektur Beispiel: RSI (Relative Strength Index)
Der Indikator RSI stellt die relative Schwungstärke des Kurses dar, indem er die Kursgewinne
einer Periode mit den Kursverlusten derselben Periode vergleicht. Dieser Indikator wird
verwendet, um überkaufte- oder überverkaufte Marktsituationen zu erkennen und sich daraus
gegebenenfalls ergebende Trendwechsel zu prognostizieren. Abschnitt 3.4.2 beinhaltet eine
detaillierte Beschreibung des RSI und seiner Anwendungen.
Die Berechnung des RSIs erfolgt in folgenden Rechenschritten:
SMA-basierende
Basisindikatoren:
AvgSU, AvgSD
Momentum-basierende
Basisindikatoren:
Up, Down
n: Berechnungsperiode
t: Fortlaufender Zeitpunkt
(5.3)
Der RSI berechnet sich gemäß dieser Gleichung aus der Relation des SMA aller positiven
Kursveränderungen (AvgSU) zur Summe der beiden SMA der positiven und negativen
Kursveränderungen (AvgSU und AvgSD).
80
5. TInTo
SQL-Abfrage:
Für die Formulierung der SQL-Abfrage werden zwei Verknüpfungen der Basistabelle
tmpAggregation auf sich selbst benötigt. Dazu wird die Tabelle tmpAggregation in TK1 und
TK2 umbenannt.
JOIN
TK2
Ergebnis
JOIN TK1
tmpAggregation
TK2
TK2
.
.
SMA-basierende Berechnung:
AvgSU, AvgSD
Momentum-basierende Berechnung:
Up, Down
Abbildung 5.11 RSI Berechnung
Die erste Verknüpfung (tmpAggregation mit TK1) stellt die für die Berechnung des SMA aller
positiven Kursveränderungen (AvgSU) und des SMA aller negativen Kursveränderungen
(AvgSD) benötigten Datensätze zusammen. Damit werden AvgSU und AvgSD in der Formel
berechnet. Die zweite Verknüpfung (TK1 mit TK2) vergleicht die zwei Schlusskurse (in Formel
5.3 Close(t) und Close(t-1)) zur Berechnung des Up und des Down.
Dabei ist wiederum zu beachten, dass traditionell in TInTo in den Formeldarstellungen t und im
SQL Code jedoch n für den fortlaufenden Zeitpunkt Verwendung findet.
1 SELECT tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
2
3
4
5
6
7
8
9
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
tmpAggregation.Volstart, tmpAggregation.Vol,
100*(AVG(IIF(TK1.Close>TK2.Close,TK1.Close-TK2.Close,0))/
(AVG(IIF(TK1.Close>TK2.Close,TK1.Close-TK2.Close,0)
+AVG(IIF(TK1.Close<TK2.Close,TK2.Close-TK1.Close,0)))) AS Ind1,
AVG(IIF(TK1.Close>TK2.Close,TK1.Close-TK2.Close,0)) AS Ind2,
AVG(IIF(TK1.Close<TK2.Close,TK2.Close-TK1.Close,0)) AS Ind3
10 FROM (tmpAggregation INNER JOIN tmpAggregation AS TK1 ON (tmpAggregation.ID=TK1.ID))
11
INNER JOIN tmpAggregation AS TK2 ON (TK1.ID=TK2.ID AND TK1.n-1=TK2.n)
12
13 WHERE tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
Falsch
14
TK1.n>=tmpAggregation.n-spGetPar("Periodenvorgabe=14")
15
16 GROUP BY tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
17
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
18
tmpAggregation.Vol, tmpAggregation.Volstart
19
20 ORDER BY tmpAggregation.ID DESC, tmpAggregation.Date DESC;
tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
TK1.n>tmpAggregation.n-spGetPar("Periodenvorgabe=14")
81
Richtig
5. TInTo
Der FROM-Teil beinhaltet die beiden erläuterten JOIN-Verknüpfungen. Die eigentliche
Berechnung des RSIs erfolgt im SELECT-Teil und ist in den Zeilen 4 bis 6 dargestellt. Der
SMA basierende Formelteil AvgSu und AvgSD wird mit der ersten Verknüpfung
(tmpAggregation mit TK1) gebildet. Dabei sind die Einschränkungen der benötigten Datensätze
im WHERE-Teil in der Zeile 13-14 geschrieben. Die Anzahl der für die Berechnung des
Indikatorenwertes von RSI benötigten Datensätze muss dabei der Eingabeperiode entsprechen.
Aber der WHERE-Teil aus der originalen, unkorrigierten TInTo Version, dargestellt in den
Zeilen 13-14, erfasst einen Datensatz mehr als benötigt, siehe farbliche Markierung im SQL
Code. Daher ist der Vergleichsoperator in der Zeile 14 von “>=” auf nur “>” zu korrigieren,
siehe im SQL Code in Blau markierter neuer Teil. Der Momentum-basierende Formelteil Up(t)
und Down(t) wird in der zweiten Verknüpfung (TK1 mit TK2) ermittelt. Dessen Einschränkung
der benötigen Datensätze war im originalen SQL-Code schon fehlerfrei wie in der Zeile 11
unverändert dargestellt.
Chart-Darstellung:
Abbildung 5.12 zeigt die sich aus den Korrekturen ergebenden geänderten Indikatorencharts.
Änderungen ergeben sich ausschließlich aus den korrigierten Periodenlängen im SMA Teil der
RSI-Berechnung. Als Referenz dienen die Charts aus ChartDirector. Im Ergebnis ist sichtbar,
dass das Chart „TInTo Korrigiert“ nach der vorgenommenen Berechnungskorrektur einen
identischen Verlauf zum Referenzchart aufweist. Der mittler Chart „TInTo Vorher“ stellt zum
Vergleich den originalen Verlauf gemäß nicht korrigierter Berechnung dar.
ChartDirector
TInTo Ursprünglich
TInTo Korrigiert
Abbildung 5.12 RSI für Dow Jones Industiral Average im Jahr 2008
82
5. TInTo
5.4.3 Formelvariante
Die in Ergänzung zu den in 5.4.1 und 5.4.2 beschriebenen Korrekturen der Formeln und der
Berechnungsperioden werden abschließend noch Anpassungen der Formelvarianten
durchgeführt.
Dazu wurden in jenen Fällen, in welchen alternative Formelvarianten existieren, die jeweils
gängigsten und gebräuchlichsten ausgewählt. Wenn sich auch im Allgemeinen die Aussagekraft
und auch die Handelssignale durch diese Anpassungen nicht ändern, so ist es dennoch
empfehlenswert, die jeweils geläufigsten Varianten der Indikatorenformeln zu verwenden.
Anpassungsbeispiel: ROC (Rate of Change)
Beispielhaft seien diese vorgenommenen Anpassungen am Indikator ROC dargestellt. Der ROC
zeigt die Stärke der Kursschwankungen an. Dazu wird der aktuelle Kurs mit einem Kurs in der
Vergangenheit verglichen.
n: Berechnungsperiode
t: Fortlaufender Zeitpunkt
n: Berechnungsperiode
t: Fortlaufender Zeitpunkt
Die erste Formel ist jene Variante, welche in der ursprünglichen TInTo-Version verwendet
wurde. Die zweite Variante ist aus [CT06], [CR08], [SCharts08] sowie [ForR08] entnommen.
Beide Formeln vermitteln die gleichen Aussage. TInTo hat in der früheren Version allerdings
einfach den Momentum-Indikator weiter für den ROC verwendet.
Eine deutliche Mehrheit der Chartanbieter scheint die zweite Formelvariante zu bevorzugen.
Aus Anwendersicht ist es sicher wesentlich einfacher, auf TInTo umzusteigen, wenn Indikatoren
die von anderen Systemen oder Anwendungen bekannten Eigenschaften aufweisen. Darüber
hinaus hat die zweite Formelvariante die angenehme Eigenschaft, um die Nulllinie zu
oszillieren.
Abbildung 5.13 zeigt die Charts von StockCharts, Yahoo!Finance, OnVista und ChartDirector,
welche die zweite vorgestellte Formelvariante verwenden. Alle oszillieren um die
Nullpunktlinie. Das fünfte Chart “TInTo Ursprünglich” ergibt sich aus der originalen, bislang in
TInTo verwendeten Formel für den ROC. Chart 6 “TInTo Korrigiert” zeigt das Ergebnis gemäß
der Formelkorrektur in der aktuellen Version. Die Berechnung des ROC erfolgt nunmehr nach
der allgemein üblichen Formel und der Chartverlauf folgt den Referenzbildern der
professionellen Anbieter.
83
5. TInTo
StockCharts [SCharts08]
Yahoo!Finance [YH08f]
OnVista [OV08]
ChartDirector
TInTo Ursprünglich
TInTo Korrigiert
Abbildung 5.13 ROC für Dow Jones Industiral Average im Jahr 2008
84
6
Implementierung elementarer
Handelsstrategien
Elementare Handelsstrategien bestehen aus nur einem einzelnen Indikator und dessen starrer
Signallinie. Details hierzu sind im Kapitel 4 ausführlich dargestellt. Für die Implementierung
dieser Handelsstrategien ist die Berechnung der jeweiligen Handelssignale technisch
umzusetzen. Im vorliegenden Kapitel wird zunächst auf die Modellierung elementarer
Handelsstrategien, die Filterung relevanter Signale sowie die grundsätzlichen Annahmen für die
Bewertung der Handelsstrategie (Profitabilität) eingegangen. Anschließend werden die
verschiedenen Ansätze zur regelbasierten Implementierung beschrieben sowie detailliert auf die
vorgenommenen Optimierungen eingegangen. Im Ergebnis dieser Optimierungen konnten die
Laufzeitnachteile aus den notwendigen mehrfachen Schachtelungen von Sichten kompensiert
und die Berechnung der Handelssignale erheblich beschleunigt werden.
6.1 Berechnung von Handelssignalen
In einem ersten Teil dieses Abschnitts werden zunächst beispielhaft die regelbasierte
Modellierung von Handelsstrategien und die Annahmen für die Generierung relevanter
Handelssignale vorgestellt. Im weiteren wird dann auf die Besonderheiten
der
Signalberechnung für Strategiebewertungen eingegangen.
6.1.1 Bestimmung von Handelssignalen
Elementare Strategien generieren Handelssignale auf der Basis nur eines technischen Indikators
und dessen starrer Signallinien. Als starre Signallinien werden unter anderem folgende Linien
verwendet:
• Die Nulllinie
• Die Mittelpunktslinie
• Die Linien, welche die extremen Marktsituationen abgrenzen.
85
6. Implementierung elementarer Handelsstrategien
Dabei gelten die Schnittpunkte der jeweiligen Indikatorlinie mit den entsprechenden
Signallinien als Handelssignale. Alle Kaufsignale liegen jeweils dann vor, wenn die Linie des
Indikators die jeweilige Signallinie von unten nach oben schneidet. Verkaufssignale wiederum
entstehen, wenn die Linie des Indikators die jeweilige Signallinie von oben nach unten
schneidet.
Die folgende Abbildung illustriert beispielhaft erzeugte Handelssignale unter Verwendung der
Signallinien, welche die extremen Marktsituationen abgrenzen:
Die extremen Zonen abgrenzenden Linien, CCI
Verkauf
Verkauf
Kauf
Kauf
Verkauf
Kauf
Kauf
Abbildung 6.1 Signallinien und Handelssignale, [SCharts08]
Eine Indikatorlinie ergibt sich aus der Verbindung der Punkte einzelner Indikatorwerte. In den
Serien dieser Werte stehen jedoch nicht unbedingt genau jene diskrete Werte, welche den
Schnittpunkt der beiden Linien beschreiben. Für die Ermittlung der Schnittpunkte müssen daher
die hintereinander folgenden Einzelwerte verglichen werden. Die folgende Handelslogik legt
bedingte Kauf- bzw. Verkaufssignale fest:
• Ein Kaufsignal für den aktuellen Zeitpunkt liegt vor, wenn zum vorangegangenen
Zeitpunkt der Wert des Indikators kleiner ist als der Wert der Signallinie für Kaufen (im
Beispiel -100) und wenn gleichzeitig der jetzt aktuelle Wert des Indikators größer oder
gleich dem Wert der Signallinie für Kaufen ist. Dies bedeutet, die Indikatorlinie hat die
Signallinie von unten nach oben geschnitten und liegt aktuell über oder, bei Gleichheit
der Werte, auf der Signallinie.
• Ein Verkaufssignal für den aktuellen Zeitpunkt liegt vor, wenn zum vorangegangenen
Zeitpunkt der Wert des Indikators größer ist als der Wert der Signallinie für Verkaufen
(im Beispiel +100) und wenn gleichzeitig der jetzt aktuelle Wert des Indikators kleiner
oder gleich dem Wert der Signallinie für Verkaufen ist. Dies bedeutet, die Indikatorlinie
hat die Signallinie von oben nach unten geschnitten und liegt aktuell unter oder, bei
Gleichheit der Werte, auf der Signallinie.
Angemerkt sei hier, dass Kauf- und Verkaufssignale nicht in einer komplementären Beziehung
zueinander stehen. So kann man für einen Zeitpunkt, zu welchem die Bedingung des
Kaufsignals nicht erfüllt ist, von einem Verkaufssignal oder auch von „keinem Handel“
sprechen. Es bestehen dann drei mögliche Zustände für alle Zeitpunkte „Kauf“, „Verkauf“ oder
„Kein Handel“. Das Komplement der beiden Zustandsmengen von „Kauf“ und „Verkauf“ bildet
die Menge der Zustände von „Kein Handel“. Die Zustände „Kauf“ und „Verkauf“ sind hingegen
exklusiv, das heisst es gibt keine Bedingung und damit auch keine Situation in welcher
gleichzeitig ein Kauf- und ein Verkaufssignal generiert wird.
86
6. Implementierung elementarer Handelsstrategien
Beispiel: CCI-basierende Strategie
Die oben genannte Handelslogik kann für die CCI-basierte Strategie unter Verwendung der
Prädikatenlogik wie folgt spezifiziert werden:
Annahme : Sei n fortlaufender Zeitpunkt.
Seien die Werte der Signallinien -100 für Kauf und 100 für Verkauf.
∀n : { (CCI(n-1) < -100) ∧ (CCI(n) ≧ -100) } ⇒ (Signal(n) = „Kauf“)
∀n : { (CCI(n-1) > 100) ∧ (CCI(n) ≦ 100) } ⇒ (Signal(n) = „Verkauf“)
Abbildung 6.2 veranschaulicht, wie mittels der angegebenen Handelslogik aus der Sicht, welche
die CCI-Werte enthält (linke Tabelle) die jeweiligen Handelssignale abgeleitet werden:
n
Date
CCI
n
37
17.01.2008
-106
37
38
18.01.2008
-110
38
39
21.01.2008
-104
39
40
22.01.2008
-92
41
23.01.2008
-88
40
(CCI(39) < -100) ∧ (CCI(40) ≧ -100)
Wahr
Signal
Kauf
41
Wahr
Wahr
112
25.04.2008
98
112
113
28.04.2008
103
113
114
29.04.2008
105
114
115
30.04.2008
97
(CCI(114) >100) ∧ (CCI(115) ≦ 100)
Verkauf
Wahr
Wahr
n: Fortlaufender Zeitpunkt
115
Wahr
Abbildung 6.2 Ableitung der Handelssignale
Dabei ist auch zu beachten, dass Situationen auftreten, in denen weder Kauf- noch
Verkaufssignal generiert werden können. In diesen Fällen wird kein Wert in das Feld für das
Signal in der rechten Tabelle eingetragen. Diese Situationen sind dann als die Menge der
Zustände von „Kein Handel“ zu interpretieren und sind irrelevant für die Handelssignale.
6.1.2 Eliminierung irrelevanter Handelssignale
Beim Kauf von Wertpapieren steht zur Auswahl, nur einen Teil des zu investierenden Kapitals
einzusetzen und analog beim Verkauf nur einen Teil des investierten Kapitals wieder
abzuziehen. Beispielsweise sind diese Teilkäufe oder Teilverkäufe sinnvoll in einer starken
Trendphase einzusetzen, wenn man eine Handelsstrategie verwendet, welche auf Oszillatoren
basiert, die in der Regel zu frühe Handelssignale liefern. Ein Beispiel ist eine auf CCI87
6. Implementierung elementarer Handelsstrategien
basierende Handelsstrategie, welche Handelssignale mit Hilfe von extreme Marktsituationen
abgrenzenden Signallinien generiert. In stark steigenden Märkten werden zu frühe
Verkaufssignale hintereinander erzeugt, welche auf eine überverkaufte Marktsituation und eine
baldige Trendumkehr hinweisen. Zu solch frühen Zeitpunkten ist ein Teilverkauf rentabler. Im
Gegensatz dazu ist es allgemein profitabler, Vollkauf oder Vollverkauf in Seitwärtsphasen
einzusetzen. Entscheidungen für einen Teilkauf/Vollkauf oder einen Teilverkauf/Vollverkauf
sind von Fall zu Fall und auf Basis einer detaillierten Analyse zu treffen. Da sinnvolle und
allgemein gültige Bedingungen für einen Teilkauf/Vollkauf oder einen Teilverkauf/Vollverkauf
nur mit erheblichem Aufwand zu formulieren sind, ist für den Rahmen dieser Arbeit vereinbart
worden, dass jeder Handel immer mit vollständigem Einsatz des zur Verfügung stehenden
Kapitals zustande kommt.
Zur Eingruppierung von Handelssignalen in relevant und nicht relevant muss auch geprüft
werden, ob das Signal zur gegenwärtigen Investmentposition (ob man investiert ist oder nicht)
passt.
Um Wertpapiere verkaufen zu können, muss man vorab die zu verkaufenden Wertpapiere auch
besitzen. Wenn alle zuvor vorhandenen Wertpapier bereits verkauft sind, können sie nicht noch
einmal bei einem direkt darauf folgenden Verkaufssignal verkauft werden. Da Teilkäufe als
ausgeschlossen vorab vereinbart worden sind, können Kaufsignale, welche direkt einem zuvor
getätigtem Vollkauf folgen, dann nicht beachtet werden und müssen als irrelevante Signale
ausgefiltert werden. Die folgende Abbildung 6.3 veranschaulicht relevante und irrelevante
Signale:
Verkauf
Verkaufssignal
13.09.2006
Relevant
Kauf
Verkauf
Verkaufssignal
10.10.2006
Relevant
Kauf
Verkauf
Verkaufssignal
27.10.2006
Relevant
Kauf
Verkauf
Verkaufssignal
24.11.2006
Relevant
Kauf
88
6. Implementierung elementarer Handelsstrategien
Verkauf
Kaufsignal
22.12.2006
Relevant
Relevant
Kauf
Kauf
Abbildung 6.3 Verkaufssignale, Google Inc. [SCharts08]
Nach dem Kauf der Wertpapiere im Sommer 2006 erscheint das erste Verkaufssignal am 13.
September 2006. Die bereits gekaufte Wertpapiere sind vorhanden, die Investmentposition passt
zum Handelssignal und die Wertpapiere können verkauft werden. Vereinbarungsgemäß sind
Teilverkäufe ausgeschlossen und es findet ein Vollverkauf statt. Nachfolgend entstehen weitere
Verkaufssignale am 10. Oktober, 27. Oktober und 24. November. Zu diesen Zeitpunkten sind
keine Wertpapiere im Besitz, die Investmentposition passt nicht zum Handelssignal und die
Signale werden als irrelevant herausgefiltert. Das nächste relevante Handelssignal nach dem
Verkauf am 13. September ist dann ein Kaufsignal, welches am 22. Dezember folgt und auch
wieder zur Investmentposition passt und demzufolge beachtet werden kann.
n
Signal
n
Signal
37
Verkauf
37
Verkauf
53
Kauf
53
Kauf
78
Verkauf
78
Verkauf
84
Verkauf
92
Verkauf
112
Verkauf
134
Kauf
signal
rkaufs
ntes Ve
Releva
84
92
112
134
l
aufsigna
Kauf
145
145
Kauf
189
Kauf
189
250
Verkauf
250
Verkauf
267
Kauf
267
Kauf
tes K
Relevan
n: Fortlaufender Zeitpunkt
Abbildung 6.4 Relevante Handelssignale
Die Abbildung 6.4 illustriert tabellarisch, wie nur relevante Signale angenommen werden. In der
linken Tabelle sind alle entstehenden Handelssignale aufgeführt. Dazu wurden die Zustände
„Kein Handel“ aussortiert und nur noch Kauf- oder Verkaufssignale behalten. Aus diesem
Grund sind die Zeitpunkte in der Spalte „n“ nicht immer um jeweils eins ansteigend. Nach
einem erfolgten Kauf zum Zeitpunkt 53 entsteht ein relevantes Verkaufssignal zum Zeitpunkt
78. Das nächste relevante Signal „Kauf“ entsteht zum Zeitpunkt 134.
89
6. Implementierung elementarer Handelsstrategien
Weiterhin ist festgelegt worden, im Rahmen dieser Arbeit Handelsstrategien für jeweils nur ein
Wertpapier zu entwerfen. Adaptive Handelsstrategien mit Umstellung des Investments sowie
eine Portfoliobildung aus verschiedenen Wertpapieren sind aus Gründen der Komplexität nicht
berücksichtigt.
6.1.3 Bewertung von Handelsstrategien
Für die Auswertung einer Handelsstrategie müssen die im letzten Abschnitt 6.1.2 ermittelten
relevanten Handelssignale weiter bearbeitet werden. Dazu muss zusätzlich eine
Handelsausführung in der Vergangenheit simuliert und zu diesem Zweck hypothetische Kaufsund Verkaufszeitpunkte ermittelt werden.
Bei der Auswertung einer Handelsstrategie bezogen auf historische Kursdaten werden durch den
Nutzer ein Wertpapier, eine Handelsstrategie und ein Analysezeitraum ausgewählt. Je nach
Analysezeitraum können zuerst alle im letzten Abschnitt erläuterten relevanten Handelssignale
abgeleitet werden. Anschließend sollten zusätzlich die folgenden zwei Bedingungen beachtet
werden:
• Das erste Handelssignal im Analysezeitraum darf kein Verkaufssignal sein, da sich noch
keine verkäuflichen Wertpapiere im Besitz befinden.
• Sollte das Ende des Analysezeitraums mit einer Bestandsposition (der Anleger hat in
Wertpapiere investiert) zusammentreffen, sollten die Wertpapiere für den Zweck der
Verkaufspreisermittlung für die Rentabilitätsberechnung verkauft werden. Hierzu wird
gegebenfalls ein zusätzliches Verkaufssignal am Ende des Analysezeitraum erzeugt.
Für einen vorgegebenen Analysezeitraum werden somit immer Signalpaare aus einem Kaufund einem darauf folgenden Verkaufssignal als relevante Signale für die Strategiebewertung
ermittelt.
Abbildung 6.5 zeigt ein zusammenfassendes Beispiel. Hier sei der Analysezeitraum vom
Zeitpunkt 70 bis zum Zeitpunkt 150 festgelegt. In der ersten Tabelle werden alle Handelssignale
berechnet und in der zweiten Tabelle werden alle relevanten Signale erzeugt. Zuletzt werden nur
die relevanten Signale für die Strategiebewertung ermittelt. Dabei fällt das erste Verkaufssignal
zum Zeitpunkt 78 weg und am Ende des Analysezeitraumes wird ein zusätzliches
Verkaufssignal eingefügt.
90
6. Implementierung elementarer Handelsstrategien
Relevante Handelssignale
Handelssignale
n
Signal
n
Signal
37
Verkauf
37
Verkauf
53
Kauf
53
Kauf
78
Verkauf
78
Verkauf
84
Verkauf
84
92
Verkauf
92
112
Verkauf
112
134
Kauf
134
145
Kauf
145
189
Kauf
189
Kauf
250
Verkauf
250
Verkauf
267
Kauf
267
Kauf
Analysezeitraum
ab dem Zeitpunkt 70
bis zum Zeitpunkt 150
Relevante Handelssignale
der Strategiebewertung
n
Signal
134
Kauf
150
Verkauf
Kauf
n: Fortlaufender Zeitpunkt
Abbildung 6.5 Relevante Signale der Strategiebewertung
6.2 Sichtbasierte Signalberechnung und Optimierungen
Die Signalberechnung elementarer Handelsstrategien dient als Fundament für die weitere
Entwicklung von erweiterten Handelsstrategien sowie für den zukünftigen Entwurf strategischer
Portfolios aus verschiedenen Handelsstrategien und verschiedenen Wertpapieren. Hieraus ergab
sich die Aufgabenstellung, möglichst effiziente Methoden der Signalberechnung für die
Strategiebewertung zu entwickeln. Mehrere Optimierungsschritte sind im Rahmen dieser Arbeit
durchgeführt worden, deren Ergebnisse in den folgenden Abschnitten ausführlich dargestellt
werden. Eine weitere Motivation zur Optimierung ergab sich aus dem Ziel, diese Signale in
Handelsstrategien im Intraday-Handel einzusetzen. Die Geschwindigkeit der Signalberechnung
sowie Strategiebewertung spielt in dieser Anwendung eine entscheidende Rolle. Als Bedingung
für alle Optimierungen war vorgegeben worden, dass die Implementierung sichtbasiert in SQL
vorgenommen werden soll.
91
6. Implementierung elementarer Handelsstrategien
Die folgende Abbildung illustriert vorhandene Basisdaten, die Aufgabenstellung und das zu
erreichende Ziel:
Gegeben: Indikatorwerte (Ind1)
n
Ind1
91
-106
92
-110
93
-104
94
-92
95
-88
96
-78
97
-76
98
-56
Aufgaben
Ziel
1. Berechnung von
Handelssignale
↓
2. Eliminierung irrelevanter
Handelssignale
↓
3. Signalberechnung für
Strategiebewertung
n
Signal
n
Signal
134
Kauf
150
Verkauf
178
Kauf
234
Verkauf
n: Fortlaufender Zeitpunkt
Abbildung 6.6 Sichtbasierte Signalberechnung für Strategiebewertung
Für die Optimierungsaufgabe können die in Kapitel 5 beschriebenen Sichtdefinitionen zur
Berechnung der Indikatoren als gegebenen angenommen werden. Die linke Tabelle in der
Abbildung 6.6 beinhaltet die entsprechenden Indikatorenwerte. Gesucht sind die basierend auf
diesen Indikatorwerten berechneten Signalpaare für die Strategiebewertung. Die rechte Tabelle
in Abbildung 6.6 enthält im Ergebnis dieser Berechnung die jeweilige Handelsinformation.
Dabei ist es gewünscht, dass die jeweils zusammengehörigen Signalpartner nebeneinander in
der selben Zeile stehen. Als ein Signalpaar sind ein relevantes Kaufsignal und das zeitlich
darauf folgende erste relevante Verkaufssignal zu verstehen. Im Ergebnis liefert die endgültige
Sicht, in Abbildung 6.6 die rechte Tabelle, die übersichtlichen Handelsinformationen. Die
Kursgewinne können dann aus den in derselben Zeile stehenden Kursinformationen zum
Kaufzeitpunkt und Verkaufszeitpunkt berechnet werden.
Um dem Anwender eine Flexibilität bei der Einstellung der Parameter anzubieten, sind
Hilfsfunktionen hinzugefügt worden. Diese Funktionen ermöglichen die vom Anwender
gewünschten Parameter in der SQL-Formulierung der Indikatoren sowie der Handelsstrategie
zu verwenden:
• sbGetPar1(), sbGetPar2(), sbGetPar3()
Diese Funktionen liefern die vom Anwender eingegebenen Berechnungsperioden oder
sonstige Eingabeperioden zur Berechnung der Indikatoren. Dadurch können Anwender
beliebig die Empfindlichkeit der Indikatorlinien bezüglich der Kurslinie einstellen.
• getBuy(), getSell()
Diese Funktionen liefern die Einstellungsparameter der Handelsstrategien. Dabei bilden
diese Parameter den Wert der Signallinien bei Überkreuzen-System (engl. Crossover
System).
92
6. Implementierung elementarer Handelsstrategien
Die gängigsten Signallinien bei Oszillatoren sind die Nulllinie, die Mittelpunktslinie oder
Linien, welche die extremen Zonen abgrenzen. Diese Einstellungsfunktion kann angewendet
werden, um beispielsweise rauschende Signale zu filtern oder um mehr Signale zu erzeugen.
Die extremen Zonen abgrenzenden Linien, CCI
Verkauf
Verkauf
Kauf
Kauf
Verkauf
Kauf
Kauf
Abbildung 6.7 CCI-Signallinien
Beispielsweise verwendet die CCI-basierte Handelsstrategie in der Abbildung 6.7 zwei
Signallinien mit den Werten -100 und 100, um Handelssignale zu erzeugen. In diesem Fall
beträgt getBuy() -100 und getSell() 100.
Abbildung 6.8 Eingabefelder des TInTo-StrategyBuilders
Das maskierte Bild aus dem TInTo-StrategyBuilder in der Abbildung 6.8 zeigt die Eingabefelder
für die Periodenparameter und die Parameter der Signallinien unterhalb des Listenfeldes. Mit
einem Klick auf eine der angebotenen Handelsstrategien im Listenfeld werden automatisch die
benötigten Einstellungsparameter mit den am meisten verbreiteten Parametern eingesetzt. Mit
dem Klick auf der Strategie CCI aus der Liste werden beispielsweise automatisch die
Berechnungsperiode 20 und die Werte der Signallinien für das Überkreuzen-System -100 und
100 eingeblendet. Natürlich können diese Werte vom Anwender auch beliebig geändert werden.
In den folgenden Abschnitten werden verschiedene, im Rahmen dieser Arbeit implementierte
und getestete, sichtbasierte Signalberechnungen für die Strategiebewertung und deren
Optimierungen erläutert. Die erste Implementierung endete mit wenig Erfolg resultierend in der
Microsoft Access Fehleranzeige „Your SQL-Query is too complex“. Erste, dann funktionsfähige
Versionen lieferten die erwarteten Ergebnisse, waren auf Grund ihrer extrem langen
Berechnungsdauern jedoch nicht praxistauglich. Im Ergebnis detaillierter Tests und
Ergebnisanalysen ließ sich die Berechnungseffizienz sukzessive verbessern, bis akzeptable
Rechenzeiten erreicht wurden.
93
6. Implementierung elementarer Handelsstrategien
Nachfolgende Varianten werden in den folgenden Abschnitten im Detail in ihrer
Implementierung, Effizienzanalyse und weiteren Optimierungsmöglichkeiten erläutert:
1. Naive Implementierung
2. Fortlaufende Nummern in Sichten
3. Separate Signalberechnung
4. Gruppieren der Datensätze
5. Materialisierte Sichten
Da der Schwerpunkt dieses Kapitels auf der Signalberechnung liegt, wird auf weitere
Erläuterungen zur Berechnung der Indikatoren hier verzichtet. Detaillierte Beschreibungen dazu
finden sich in den Kapiteln 3 und 5. Die in den folgenden Abschnitten graphisch dargestellten
Sichten sind für das Verständnis der Leser und für eine kompakte Darstellung erheblich
vereinfacht und müssen nicht mit den realen Ergebnissen der jeweiligen Sichten
übereinstimmen.
6.2.1 Naive Implementierung
Die Implementierungsvariante Naive Implementierung war die erste funktionsfähige Version.
Die gesamte Signalberechnung für die Strategiebewertung betrug etwa 65 Minuten für die CCIbasierte Handelsstrategie mit einem Analysezeitraum von einem Jahr und einer
Berechnungsperiode von 20 Handelstagen. Im Ergebnis war dies eine inakzeptable Variante, die
folgenden Ergebnisse der Performanzanalyse zeigen jedoch deutlich, wie aufwändig die
Teilberechnungen sind und welches Optimierungspotential besteht.
Diese Implementierung ist neben der Abfrage zur Berechnung des Indikators auf drei weitere
Abfragen aufgebaut:
sbInd
n
78
79
80
81
82
sbSig0
Ind1
98
102
103
107
101
sbSig1
sbSig2
n
Sig
n
Sig
n
Sig
n
56
89
90
98
Buy
Buy
Sell
Sell
56
90
Buy
Sell
56
Buy 90
Sig
Sell
Abbildung 6.9 Aufbau und Datenfluss der Sichten
• Die Abfrage sbInd übernimmt die Berechnung eines Indikators.
• Die Abfrage sbSig0 ermittelt alle möglichen Handelssignale basierend auf den Werten des
Indikators.
• Die Abfrage sbSig1 erzeugt alle relevante Handelssignale für die Strategiebewertung
beruhend auf sbSig0.
• Die letzte Abfrage leitet die Signale aus der Sicht sbSig1 ab, so dass ein Kaufsignal und das
darauf folgende erste Verkaufssignal als eine Handelseinheit zusammen in einer Zeile stehen.
Bei der Durchführung der Abfrage sbSig2 werden alle unterstützenden Abfragen (sbInd,
sbSig0, sbSig1) hierarchisch aufgerufen und als Basis verwendet.
94
6. Implementierung elementarer Handelsstrategien
Berechnung der Handelssignale (sbSig0)
Die Abfrage, sbSig0 berechnet die Handelssignale basierend auf der Abfrage sbInd nach den
folgenden Handelsregeln, welche das Überkreuzen-System umsetzt:
Annahme : Sei n fortlaufender Zeitpunkt.
Liefere Ind1 den Indikatorwert auf dem gegebenen Zeitpunkt.
∀n : {(Ind1(n-1) < getBuy()) ∧ (Ind1(n) ≧ getBuy()) } ⇒ (Signal(n) =„Kauf“)
∀n : {(Ind1(n-1) > getSell()) ∧ (Ind1(n) ≦ getSell()) } ⇒ (Signal(n) =„Verkauf“)
Die Abfrage sbSig0 besteht aus drei Teilen, die mit der UNION-Anweisung verbunden sind. Der
erste Teil ermittelt alle Kaufsignale und der zweite Teil alle Verkaufssignale. Der dritte Teil
generiert das letzte zusätzliche Verkaufssignal für die Strategiebewertung:
Abfrage sbSig0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(
SELECT sbI1.ID, sbI1.n, (sbI1.High+ sbI1.Low+ sbI1.Close)/3 AS TypicalPrice,
"Buy" AS Signal
FROM
sbInd AS sbI0, sbInd AS sbI1
WHERE sbI0.n >= sbGetPar1() AND sbI1.n >= sbGetPar1() AND sbI0.n +1 = sbI1.n
AND sbI0.Ind1<getBuy() AND sbI1.Ind1>= getBuy()
ORDER BY sbI1.n ASC
)
UNION
(
SELECT sbI1.ID, sbI1.n, (sbI1.High+ sbI1.Low+ sbI1.Close)/3 AS TypicalPrice,
"Sell" AS Signal
FROM
sbInd AS sbI0, sbInd AS sbI1
WHERE sbI0.n >= sbGetPar1() AND sbI1.n>= sbGetPar1() AND sbI0.n +1 = sbI1.n
AND sbI0.Ind1>getSell() AND sbI1.Ind1<= getSell()
ORDER BY sbI1.n ASC
)
UNION
(
SELECT LAST(sbInd.ID), LAST(sbInd.n),
(LAST(sbInd.High)+LAST(sbInd.Low)+LAST(sbInd.Close))/3 AS TypicalPrice,
"Sell" AS Signal
FROM
sbInd
);
Der erste Teil in den Zeilen 2-7 berechnet alle Kaufsignale:
• Der Bedingungsteil der Implikation der genannten Handelsregel für Kaufsignale ist in den
Zeilen 4-6 umgesetzt und rot unterstrichen. Um die zeitlich hintereinander folgenden Werte zu
vergleichen, ist die Abfrage sbInd mit sich selbst im FROM-Teil verknüpft. Dabei folgt die
Verbindungsbedingung sbI0.n+1=sbI1.n in der Zeile 5. Die Vergleiche mit den Signalwerten
sind in der Zeile 6 dargestellt. Die beiden Funktionen getBuy() und getSell() liefern die vom
Anwender eingegebenen Werten für Signallinien.
• Der Folgerungsteil der Implikation ist in der Zeile 3 im SELECT-Teil enthalten.
95
6. Implementierung elementarer Handelsstrategien
Der SELECT-Teil bestimmt neben der Signalanzeige auch sonstige auszuliefernde Daten für die
spätere Berechnung der Handelsrendite. Die ersten zwei Bedingungen im WHERE-Teil
schließen die Hilfsdaten zur Berechnung des Indikators aus. Abschließend werden die Daten
durch die ORDER-BY-Anweisung chronologisch sortiert.
Die Verkaufssignale werden analog zur Berechnung der Kaufsignale in den Zeilen 11-16
ermittelt und durch eine UNION-Verbindung mit den Kaufsignalen zusammengesetzt.
Abschließend werden in den Zeilen 20-23 die letzten Kursdaten aus dem Analysezeitraum als
die Daten zum Zeitpunkt eines Verkaufssignals hinzugefügt, um später den Preis des
vorhandenen Wertpapiers am Ende des Analysezeitraumes beurteilen zu können.
Berechnung der relevanten Handelssignale (sbSig1)
Basierend auf den ermittelten Handelssignalen werden nun anhand der Abfrage sbSig1 die
relevanten Signale für die Strategiebewertung abgeleitet.
sbSig0
n
Signal
Die Sicht sbSig0 enthält alle
Handelssignale. Bei der Sicht
sbSig0 in der Abbildung 5.10 sind
die erzielte relevante Signale in
Grün bzw. Rot markiert.
37
Verkauf
53
Kauf
78
Verkauf
84
Verkauf
92
Verkauf
112
Verkauf
134
Kauf
145
Kauf
189
Kauf
250
Verkauf
Relevantes Verkaufssignal
267
Verkauf
Letztes Signal ist immer
ein Verkaufssignal.
Verkaufssignal
Relevantes Kaufsignal
Kaufsignal
• Ein relevantes Kaufsignal liegt
vor, wenn das direkt davor
befindliche Handelssignal in der
Sicht sbSig0 ein Verkaufssignal
ist.
• Ein relevantes Verkaufssignal
liegt vor, wenn das direkt davor
befindliche Handelssignal in der
Sicht sbSig0 ein Kaufsignal ist.
Abbildung 5.10 Relevante Signale
Das in der Abfrage sbSig0 zusätzlich hinzugefügte letzte Verkaufssignal kann dabei nach der
vorgestellten Methodik für relevant oder irrelevant erklärt werden. Wenn das direkt davor
befindliche Signal wie in der Abbildung 5.10 ein Verkaufssignal ist, gilt dieses als irrelevant.
Sonst gilt dieses Signal als ein relevantes Verkaufssignal.
Die Abfrage sbSig1 besteht aus drei Teilen, die mit UNION-Anweisung verbunden sind. Der
erste Teil ermittelt alle relevanten Kaufsignale und der zweite Teil alle relevante
Verkaufssignale.
96
6. Implementierung elementarer Handelsstrategien
Abfrage sbSig1
1
2
3
6
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(
SELECT E.ID, E.n, E.TypicalPrice, E.Signal
FROM sbSig0 AS E, sbSig0 AS T
WHERE E.Signal='Buy' AND T.Signal ='Sell' AND T.n = (SELECT MAX(H.n)
FROM sbSig0 AS H
WHERE H.n<E.n)
ORDER BY T.n ASC, E.n ASC
)
UNION
(
SELECT E.ID, E.n, E.TypicalPrice, E.Signal
FROM sbSig0 AS T, sbSig0 AS E
WHERE E.Signal='Sell' AND T.Signal ='Buy' AND T.n = (SELECT MAX(H.n)
FROM sbSig0 AS H
WHERE H.n<E.n)
ORDER BY T.n ASC, E.n ASC
)
UNION
(
SELECT J.ID, J.n, J.TypicalPrice, J.Signal
FROM sbSig0 AS J
WHERE J.Signal ='Buy' AND J.n = (SELECT FIRST(k.n)
FROM
sbSig0 AS k )
);
• Die relevanten Kaufsignale werden in den Zeilen 2-7 berechnet. Um die zwei hintereinander
liegenden Signale in der Sicht sbSig0 zu vergleichen, wird ein Kreuzprodukt im FROM-Teil
gebildet. Das direkt vor einem Kaufsignal befindliche Signal muss ein Verkaufssignal sein,
um das Kaufsignal als relevant anzunehmen. Diese Bedingung ist dadurch implementiert, dass
das letzte vor einem Kaufsignal stehende Signal ermittelt wird. Dieses Signal weist den
maximalen n-Wert auf und wird in den Zeilen 4-6 durch die Aggregatfunktion MAX ermittelt.
• Die relevanten Verkaufssignale werden in ähnlicher Weise in den Zeilen 11-16 ermittelt und
mit der UNION-Verbindung zusammengesetzt.
• Letztlich wird in den Zeilen 20-23 noch ein Kaufsignal angelegt, unter der Bedingung, dass
das erste Handelssignal im Analysezeitraum eine Kaufsignal ist. Da das erste Signal nicht mit
einem davor liegenden Signal verglichen werden konnte, muss dieses separat betrachtet
werden. Wenn das erste Signal im Analysezeitraum ein Kaufsignal ist, ist es relevant. Wenn
das erste Signal im Analysezeitraum jedoch ein Verkaufssignal ist, ist es irrelevant. Zum
ersten Zeitpunkt im Analysezeitraum ist kein verkäufliches Wertpapier vorhanden.
Berechnung der Signalpaare (sbSig2)
Die endgültige Abfrage sbSig2 für die Signalberechnung stellt Handelssignale so dar, dass ein
relevantes Kaufsignal und das zeitlich darauf folgende erste relevante Verkaufssignal
nebeneinander in der Ergebnissicht stehen. Dabei liegt die Berechnung der Abfrage sbSig1
zugrunde:
97
6. Implementierung elementarer Handelsstrategien
Abfrage sbSig2
SELECT *
FROM sbSig1 AS T1, sbSig1 AS T2
3 WHERE T1.Signal='Buy' AND T2.Signal='Sell' AND T2.n = (SELECT MIN(T3.n)
4
FROM sbSig1 AS T3
5
WHERE T1.n < T3.n );
1
2
Um die zwei hintereinander befindlichen Signale zu betrachten, wird wieder ein Kreuzprodukt
im FROM-Teil gebildet. Das nach einem Kaufsignal folgende erste Verkaufssignal ist in den
Zeilen 3-5 so abgeleitet worden, dass ein Verkaufssignal mit dem minimalen n-Wert aus den
nachfolgenden Verkaufssignalen gesucht wird.
Performanzanalyse
Um die Leistungsfähigkeit der Berechnungen zu bewerten, wird beispielhaft die CCI-basierte
Handelsstrategie mit einem ein jährigen Analysezeitraum verwendet. Zum Zweck der
detaillierten Optimierungsanalyse wurde die Berechnungsdauer aller vorgestellten vier Sichten
auch separat untersucht. Folgende Testbedingungen gelten für alle nachfolgenden
Optimierungsvarianten und deren Berechnungsanalyse:
CCI-basierte Handelsstrategie
Werte von Signallininen : -100 für Kaufsignal, 100 für Verkaufssignal
Berechnungsperiode : 20 Handelstage
Analysewertpapier : Dow Jones Industrial Average
Analysezeitraum : 01.01 2008 - 31.12.2008 (253 Datensätze)
Anzahl der zu betrachtenden Datensätze : 272
Testinstrument : Microsoft XP SP3, Intel Pentium M Prozessor (1,60 GHz, 1,25GB), DSL 16MBit
Besonderheit : 1) Abfrage sbInd holt die benötigte Daten aus der Tabelle tmpCCI0.
2) Die Berechnungsdauer einer Abfrage beinhaltet neben der Durchführung der Abfrage
auch die Speicherung der Endergebnisse.
Die gesamte Durchführungszeit für die Naive Implementierung beträgt über eine Stunde (3956
Sekunden):
Datenfluss der Abfragen:
sbInd (CCI) → sbSig0 → sbSig1 → sbSig2
98
Abfrage
Berechnungsdauer (Sec)
sbInd (CCI)
0,2812
sbSig0
1,2343
sbSig1
218,5938
sbSig2
3956,078
6. Implementierung elementarer Handelsstrategien
Berechnungsdauer der Abfragen
sbInd (CCI)
sbSig0
sbSig1
sbSig2
0
1.000
2.000
3.000
4.000 Sec
Abbildung 6.11 Berechnungsdauer der Abfragen
Die Berechnungsdauern der Abfragen sbInd sowie sbSig0 sind im Vergleich zu den
Berechnungsdauern der darauf weiter aufgebauten Abfragen sehr kurz. Die Durchführungszeit
der Abfrage sbSig1 allerdings übersteigt deutlich die Berechnungsdauern der Basisabfragen
sbInd und sbSig0 und beträgt ca. 3,6 Minuten. Die Durchführungsdauer der hierarchisch auf der
letzten Ebene liegenden Abfrage, sbSig2 lag noch deutlich darüber und betrug etwa eine Stunde.
Schon vom Aufbau der Abfrage sbSig1 her kann man ermitteln, dass diese Berechnung sehr
zeitintensiv wird:
Der erste Teil der Abfrage sbSig1: Die Berechnung der relevanten Kaufsignal
2
3
4
5
6
SELECT E.ID, E.n, E.TypicalPrice, E.Signal
FROM sbSig0 AS E, sbSig0 AS T
WHERE E.Signal='Buy' AND T.Signal ='Sell' AND T.n = (SELECT MAX(H.n)
FROM sbSig0 AS H
WHERE H.n<E.n)
●
●
JOIN
E
n
67
78
92
101
Sig
Buy
Buy
Buy
Buy
T
n
H
n
Sig
Sig
Sell
Buy
52
67
52
84
153
167
Sell
Sell
Sell
Sell
Ergebnis
MAX
n
H
n
Sig
Sell
Buy
52
67
Sig
Buy
MAX
●
●
●
Abbildung 6.12 Die Berechnung der relevanten Kaufsignal: Der erste Teil der Sicht sbSig1
Um die relevanten Kaufsignale abzuleiten, wird die Sicht sbSig0 mit sich selbst in der Zeile 3 in
obigem SQL-Code verknüpft. Dabei ist die Basissicht sbSig0 jeweils in E und T umbenannt.
Abbildung 6.12 illustriert den Berechnungsaufwand, um lediglich „ein“ mögliches relevantes
Kaufsignal zu ermitteln. Für jedes Verkaufssignal in der Sicht T wird eine Aggregatbildung (hier
99
6. Implementierung elementarer Handelsstrategien
Maximum) benötigt. Die gesamte Anzahl solcher Aggregatbildungen zur Berechnung aller
relevanten Kaufsignale erreicht insgesamt die Anzahl der abgeleiteten Kaufsignale aus der Sicht
sbSig0 multipliziert mit der Anzahl der abgeleiteten Verkaufssignale aus der Sicht sbSig0. Die
Abfrage sbSig1 berechnet zusätzlich alle relevanten Verkaufssignale mit vergleichbarem
Aufwand.
Der Berechnungsaufwand der dahinterliegenden Basissichten ist hierbei noch nicht einmal
berücksichtigt. Jede Aggregatbildung, im Beispiel die Sicht H basiert auf der Berechnung der
Sicht sbSig0. Die Abfrage sbSig0 wiederum beruht auf der Abfrage sbInd.
Unter Verwendung der in der Abbildung 6.11 dargestellten CCI-basierten Strategie und deren
Bedingungen ist der folgende Berechnungsaufwand gegeben:
Bei „einmaliger“ Durchführung der Abfrage sbInd, die Abfrage sbSig0 benötigt deren 3
Durchläufe, entstehen je nach Anzahl der Handelstage ungefähr 5440 (= 272 Datensätze * 20
Berechnungsperiode) Datensätze. Die darauf folgende Abfrage sbSig0 besteht aus drei durch
UNION verbundene Teile. Im Ergebnis beträgt die Anzahl der zu betrachtenden Datensätze
dann ungefähr 16320 ( = 272 Datensätze * 20 Berechnungsperiode * 3).
Basierend auf der Abfrage sbSig1 wird schließlich die Abfrage sbSig2 durchgeführt. Diese ist
ähnlich aufgebaut wie sbSig1 und benötigt ebenfalls mehrfache Aggregatbildungen. Die
auffällig lange Berechnungszeit der Abfrage sbSig2 ist auf die aufwändigen Berechnungen der
Basisabfrage sbSig1 und die weiteren darauf aufbauenden vielfachen Aggregatbildungen
zurückzuführen.
Optimierungsidee
In den folgenden Optimierungen wird versucht, diese zahlreichen und zeitaufwendigen
Aggregatbildungen zu reduzieren. Eine weitere Idee besteht darin, die Berechnung der
Kaufsignale und Verkaufssignale in zwei verschiedene Abfragen aufzuteilen. Durch eine
separate Berechnung der Kaufsignale und der Verkaufssignale wird die Basistabelle im FROMTeil kleiner wodurch auch bei der Durchführung der Abfragen sbSig1 und sbSig2 das
Kreuzprodukt aus den Basistabellen verkleinert wird.
Demnach wird ein Teil der
Bedingungskriterien zur Einschränkung der Abfrage auf Kauf- oder Verkaufssignale nicht
benötigt und kann entfernt werden. Dadurch ist eine effizientere Berechnung zu erwarten.
6.2.2 Verwendung von fortlaufenden Nummern
Dieser Optimierungsversuch hat letztendlich nicht zum gewünschten Ergebnis geführt. Die
gesamte Berechnungsdauer erhöhte sich von etwa einer Stunde für die Naive Implementierung
auf bis über zweieinhalb Stunden für diese Variante unter gleichen Testbedingungen. Jedoch
sind alternative Lösungswege denkbar, um die hier zugrunde liegende Idee zu realisieren.
Optimierungsidee und Implementierung
Um die zahlreichen aufwändigen Aggregatbildungen in den Abfragen sbSig1 und sbSig2 in der
Naiven Implementierung zu vermeiden, wurden die schon chronologisch sortierten Datensätze
der Sichten fortlaufend durchnummeriert. Des Weiteren wurden zur Optimierung die
100
6. Implementierung elementarer Handelsstrategien
Signalberechnungen für Kauf- und Verkaufssignale aufgetrennt sowie der signifikante Kurs7
durch den einfachen Schlusskurs ersetzt. Letzteres spart die Berechnung des signifikanten
Kurses für jeden möglichen Handelstag.
Neue fortlaufende Nummern
sbSig0
sbSig0N
n
Signal
n
Signal
Nr
92
Verkauf
92
Verkauf
21
112
Verkauf
112
Verkauf
22
134
Kauf
134
Kauf
23
145
Kauf
145
Kauf
24
189
Kauf
189
Kauf
25
250
Verkauf
250
Verkauf
26
267
Verkauf
267
Verkauf
27
Verkaufssignal
Relevantes
Kaufsignal
Kaufsignal
Relevantes
Verkaufssignal
n: Fortlaufender Zeitpunkt
Abbildung 6.13 Einfügen von fortlaufenden Nummern in der Sicht sbSig0
Um in der in 6.2.1 vorgestellten Naiven Implementierung relevante Signale abzuleiten, wurde
eine Vielzahl von Aggregatfunktionen MAX() verwendet. Ziel war dabei, zwei hintereinander
liegende Datensätze in der Sicht sbSig0 zu vergleichen. Diese Prinzip ist nochmals in der
Abbildung 6.13 links verdeutlicht. Angemerkt sei hier nochmals, dass die fortlaufenden
Zeitpunkte (n-Werte) nicht gleichmäßig inkrementierende Nummern sind, da die Menge der
Signalzustände „Kein Handel“ zuvor aussortiert worden sind.
Der Optimierungsansatz besteht nun darin, dass, wenn es jeweils eine um eins inkrementierende
fortlaufende Nummerierung für jeden der Datensätze geben würde, die zwei hintereinander
liegenden Datensätze einfach mit Hilfe dieser zusätzlichen Indizes verglichen werden könnten:
• Naive Implementierung im Abschnitt 6.2.1
(Die Berechnung der relevanten Kaufsignal: Der erste Teil der Abfrage sbSig1)
1
2
3
4
5
SELECT E.ID, E.n, E.TypicalPrice, E.Signal
FROM sbSig0 AS E, sbSig0 AS T
WHERE E.Signal='Buy' AND T.Signal ='Sell' AND T.n = (SELECT MAX(H.n)
FROM sbSig0 AS H
WHERE H.n<E.n)
• Implementierung mit Hilfe von fortlaufender Nummerierung in Sicht
(Die Berechnung der relevanten Kaufsignal: Der erste Teil der Abfrage sbSig1K )
1
2
3
SELECT E.n, E.Close, E.Sig
FROM sbSig0N AS E, sbSig0N AS T
WHERE E.Sig='Buy' AND T.Sig ='Sell' AND T.Nr+1=E.Nr
7 Signifikanter Kurs (engl. Typical Kurs : TP ), TP(n) = (Close(n)+High(n)+Low(n))/3, n: Fortlaufender
Zeitpunkt.
101
6. Implementierung elementarer Handelsstrategien
Die aufwändigen Maximum-Bildungen bei dem in blau markierten Bedingungskriterium der
Naiven Implementierung könnten durch eine Vergleichsbedingung ersetzt werden, welche
anhand der fortlaufenden Nummerierung zu realisieren ist.
Aufbau der Sichten und Implementierung
Diese Optimierungsvariante ist im Vergleich Naiven Implementierung wie folgt aufgebaut:
• Naive Implementierung im Abschnitt 6.2.1
(Datenfluss der Sichten)
sbInd → sbSig0 → sbSig1 → sbSig2
• Implementierung mit Hilfe von fortlaufenden Nummern in Sicht
(Datenfluss der Sichten)
sbInd
sbSig0
sbSig1K
sbSig1KN
sbSig1V
sbSig1VN
sbSig0N
sbSig2
• In beiden Varianten berechnet die Abfrage sbSig0 alle Handelssignale in gleicher
Vorgehensweise. Jedoch wurde bei dieser Variante der Schlusskurs anstatt des signifikanten
Kurses für den auszuliefernden Kurspreis verwendet. Dies spart die Berechnung des
signifikanten Kurses ein.
• Die Abfragen sbSig0N, sbSig1KN sowie sbSig1VN sorgen dafür, dass die fortlaufenden
Nummern in der jeweiligen Sicht entstehen.
• Die Abfrage sbSig1 der Naiven Implementierung berechnet alle relevanten Signale für die
Strategiebewertung. Dabei ist die Berechnung relevanter Kaufsignale und Verkaufssignale mit
der UNION-Verbindung realisiert. In dieser neuen Variante findet die jeweilige Berechnung
relevanter Kaufsignale und relevanter Verkaufssignale durch die Abfrage sbSig1K und
sbSig1V separat statt.
• Die Abfrage sbSig2 stellt bei beiden Varianten die zusammengehörigen Signalpartner in
derselben Zeile als Signalpaare zusammen. In der Naiven Implementierung musste bei der
Durchführung der Abfrage sbSig2 die Sicht sbSig1 mit sich selbst verknüpft werden.
Angenommen, es gäbe jeweils 50 relevante Kaufsignale und Verkaufssignale. Dann enthält
das Kreuzprodukt 10,000 (=100 * 100) Datensätze. In der neuen Version enthält das
Kreuzprodukt bei der Abfrage sbSig2 durch separate Berechnung nur 2,500 (= 50*50)
Datensätze, welche durch sbSig2 für die Zusammenstellung der Signalpartner zu durchlaufen
sind.
Anhand der fortlaufenden Nummern kann die Abfrage sbSig2 wie folgt ohne zusätzliche
Minimum-Bildungen realisiert werden:
Abfrage sbSig2
1
2
3
SELECT E.n, E.Close, E.Sig, T.n, T.Close, T.Sig
FROM sbSig1KN AS E, sbSig1VN AS T
WHERE T.Nr=E.Nr
Nach der Berechnungslogik ist die Anzahl der relevanten Kaufsignale und die Anzahl der
relevanten Verkaufssignale für die Strategiebewertung gleich. Daher besitzen die chronologisch
102
6. Implementierung elementarer Handelsstrategien
sortierten zusammengehörigen Signalpartner denselben Nr-Wert. Diese Bedingung ist in der 3.
Zeile der Abfrage sbSig2 aufgeführt.
Implementierung der Vergabe der fortlaufenden Nummern in Sichten
Die Ursache für die verlängerte Laufzeit dieser Variante lag schließlich an der Realisierung der
fortlaufenden Nummern in den Sichten. Als ein Beispiel für die Implementierung dient hier die
Abfrage sbSig0N:
Abfrage sbSig0N
SELECT n, Close, Sig, (SELECT Count(*)
FROM sbSig0 as Temp
WHERE Temp.n < sbSig0.n) AS Nr
4 FROM
sbSig0;
1
2
3
Die Abfrage sbSig0N vergibt von null an fortlaufend immer eine um eins inkrementierende
Nummer für jeden Datensatz in der Sicht sbSig0. Die Funktion COUNT in der erste Zeile zählt
hier alle Datensätze auf, deren n-Wert kleiner als der des gerade aufgerufenen Datensatzes ist.
Damit wird eine Spalte mit fortlaufenden Nummern simuliert, wofür hier leider eine
Aggregatfunktion COUNT für jeden Datensatz der Sicht sbSig0 verwendet werden musste.
Performanzanalyse
In dieser Implementierung ist feststellbar, dass die Berechnungen für die Vergabe der
fortlaufenden Nummern sehr aufwändig sind:
Datenfluss der Abfragen:
sbInd (CCI)
sbSig0
Abfrage
Berechnungsdauer (sec)
sbInd(CCI)
0,2812
sbSig0
1,2968
sbSig0N
29,7812
sbSig1K
234,375
sbSig1V
213,4531
sbSig1KN
1179,594
sbSig1VN
1069,016
sbSig2
8466,672
sbSig1K
sbSig1KN
sbSig1V
sbSig1VN
sbSig0N
sbSig2
Getestet wurde hier beispielsweise die CCI
basierte Handelsstrategie über ein Jahr.
Das Einfügen der fortlaufenden Nummern in
die Sicht sbSig0 dauert ca. 30 Sekunden,
während die Laufzeit der Sicht sbSig0
ungefähr nur 1,3 Sekunden ergibt. Die
Vergabe der fortlaufenden Nummern in den
Sichten sbSig1K und sbSig1V beträgt bis
zum Fünffachen der Berechnungszeit von
sbSig1K und sbSig1V.
Abbildung 6.14 Die Berechnungsdauer der Abfragen ( Testbedingungen 8 )
8 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanzanalyse in der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind auch im Anhang 6-A aufgeführt.
103
6. Implementierung elementarer Handelsstrategien
Neben den aufwändigen Berechnungen für die Vergabe der fortlaufenden Nummern ist die
gesamte Durchführungsdauer, die Berechnung der Abfrage sbSig2 beträchtlich:
Berechnungsdauer der Abfragen (Version : Fortlaufende Nummern in Sichten)
sbInd (CCI)
sbSig0
sbSig0N
sbSig1K
sbSig1V
sbSig1KN
sbSig1VN
sbSig2
0
2.250
4.500
9.000 Sec
6.750
Laufzeit der Signalberechnung für Strategiebewertung (Abfrage sbSig2 )
Naive Implementierung
Fortlaufende Nummern in Sichten
0
2.250
4.500
6.750
9.000 Sec
Abbildung 6.15 Die Berechnungsdauer der Abfragen ( Testbedingungen 9 )
Die gesamte Dauer zur Signalberechnung der Strategiebewertung beträgt etwa zweieinhalb
Stunden und damit über das Zweifache verglichen mit der Naiven Implementierung aus
Abschnitt 6.1.1. Dieser Berechnungsaufwand resultiert daraus, dass die für die Vergabe der
fortlaufenden Nummern verwendete COUNT-Funktion für alle Datensätze der Sichten ohne
Einschränkungen verwendet werden musste. Die auf dieser Basis konstruierten Sichten dienen
weiterhin als Basistabellen für die folgenden Abfragen. Dieselbe Nummerierungsmethode findet
in den weiteren Sichtebenen Verwendung, was im Ergebnis zu dem schlechten
Laufzeitverhalten führt.
Optimierungsideen
Alternative Lösungswege zur Realisierung fortlaufender Nummern und weitere Optimierungen
sind vorstellbar:
• NEXT()- oder PRIOR()-Funktion
Zum Navigieren in Datensätzen bietet Access 2003 nur die Funktionen FIRST() und
LAST(). Funktionen wie NEXT() oder PRIOR(), welche sich auf zwei hintereinander
befindliche Datensätze in Sicht beziehen, wären sehr sinnvoll in der Signalberechnung
einsetzbar, fehlen allerdings in Access. Eine Simulation in SQL ist zwar möglich, könnte
allerdings zu vergleichbarem Aufwand und negativem Laufzeitverhalten führen wie die
Aggregatfunktionen MAX() und COUNT().
9 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanzanalyse in der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind auch im Anhang 6-A aufgeführt.
104
6. Implementierung elementarer Handelsstrategien
• Realisierung der fortlaufenden Nummern anhand von VBA
Als eine umgehende Lösung kann eine in VBA implementierte Funktion in der Zielliste,
also im SELECT-Teil, anlegt werden, welche bei jedem Datensatz erneut aufgerufen wird
und je Aufruf eine um eins fortlaufende Zahl liefert. Damit können fortlaufende
Nummern in Sichten simuliert werden, wobei der Gewinn an Effizienz vielversprechend
erscheint.
• Materialisieren der Sichten
Ein Speichern der Sichten wäre der einfachste Ausweg mit garantierter Verbesserung an
Laufzeit um den Preis eines erhöhten Speicherbedarfs. Beim Materialisieren kann eine
Spalte durch den Datentyp Autonumber definiert werden, wodurch die automatisch
fortlaufenden Nummern in der Tabelle realisiert werden können. Alternativ kann man bei
materialisierten Sichten mit der ALTER TABLE-Anweisung mit COUNTER-Funktion
fortlaufende Nummern erzeugen. Beide Methoden sind im nächsten Kapitel für die
Renditeberechnung der Handelsstrategien verwendet worden und werden dort im Detail
beschrieben.
• Optimierungen an SQL-Formulierungen
Um die Größe der Basistabellen für die folgenden Abfragen klein zu halten, sind die
Berechnungen relevanter Kaufsignale und Verkaufssignale bei dieser Variante separat
implementiert. Für die Realisierung einer höheren Effizienz könnten die separaten
Berechnungen schon frühzeitig bei den Berechnungen der Handelssignale verwendet
werden.
Die umgehende Lösung anhand von VBA oder durch Materialisieren versprechen, die Laufzeit
sicher zu verkürzen. Es bleibt allerdings die Frage zu beantworten, ob die umgehende Lösung
anhand von VBA für zukünftige Erweiterungen der Handelsstrategien und für die
Portfoliobildungen aus verschiedenen Strategien ein stabiles Fundament bieten kann. Weiterhin
ist vorhersehbar, dass das Materialisieren der günstiger strukturierten Sichten (siehe Punkt oben
„Optimierungen an SQL Formulierungen“) einen noch größeren Berechnungsvorteil
ermöglichen wird als in dieser Implementierung nach 6.2.2. Darüber hinaus unterstützt Access
2003 materialisierte Sichten nicht direkt, so dass diese simuliert werden müssen.
Auf Grund dieser Unsicherheiten hinsichtlich der zur erwartenden Ergebnisse aus der VBANummerierung und der simulierten Materialisierung fiel die Entscheidung für eine Umsetzung
der Optimierungsversuche an den SQL-Formulierungen.
In den nächsten Abschnitten folgen weitere Optimierungsvarianten, die die Laufzeit deutlich
verbessern.
6.2.3 Separate Berechnung von Handelssignale
Der Ansatz dieser Optimierung ist, die Basistabellen für Sichten möglichst klein zu halten mit
dem Ziel, den Aufwand für die gesamte Berechnung zu reduzieren. Dazu wird die Berechnung
der Kaufsignale und Verkaufssignale frühzeitig auf die nach der Berechnung des Indikators
folgende Sichtebene aufgeteilt:
sbBuy
sbInd
sb0
sbSell
105
sb1
6. Implementierung elementarer Handelsstrategien
• Die Abfrage sbBuy bzw. sbSell berechnet alle Kaufsignale bzw. Verkaufssignale basierend auf
der Berechnung des Indikators, der Abfrage sbInd. Diese separate Berechnung der
Handelssignale erzielt einen weiteren Effizienzvorteil. Dabei können Kaufsignale aus der
Sicht sbBuy und Verkaufssignale aus der Sicht sbSell einfach durch Kreuzprodukt-Bildung in
der Sicht sb0 ohne zusätzliche Bedingungskriterien verknüpft werden, so dass im Ergebnis ein
Kaufsignal und ein Verkaufssignal in einem Datensatz stehen. Diese Signale sind aber im
Folgenden noch in Signalpaare zu sortieren. Im Vergleich dazu war bei der Naiven
Implementierung im Abschnitt 6.2.1. feststellbar, dass die zusätzliche Darstellung der
relevanten Signale als Signalpaare sehr aufwändig ist. Diese Durchführung dauerte über eine
Stunde, während die Berechnung der relevanten Signale in weniger als 4 Minuten
abgeschlossen war.
• Basierend auf den Abfragen sbBuy und sbSell liefert die Abfrage sb0 die relevanten
Verkaufssignale zusammen mit allen Kaufsignalen.
• Schließlich filtert die Abfrage sb1 nur relevante Kaufsignale und liefert paarweise alle
relevanten Kaufsignale mit ihren schon berechneten relevanten Verkaufssignalen.
Die Berechnungsmethode für die Handelssignale in den Abfragen sbBuy und sbSell sind wieder
gleich den Berechnungen in der Naiven Implementierung. Die in der Naiven Implementierung
durch UNION verbundenen Berechnungsteile für Kauf- bzw. Verkaufssignale werden hier nun
allerdings in zwei Abfragen sbBuy und sbSell aufgeteilt. Dabei wird bei dieser Variante der
Schlusskurs analog 6.2.2 anstatt des signifikanten Kurses in der Zielliste angewendet.
Berechnung der relevanten Verkaufssignale (sbSig0)
Als Basissichten für die Berechnung der relevanten Signale verwenden wir jetzt zwei Sichten,
welche alle Kaufsignale bzw. Verkaufssignale enthalten:
Naive Implementierung:
Sicht sbSig0
Separate Signalberechnung :
Sicht sbBuy
n
Sig
35
Sell
39
Buy
48
Buy
60
Sell
81
Sell
98
Buy
109
Buy
123
Buy
150
Sell
Sicht sbSell
n
Sig
n
Sig
39
Buy
35
Sell
48
Buy
60
Sell
98
Buy
81
Sell
109
Buy
150
Sell
123
Buy
n: Fortlaufender Zeitpunkt
Abbildung 6.16 Die Basistabellen für die Berechnung der relevanten Signale.
Bei den Sichten in der Abbildung 6.16 sind die ermittelten relevanten Kaufsignale grün und die
Verkaufssignale rot markiert. Die grau markierten Signale sind irrelevant und müssen hier
wegsortiert werden. In der Sicht sbSig0 in der Naiven Implementierung kann man die relevanten
106
6. Implementierung elementarer Handelsstrategien
Signale einfacher erkennen. Relevante Verkaufssignale werden dort immer am Ende einer Serie
von Kaufsignalen erzeugt.
Dies ist nicht so in der hier beschriebenen Implementierung Separate Signalberechnung. Hier
folgt beispielsweise ein relevantes Verkaufssignal zum Zeitpunkt 150 in der Sicht sbSell nach
einer Reihe von Kaufsignalen zu den Zeitpunkten 98, 109 und 123 in der Sicht sbBuy. Dies
bedeutet, dass ein relevantes Verkaufssignal das jeweils erste Verkaufssignal ist, dessen n-Wert
größer ist als der n-Wert des jeweiligen Kaufsignals. Diese Regel für das erste Verkaufssignal ist
durch die Suche nach dem minimalen n-Wert in den Zeilen 4-6 in der folgenden Abfrage
realisiert, ähnlich der Naiven Implementierung:
Abfrage sb0
1 SELECT B.n AS BN, B.Close AS BClose, B.Sig AS BSig,
S.n AS SN, S.Close AS SClose, S.Sig AS SSig
sbBuy AS B, sbSell AS S
4 WHERE S.n IN ( SELECT MIN(S2.n)
5
FROM sbSell AS S2
6
WHERE B.n < S2.n
);
2
3 FROM
Im FROM-Teil werden alle Kaufsignale mit allen Verkaufssignalen verknüpft. Im Ergebnis
stehen alle Kaufsignale und nur die relevanten Verkaufssignale nebeneinander. Anders als bei
der Naiven Implementierung sind die Bedingungskriterien zur Unterscheidung für Kauf- bzw.
Verkaufssignale hier nicht nötig, da diese in sbBuy und sbSell separat erzeugt werden.
Auch ist eine zusätzliche Berücksichtigung bzgl. des ersten Verkaufssignals nicht nötig. Wenn
das erste Signal im Analysezeitraum ein Verkaufssignal ist, wird dieses immer ausgefiltert. In
diesem Fall existiert kein Kaufsignal, welches für den Analysezeitraum einen kleineren n-Wert
als dieses erste Verkaufssignal enthält. Dieses erste Signal erfüllt dann die Bedingung in der
Zeile 6 der Abfrage sb0 nicht.
Berechnung der relevanten Kaufsignale (sbSig1)
Für die anschließende Ermittlung der relevanten Kaufsignale dient dann die erläuterte Sicht sb0
als Basissicht :
Sicht sb0
BN
BSig
SN
SSig
39
Buy
60
Sell
48
Buy
60
Sell
98
Buy
150
Sell
109
Buy
150
Sell
123
Buy
150
Sell
Abbildung 6.17 Basissicht sb0
Abbildung 6.17 zeigt die Sicht sb0, welche auf den in der Abbildung 6.16 dargestellten Sichten
sbBuy und sbSell basiert. Die Sicht sb0 enthält auf der linken Seite alle Kaufsignale, alle
relevanten Verkaufssignale finden sich auf der rechten Seite. Die relevanten Kaufsignale sind
107
6. Implementierung elementarer Handelsstrategien
grün und relevante Verkaufssignale rot markiert. Auffällig ist, dass man Kaufsignale nach dem
n-Wert des Verkaufssignals gruppieren kann. Das erste Kaufsignal der jeweiligen Gruppe ist das
jeweils relevante Kaufsignal. In der folgenden Abfrage sb1 wird diese Logik durch eine
Minimum-Bildung in den Zeilen 3-5 realisiert:
Abfrage sb1
1 SELECT *
2 FROM sb0 AS A
3 WHERE A.BN IN ( SELECT
MIN(C.BN)
FROM
sb0 AS C
GROUP BY C.SN
);
4
5
In dieser Implementierung ist eine zusätzliche Berücksichtigung bzgl. des ersten Kaufsignals
nicht nötig. Wenn das erste Handelssignal im Analysezeitraum ein Kaufsignal ist, wird dieses
immer als ein relevantes Signal erkannt. In dem Fall enthält das erste Kaufsignal immer den
kleinsten n-Wert der ersten Gruppe. Dies erfüllt dann die Bedingungskriterien in den Zeilen 3-5.
Performanzanalyse
Die Durchführungszeit dieser Optimierungsvariante Separate Signalberechnung wird im
Vergleich zu den vorausgegangenen beiden Implementierungen in 6.2.1 und 6.2.2 erheblich
verkürzt:
Laufzeit der Signalberechnung für Strategiebewertung
Naive Implementierung
Fortlaufende Nummer in Sichten
Separate Signalberechnung
0
2.250
4.500
6.750
9.000 Sec
Abbildung 6.17 Gesamte Berechnungsdauer ( Testbedingung10 )
Unter denselben Testbedingungen beträgt die Berechnungszeit dieser vorliegenden Variante ca.
80 Sekunden, während die Berechnung bei der Naiven Implementierung 3956 Sekunden und bei
der Variante mit den fortlaufenden Nummern in Sichten 8466 Sekunden in Anspruch nahm.
Wie wurden diese Verbesserungen erzielt? Die folgenden Tabellen stellen die
Berechnungsdauern jeder Sicht für die Varianten Naive Implementierung sowie Separate
Signalberechnung dar:
sbBuy
Datenfluss der Abfragen :
sbInd (CCI)
(Version: Separate Signalberechnung)
sb0
sb1
sbSell
10 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanz Analyse der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind in Anhang 6-A aufgeführt.
108
6. Implementierung elementarer Handelsstrategien
Separate Signalberechnung
Naive Implementierung
Abfrage
Berechnungsdauer (Sec)
Abfrage
Berechnungsdauer (Sec)
sbInd (CCI)
0,2812
sbInd (CCI)
0,2812
sbSig0
1,2343
sbBuy
0,5156
sbSig1
218,5938
sbSell
0,7343
sbSig2
3956,078
sb0
63,2501
sb1
79,6415
Abbildung 6.18 Vergleich der Berechnungsdauern ( Testbedingung 11 )
Die Ursachen für die verkürzte Berechnungsdauer liegen hier hauptsächlich in der frühzeitigen
separaten Signalberechnung begründet:
Die Basistabelle für die weiteren Sichten sind kleiner und es müssen weniger Datensätze
durchlaufen werden, um die Erfüllbarkeit der Bedingungskriterien zu beurteilen. Die
Berechnung aller relevanten Signale in der vorliegenden Implementierung (Abfrage sb1) dauert
merklich kürzer als die Berechnung der relevanten Signale bei der Naiven Implementierung
(Abfrage sbSig1).
Weiterhin brauchen Signale bei dieser Variante nicht mehr durch eine zusätzliche Abfrage in
Signalpaare zugeordnet zu werden. Eine aufwändige Berechnung, analog der Abfrage sbSig2 in
der Naiven Implementierung fällt damit weg.
Optimierungsidee
In dieser Variante ist es auffällig, dass die Berechnungsdauer der Abfrage sb0 sehr
zeitaufwändig ist:
Berechnungsdauer der Abfragen (Version : Separate Signalberechnung )
sbInd(CCI)
sbBuy
sbSell
sb0
sb1
0
20
40
60
80 Sec
Abbildung 6.19 Die Berechnungsdauer der Abfragen ( Testbedingung12 )
Die Durchführung der Abfrage sb0 benötigt die über 50-fache Zeit verglichen mit den
summierten Berechnungsdauern der Basisabfragen sbBuy und sbSell. Im Vergleich dazu ist die
Berechnungsdauer der Abfrage sb1 nur ca. 25% länger als die Durchführungszeit der Basissicht
sb0.
11 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanz Analyse in der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind in Anhang 6-A aufgeführt.
12 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanz Analyse in der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind in Anhang 6-A aufgeführt.
109
6. Implementierung elementarer Handelsstrategien
Die höhere Effizienz ist unter anderem darauf zurückzuführen, dass die in der Abfrage sb1
verwendete Gruppierung den Berechnungsaufwand deutlich reduziert hat. In der nachfolgenden
Optimierung in 6.2.4 steht das Ziel, solche Gruppierungen für weitere Abfragen effektiv
einzusetzen.
6.2.4 Gruppieren der Datensätze
Durch die Verwendung von Gruppierungen für die Berechnung relevanter Kaufsignale, aber
auch relevanter Verkaufssignale konnte der Berechnungsaufwand der bisherigen zahlreichen
Aggregatbildungen deutlich reduziert werden. In dieser nun folgenden Implementierung unter
Verwendung von Gruppieren der Datensätze sind Optimierungen an allen zugrunde liegenden
Abfragen durchgeführt worden. Die gesamte Berechnungsdauer hat sich im Ergebnis von
80.000 Millisekunden für die in 6.2.3 erläuterte Implementierung bis auf 840 Millisekunden in
dieser weiteren Optimierung bei unveränderten Testbedingungen reduziert.
Die gesamte Berechnung ist wie folgt aufgebaut:
sbBuy
sbInd
sb0
sb1
sbSell
SBT
sb2
• Die Abfrage sbInd übernimmt wieder die Berechnung des Indikators.
• Basierend auf der Abfrage sbInd berechnen die Abfragen sbBuy bzw. sbSell die Kaufsignale
bzw. die Verkaufssignale.
• Die Abfrage sb0 bzw. sb1 berechnet relevante Verkaufssignale bzw. Kaufsignale.
• Ein Besonderheit dieser Variante besteht darin, dass die Abfragen sbBuy, sbSell, sb0 und sb1
nur die n-Werte (fortlaufende Zeitpunkte) betrachten, da nur diese für die Berechnung
relevanter Signale benötigt werden. Die zugrunde liegenden Berechnungen liefern nur die nWerte, die Abfrage sb2 ermittelt die sonstigen Dateninformationen wie Datum und
Schlusskurs für die Darstellung des Ergebnisses.
• Letztlich stellt die Abfrage SBT das vollständige Ergebnis basierend auf den Abfragen sb1
und sb2 dar.
Neben den Optimierungen bei den Signalberechnungen der Strategiebewertung sind auch
Optimierungen bei den Berechnungen aller in TInTo angebotenen Indikatoren durchgeführt
worden.
Berechnung der Indikatoren (sbInd)
Für die Berechnungen der Indikatoren sind bisher die schon vorhandenen Sichtdefinitionen aus
der früheren TInTo-Version aber mit den in Kapitel 5 vorgestellten Korrekturen verwendet
worden. Allerdings werden dabei nicht benötigte Daten immer mit aggregiert und bei den
Berechnungen der weiteren Abfragen stets mitgeführt. Um die Recheneffizienz zu erhöhen,
werden solche nicht benötigte Daten in dieser neuen Implementierung nunmehr frühzeitig
beschränkt.
Als ein Beispiel soll hier die Berechnung der RSI-Werte dienen. Dessen Formel sowie
Rechenschritte sind bereits in den Abschnitten 3.4.2 sowie 5.4.2 erläutert worden. Auf eine
detaillierte Erläuterung der Berechnung des Indikators wird hier deshalb verzichtet und nur auf
110
6. Implementierung elementarer Handelsstrategien
die Unterschiede zwischen der ursprünglichen und der nunmehr verbesserten Abfrage
eingegangen.
Ursprüngliche Berechnung:
Bei der folgenden Abfrage sind nur die benötigten Daten für die weiteren Abfragen rot
unterstrichen dargestellt:
Abfrage sbInd (Vorher)
1 SELECT tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
2
3
4
5
6
7
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
tmpAggregation.Volstart, tmpAggregation.Vol,
100*(AVG(IIF(TK1.Close>TK2.Close,TK1.Close-TK2.Close,0))/
(AVG(IIF(TK1.Close>TK2.Close,TK1.Close-TK2.Close,0)
+AVG(IIF(TK1.Close<TK2.Close,TK2.Close-TK1.Close,0)))) AS Ind1,
AVG(IIF(TK1.Close>TK2.Close,TK1.Close-TK2.Close,0)) AS Ind2,
AVG(IIF(TK1.Close<TK2.Close,TK2.Close-TK1.Close,0)) AS Ind3
8
9
10FROM (tmpAggregation INNER JOIN tmpAggregation AS TK1 ON (tmpAggregation.ID=TK1.ID))
11
INNER JOIN tmpAggregation AS TK2 ON (TK1.ID=TK2.ID AND TK1.n-1=TK2.n)
12
13 WHERE tmpAggregation.ID=spGetID() AND TK1.n<=tmpAggregation.n AND
14
TK1.n>tmpAggregation.n-sbGetPar1()
15
16 GROUP BY tmpAggregation.ID, tmpAggregation.n, tmpAggregation.Date, tmpAggregation.High,
17
tmpAggregation.Low, tmpAggregation.Open, tmpAggregation.Close,
18
tmpAggregation.Vol, tmpAggregation.Volstart
19
20 ORDER BY tmpAggregation.ID DESC, tmpAggregation.Date DESC;
• In der Tabelle tmpAggregation sind ursprünglich die gesamten Kursdaten sowie
Handelsvolumen für die Berechnung zusammengefasst. Aber für die Signalberechnung sowie
Bewertung der beispielsweise RSI-basierten Handelsstrategie werden nur das Datum, die nWerte (fortlaufender Zeitpunkt) und die Schlusskurse benötigt. Zu diesem Zweck wird eine
temporäre Tabelle sbA hergestellt, darin nur die benötigten Daten aggregiert und die Tabelle
am Ende der Berechnungen gelöscht.
• Bei der dargestellten Abfrage sbInd können dann überflüssige Kursdaten sowie
Handelsvolumen in den Zeilen 1-3 und ebenfalls Zwischenergebnisse in den Zeilen 7-8
entfernt werden.
• Dementsprechend kann der GROUP BY-Teil ebenfalls reduziert werden.
• Da die Tabellen sbA sowie tmpAggregation immer die Kursdaten eines gewünschten
Wertpapiers zusammenfassen, ist hier die Bedingung bzgl. der Wertpapier-ID unnötig.
111
6. Implementierung elementarer Handelsstrategien
Optimierte Berechnung:
Die neu definierte RSI-Berechnung lautet nach der Optimierung wie folgt:
Abfrage sbInd (Nachher)
1 SELECT
2
3
4
5
6
A.n, 100*(AVG(IIF(B.Close>C.Close,B.Close-C.Close,0))/
(AVG(IIF(B.Close>C.Close,B.Close-C.Close,0))
+AVG(IIF(B.Close<C.Close,C.Close-B.Close,0)))) AS Ind
FROM
(sbA AS A INNER JOIN sbA AS B ON (B.n<=A.n) AND (B.n>A.n-sbGetPar1()) )
INNER JOIN sbA AS C ON B.n-1=C.n
GROUP BY A.n;
Bei der neuen Abfrage sbInd werden nur die für die weiteren Berechnungen absolut
notwendigen Daten betrachtet. Diese sind die n-Werte (fortlaufende Zeitpunkte) und die Werte
des Indikators in der Zielliste im SELECT-Teil.
Berechnung der Handelssignale (sbBuy, sbSell)
Auf Basis der vorgestellten Anfrage sbInd werden Handelssignale berechnet. Dabei sind für die
folgende Berechnung der relevanten Signale nur die n-Werte (fortlaufende Zeitpunkte)
erforderlich. Deshalb werden hier gleichermaßen überflüssige Daten entfernt.
Repräsentativ wird hier nur die Berechnung der Verkaufssignale im Detail dargestellt.
Ursprüngliche Berechnung:
Die ausführliche Erläuterung dieser Berechnung ist bereits im Abschnitt 6.2.1 in der
Beschreibung der Naiven Implementierung enthalten. Im Folgenden soll nur auf den
Optimierungsteil eingegangen werden.
1 ( SELECT
2
3
4
5
sbI1.ID, sbI1.n, sbI1.Close, "Sell" AS Signal
FROM
sbInd AS sbI0, sbInd AS sbI1
WHERE sbI0.n >= sbGetPar1() AND sbI1.n>= sbGetPar1() AND sbI0.n +1 = sbI1.n
AND sbI0.Ind1>getSell() AND sbI1.Ind1<= getSell()
ORDER BY sbI1.n ASC )
6
7 UNION
8
9 ( SELECT LAST(sbInd.ID), LAST(sbInd.n), LAST(sbInd.Close), "Sell" AS Signal
10
FROM
sbInd );
Nach der folgenden Handelsregel werden in den Zeilen 1-5 alle Verkaufssignale berechnet :
Sei n fortlaufender Zeitpunkt.
∀n : {(Ind1(n-1) > getSell()) ∧ (Ind1(n) ≦ getSell()) } ⇒ (Signal(n) =„Verkauf“)
Um den Preis der vorhandenen Wertpapiere zum Ende des Analysezeitraums zu ermitteln, wird
zu diesem Zeitpunkt ein zusätzliches Verkaufssignal in den Zeilen 9-10 generiert.
112
6. Implementierung elementarer Handelsstrategien
• Wiederum ist die Information Wertpapier-ID in den Zeilen 1 und 9 und im ORDER BY Teil in
der Zeile 5 für die weitere Berechnung überflüssig, da nur die Daten eines gewählten
Wertpapiers in der temporären Tabelle aggregiert sind.
• Auf die zusätzlichen Angaben der Signale („Sell“ AS Signal) in den Zeilen 1 und 9 kann
verzichtet werden, da Kaufsignale und Verkaufssignale separat berechnet und betrachtet
werden.
• Um ein zusätzliches Signal am Ende des Analysezeitraums zu erzeugen, ist die erneute
Berechnung des Indikators Abfrage sbInd überflüssig. In diesem Fall können die benötigten
Daten aus der schon vorliegenden Basistabelle abgeleitet werden.
Optimierte Berechnung:
Die angepasste Sichtdefinition lautet wie folgt :
Abfrage sbSell (Nachher)
1 ( SELECT B.n
sbInd AS A INNER JOIN sbInd AS B
ON (A.n +1 = B.n) AND (A.Ind > getSell() AND B.Ind<= getSell())
4
WHERE A.n>= 0 AND B.n>= 0 )
5 UNION
6 ( SELECT LAST(n) FROM sbA );
2
3
FROM
Die auszuliefernden Daten sind nur die n-Werte im SELECT-Teil in den Zeilen 1 und 6 für die
nachfolgende Berechnung der relevanten Signale. Bei der Aggregation der Daten in der
temporären Tabelle sbA sind schon die Einschränkungskriterien bzgl. der Berechnungsperiode
berücksichtigt. Dabei werden die Hilfsdaten für die Berechnung des Indikators aussortiert.
Demnach sind die ersten zwei Bedingungen in der Zeile 3 aus der vorherigen Version durch die
Bedingungen im WHERE-Teil in dieser angepassten Sichtdefinition zu ersetzen.
Berechnung der relevanten Verkaufssignale (sb0)
Basierend auf den Abfragen sbSell und sbBuy werden im Weiteren die relevanten Signale
berechnet. Bei dieser Berechnung kommt die Methode „Gruppierung der Datensätze“ zum
Einsatz, welche einen großen Zugewinn an Effizienz mit sich bringt.
Auf eine detaillierte Erläuterung der Berechnung der relevanten Signale analog der letzten
Implementierung Separate Signalberechnung wird hier verzichtet und sich nur auf den zu
vergleichenden Berechnungsaufwand konzentriert.
Ursprüngliche Berechnung:
Bei der letzen Implementierung war es auffällig, dass die Berechnung der relevanten
Verkaufssignale sehr aufwändig ist. Die Berechnungsdauer relevanter Signale stieg drastisch auf
das über 50-Fache der summierten Berechnungsdauern der Basisabfragen an.
Bei dieser Berechnung wird ein Kreuzprodukt aus der Sicht mit Kaufsignalen und der Sicht mit
Verkaufssignalen gebildet. Im Weiteren wird eine Minimumbildung für jedes Verkaufssignal im
Kreuzprodukt durchgeführt:
113
6. Implementierung elementarer Handelsstrategien
Abfrage sb0 (Vorher)
1 SELECT . . .
2 FROM sbBuy AS B, sbSell AS S
3 WHERE S.n IN ( SELECT MIN(S2.n)
FROM
4
sbSell AS S2 . . . );
●
sbBuy
n
39
48
98
109
Sig
sbSell
n
Sig
Buy
Buy
Buy
Buy
35
60
81
150
Sell
Sell
Sell
Sell
n
Sig
81
150
Sell
Sell
MIN
Ergebnis:
BN
n
Sig
60
81
Sell
Sell
MIN
Sig SN
Sig
Buy
Sell
●
●
Anzahl der benötigten Minimumbildungen =
(Anzahl der Kaufsignale) * (Anzahl der Verkaufssignale)
Abbildung 6.20 Aufbau der Sicht sb0 bei der Implementierung Separate Signalberechnung
Die Abbildung 6.20 veranschaulicht den Aufwand der Minimumbildungen zu einem Kaufsignal
für die Berechnung der relevanten Verkaufssignale. Diese sind in den Tabellen rosa dargestellt.
Somit ergibt sich die Anzahl der gesamten Minimumbildungen für die Berechnung aller
relevanten Verkaufssignale aus der Multiplikation der Anzahl aller Kaufsignale mit der Anzahl
aller Verkaufssignale.
Optimierte Berechnung:
Die folgende neu definierte Abfrage für die Berechnung relevanter Verkaufssignale reduziert
erheblich die Anzahl der benötigten Minimumbildungen auf die Anzahl aller Kaufsignale:
Abfrage sb0 (Nachher)
1 SELECT B.n, MIN(S.n) AS SellN
2 FROM sbBuy AS B INNER JOIN sbSell AS S ON B.n < S.n
3 GROUP BY B.n;
114
6. Implementierung elementarer Handelsstrategien
sbBuy
n
39
48
98
109
Ergebnis:
sbSell
n
B.n
MIN
SellN
60
81
150
Anzahl der benötigten Minimumbildungen = (Anzahl der Kaufsignale)
Abbildung6.21 Aufbau der Sicht sb0 bei der Implementierung Gruppieren der Datensätze
Relevante Verkaufssignale werden mit derselben grundsätzlichen Methodik wie bei der
Implementierung Separate Signalberechnung abgeleitet. Dabei wird das erste Verkaufssignal
selektiert, welches nach einem jeweiligen Kaufsignal folgt. Solche bedingte erste
Verkaufssignale werden wieder mittels der Minimumbildungen in der Zeile 1 ermittelt. In der
ON-Anweisung in der Zeile 2 steht die Bedingung, dass das jeweilige Kaufsignal zeitlich älter
als das gesuchte Verkaufssignal ist. Allerdings wird hier das Kreuzprodukt aus den Sichten
sbBuy und sbSell nach dem n-Wert des Kaufsignals in der Zeile 3 gruppiert.
Abbildung 6.21 zeigt die Methodik für die Ableitung eines relevanten Verkaufssignals. Im
Vergleich zu der vorherigen Version aus Abbildung 6.20 ist der Berechnungsaufwand erheblich
reduziert worden:
Anzahl der benötigten Minimumbildungen :
(Anzahl der Kaufsignale) * (Anzahl der Verkaufssignale) → (Anzahl der Kaufsignale)
Angemerkt sei hier, dass in der Zielliste im SELECT-Teil nur die n-Werte enthalten sind. Wenn
beispielsweise zusätzlich die Schlusskurse in der Sicht sbSell vorhanden wären, könnten die
jeweils relevanten Schlusskurse wegen der Minimumbildung der n-Werte in der Zielliste im
SELECT-Teil nur mit einem Verlust an Effizienz selektiert werden. Weiterhin müssten dann
solche für die Signalberechnung irrelevante Daten immer in jeder Abfrage mitgeführt werden.
Aus diesem Grund werden für die Berechnung relevanter Signale nur die n-Werte betrachtet.
Zusätzliche Daten wie das Datum und die Schlusskurse werden später hinzugefügt. Alle
Datensätze in den Basistabellen können hierfür durch die n-Werte eindeutig identifiziert werden.
Berechnung der relevanten Kaufsignale (sb1)
Bei der Berechnung der relevanten Kaufsignale wurde ebenfalls ein Effizienzgewinn realisiert.
Auf eine Wiederholung der detaillierten Erläuterung zur Berechnung der relevanten Kaufsignale
aus der Implementierung Separate Signalberechnung wird hier verzichtet und sich im
Folgenden nur auf den zu vergleichenden Berechnungsaufwand konzentriert.
Ursprüngliche Berechnung:
Für die Berechnung aller relevanten Kaufsignale in der vorausgegangenen Implementierung
erreicht die Anzahl der benötigten Minimumbildungen die Anzahl aller Kaufsignale
multipliziert mit der Anzahl der relevanten Verkaufssignale:
115
6. Implementierung elementarer Handelsstrategien
Abfrage sb1 (Vorher)
• Die Spalte BN in der Sicht sb0
enthält die n-Werte aller
Kaufsignale.
1 SELECT *
2 FROM sb0 AS A
3 WHERE A.BN IN ( SELECT
MIN(C.BN)
FROM
sb0 AS C
GROUP BY C.SN );
4
5
• Die Spalte SN in der Sicht sb0
enthält die n-Werte aller
relevanten Verkaufssignale
Anzahl der benötigten Minimumbildungen =
(Anzahl der Kaufsignale) * (Anzahl der relevanten Verkaufssignale)
A.BN in der Zeile 3 sind die n-Werte der Kaufsignale. Für jedes Kaufsignal wird eine
Minimumbildung für jede Gruppe von relevanten Verkaufssignalen berechnet.
Optimierte Berechnung:
Die neu definierte Abfrage für die Berechnung relevanter Kaufsignale reduziert die Anzahl der
benötigten Minimumbildungen bis zu der Anzahl relevanter Verkaufssignale:
sb0
B.n
SellN
39
48
98
109
60
60
150
150
Abfrage sb1 (Nachher)
1 SELECT MIN(n) AS BuyN, SellN
2 FROM sb0
3 GROUP BY SellN;
Anzahl der benötigten Minimumbildungen = (Anzahl der relevanten Verkaufssignale)
Die relevanten Kaufsignale sind mit demselben methodischen Ansatz wie bei der
Implementierung Separate Signalberechnung zu erhalten. Dabei wird das erste Kaufsignal der
jeweiligen Gruppe aus relevanten Verkaufssignalen gesucht. Die Sicht sb1 enthält dann im
Ergebnis die n-Werte aller relevanten Handelssignale für die Strategiebewertung.
Darstellung der Ergebnisse (sb2, SBT)
Wie bereits zuvor erläutert, ist aus Effizienzgründen auf das Mitführen der Kurs- und
Datumsinformationen in der Signalberechnung verzichtet worden. Für die reine
Signalberechnung sind diese Daten auch irrelevant. Da in den bisherigen Berechnungen nur die
n-Werte betrachtet worden sind, müssen die weiteren Daten im Folgenden hinzugefügt werden.
Basierend auf der temporären Tabelle sbA werden alle benötigen Daten für die Anzeige und die
Berechnung der Strategiebewertung zusammengefasst:
Abfrage sb2
1 SELECT A.n AS BN, A.Date AS BuyDate, A.Close AS BuyClose,
B.n AS SN, B.Date AS SellDate, B.Close AS SellClose
sbA AS A INNER JOIN sbA AS B ON A.n<B.n
4 WHERE A.n>= 0 AND B.n>= 0 ;
2
3 FROM
116
6. Implementierung elementarer Handelsstrategien
Dabei wird ein Kreuzprodukt von sbA mit sich selbst gebildet, damit immer zwei Datensätze
nebeneinander in einer Zeile stehen. Die WHERE-Bedingung sogt dafür, dass die nicht
benötigten Hilfsdaten aus der Berechnung des Indikators aussortiert werden.
Basierend auf den Abfragen sb1 und sb2 werden dann alle relevanten Handelssignale mit den
sonstigen Daten für die Strategiebewertung zusammengesetzt:
Abfrage SBT
1 SELECT A.BuyDate, A.BuyClose, A.SellDate, A.SellClose
2 FROM sb2 AS A INNER JOIN sb1 AS B ON (A.SN=B.SellN) AND ( A.BN=B.BuyN)
3 ORDER BY A.BuyDate ASC;
Dabei dienen die n-Werte zur Identifizierung der Datensätze in der Zeile 2. Im Ergebnis
wird die folgende Sicht erzeugt:
Sicht SBT
BuyDate
BuyClose
SellDate
SellClose
05.03.2008
12254,99
25.03.2008
12532,6
29.05.2008
12646,22
24.07.2008
11349,28
Dabei sind die Signale wie „Buy“ und „Sell“ implizit anhand der Spaltennamen dargestellt.
Durch eine Differenzbildung aus den Schlusskursen beim Kaufen und Verkaufen können die
jeweiligen Kursgewinne oder Kursverluste der Handel ermittelt werden. Die Umsetzung für
diese Berechnung folgt im nächsten Kapitel.
Performanzanalyse
Die Berechnungsdauer hat sich durch die Optimierungen an allen Abfragen merklich verkürzt.
Unter unveränderten Bedingungen konnte die gesamte Durchführungszeit von ca. 80.000
Millisekunden in der letzten Implementierung auf bis 844 Millisekunden in dieser Version
reduziert werden:
sbBuy
Datenfluss der Abfragen:
(Version: Gruppieren der Datensätze)
sbInd
sb0
sb1
sbSell
SBT
sb2
117
6. Implementierung elementarer Handelsstrategien
Separate Signalberechnung
Gruppieren der Datensätze
Abfrage
Berechnungsdauer (Sec)
Abfrage
Berechnungsdauer (Sec)
sbInd(CCI)
0,2812
sbInd(CCI)
0,2312
sbBuy
0,5156
sbBuy
0,4218
sbSell
0,7343
sbSell
0,422
sb0
63,2501
sb0
0,8281
sb1
79,6415
sb1
0,8437
sb2
0,25
SBT
0,8441
Berechnungsdauer der Abfragen (Version: Gruppieren der Datensätze)
sbInd(CCI)
sbBuy
sbSell
sb0
sb1
sb2
SBT
0
0,225
0,450
0,675
0,900
Sec
Abbildung 6.22 Die Berechnungsdauer der Abfragen ( Testbedingung13 )
Eine solche drastische Zunahme der Berechnungsdauer wie bei der Ermittelung relevanter
Verkaufssignale (Abfrage sb0) in der Implementierung Separate Signalberechnung ist in dieser
neuen Version Gruppieren der Datensätze nicht zu finden. Die Abfrage sb0 in der
vorausgegangenen Implementierung benötigte das über 50-Fache der Berechnungszeit der
summierten Berechnungsdauern der Basisabfragen sbBuy und sbSell. Im Gegensatz dazu
erfordert die Berechnung relevanter Verkaufssignale in der neuen Version nicht einmal die
einfache summierte Berechnungsdauer der Basisabfragen (0,8281 < 0,4218+0,422). Diese
erhebliche Effizienzsteigerung ist auf den Einsatz der Minimumbildungen mittels Gruppieren
der Datensätze zurückzuführen.
Das zusätzliche Hinzufügen der sonstigen Daten erfordert lediglich einen minimalen
zusätzlichen Aufwand. Die Durchführungsdauer der entsprechenden Abfrage SBT hat im
Vergleich zu der Berechnungsdauer der Abfrage sb1 nur geringfügig zugenommen.
In dieser Implementierung sind unter anderem Optimierungen an allen Sichtdefinitionen für die
Berechnung der Indikatoren durchgeführt worden. Wie effektiv sind diese
Optimierungsschritte?
Getestet wurden drei Handelsstrategien mit einer gewählten Analysezeitraum von einem Jahr
und jeweils mit und ohne der optimierten Schichtdefinition für die Berechnung des Indikators.
13 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanzanalyse in der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind in Anhang 6-A enthalten.
118
6. Implementierung elementarer Handelsstrategien
Indikatorberechnung
Optimierte Indikatorberechnung
Signalberechnung der Strategiebewertung OHNE optimierter Indikatorberechnung
Signalberechnung der Strategiebewertung MIT optimierter Indikatorberechnung
Berechnungszeit (sec)
1,100
0,825
0,550
0,275
0
CCI-basierte
RSI-basierte
CMF-basierte
Handelsstrategie
Abbildung 6.23 Optimierungen an den Berechnungen der Indikatoren ( Testbedingungen und Basisdaten 14 )
Der Effizienzgewinn bei der Berechnung nur des Indikators beträgt um die 30 Millisekunden.
Der Unterschied bei der gesamten Berechnung ist jedoch noch deutlicher und beträgt bis über
170 Millisekunden im Beispiel der CCI-basierte Strategie.
Dabei ist in beiden Implementierungen die identische optimierte Signalberechnung verwendet
worden. Ein Unterschied besteht lediglich in der Verwendung der optimierten
Indikatorberechnung.
Durch die bisherigen Optimierungsmassnahmen ist die gesamte Berechnungsdauer von 3956
Sekunden für die Naive Implementierung auf 0,84 Sekunden für die vorliegender Variante
reduziert worden. Dieses Ergebnis gilt für das Testbeispiel der CCI-basierten Strategie mit der
Analysezeitraum von einem Jahr. Über einen längeren Analysezeitraum betrachtet, ist die
gesamte Berechnung noch recht zeitintensiv. Folgendes Diagramm zeigt die durchschnittliche
Durchführungsdauer und die Standardabweichung für die Signalberechnung der CCI-, RSIund CMF-basierte Handelsstrategien mit unterschiedlichen Analysezeiträumen.
14 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind in Anhang 6-B aufgeführt.
119
6. Implementierung elementarer Handelsstrategien
Berechnungszeit (sec)
Durchschnittliche Berechnungsdauer für die Signalberechnung der Strategiebewertung
20
16,67
15
10,89
10
6,23
2,93
5
0,85
0
0
1
2
3
4
5
Standardabweichung (sec)
Analysezeitraum (Jahr)
Standardabweichung der Berechnungsdauer
für die Signalberechnung der Strategiebewertung
0,300
0,24
0,225
0,14
0,150
0,02
0,075
0,12
0,07
0
0
1
2
3
4
5
Analysezeitraum (Jahr)
Stichproben: CCI-, RSI-, CMF-basierte Handelsstrategie
Abbildung 6.24 Durchschnitt und Standardabweichung der Berechnungsdauer
( Testbedingungen und Basisdaten15 )
Die durchschnittliche Berechnungsdauer nimmt bei steigender Testdauer überproportional zu
und erreicht bis zu 16 Sekunden für einem Analysezeitraum von 5 Jahren. Die jeweilige
Berechnungsdauern der drei genannten Strategien weichen nur geringfügig ab, diese
Abweichungen nehmen bei längerer Testdauer ebenfalls tendenziell zu.
Optimierungsidee
Die Berechnungsdauer für längere Analysezeiträume ist trotz Optimierungen noch
vergleichsweise lang. Im Rahmen dieser Arbeit sind in einem finalen Optimierungsschritt
materialisierte Sichten zum Einsatz gekommen.
15 Die Testbedingungen sowie die Basisdaten für die Darstellung der Diagramme sind in Anhang 6-C aufgeführt.
120
6. Implementierung elementarer Handelsstrategien
6.2.5 Verwendung materialisierter Sichten
Durch die Speicherung der Sichten wird erwartet, noch weitere Verbesserungen an der Laufzeit
der Strategiebewertung zu erzielen. Da Access materialisierte Sichten nicht direkt unterstützt,
sind diese mittels zusätzlicher temporärer Tabellen simuliert worden.
Implementierung
Der Aufbau der Berechnungsmethodik sowie die Abhängigkeiten zwischen den Abfragen sind
identisch wie bei der letzten Implementierung Gruppieren der Datensätze. Die vorgenommenen
Optimierungen sind ebenfalls beibehalten.
sbBuyM
sbIndM
sb0M
sb1M
sbSellM
SBT
sb2
Die im letzten Abschnitt 6.2.4 erläuterten Sichten sbInd, sbBuy, sbSell, sb0 und sb1 werden nun
jeweils in einer Tabelle gespeichert. Diese Abfragen sind mit einem zusätzlichen „M“ in ihrer
Bezeichnung gekennzeichnet. Die SQL Formulierungen sind aus der Implementierung in 6.2.4
übernommen und wurden lediglich um eine INTO-Klausel zur Speicherung der jeweiligen
Abfrage erweitert. Das folgende Beispiel zeigt die Berechnung aller relevanten Verkaufssignale:
Abfrage sb0M
1 SELECT B.n, MIN(S.n) AS SellN INTO sb0
2 FROM sbBuy AS B INNER JOIN sbSell AS S B.n < S.n
3 GROUP BY B.n;
Durch diese Aktionsabfrage unter Verwendung der INTO-Anweisung werden die ermittelten
Ergebnisse als eine Tabelle sb0 materialisiert. Diese zusätzlichen Tabellen werden am Ende der
gesamten Berechnung der Strategiebewertung durch eine Anweisung „DROP TABLE sb0“
gelöscht. In der weiteren Entwicklung des TInTo-Projektes sollten die Namen der hier zu
materialisierenden Sichten: sbInd, sbBuy, sbSell, sb0, sb1 für die Berechnungen des
StrategyBuiler reserviert bleiben.
Auf Grundlage der bisher erzielten Optimierungen war eine weitere Effizienzsteigerung durch
die Materialisierung zu erzielen. Da die zu materialisierenden Sichten nur die minimal
benötigten Daten enthalten, verursacht das Speichern relativ geringen Aufwand.
Die materialisierte Sicht sbInd enthält lediglich n-Werte und Indikatorwerte, die weiteren
materialisierten Sichten enthalten nur n-Werte, welche als Primärschlüssel dienen. Mittels dieser
n-Werte werden zusätzliche Daten zur Anzeige oder benötigte Daten für weitere Berechnungen
herausgefiltert. Die Abfragen sb2 sowie SBT dienen nur zur Darstellung der Ergebnisse
zusammen mit den zusätzlich gewünschten Daten und werden nicht materialisiert. Die Abfrage
SBT wird für die in Kapitel 8 beschriebenen Renditeberechnung dort nochmals abgeändert.
Performanzanalyse
Durch die Materialisierung konnte die gesamte Berechnungsdauer für die CCI-basierte
Strategie, unter ansonsten unveränderten Testbedingungen, im Vergleich zur
121
6. Implementierung elementarer Handelsstrategien
Durchführungsdauer in der Implementierung Gruppieren der Datensätze bis zu 70% reduziert
werden:
Gruppieren der Datensätze
Materialisierte Sichten
Abfrage
Berechnungsdauer (Sec)
sbInd (CCI)
0,2312
sbBuy
0,4218
sbSell
0,422
sb0
0,8281
sb1
0,8437
sb2
0,25
SBT
0,8441
Abfrage
Berechnungsdauer (Sec)
sbIndM (CCI)
0,2343
sbBuyM
0,2343
sbSellM
0,2343
sb0M
0,25
sb1M
0,25
sb2
0,25
SBT
0,2516
[Die Berechnungsdauer einer Abfrage beinhaltet ebenso die Durchführungszeit der zu grundliegenden
Aktionsabfragen]
Abbildung 6.25 Die Berechnungsdauer der Abfragen
Durch den Einsatz materialisierter Sichten ist die Effizienz der Signalberechnung erheblich
gesteigert worden. Ab der Durchführungszeit für die Berechnung nur des Indikators von 234
Millisekunden hat die gesamte Berechnungsdauer bis 252 Millisekunden nur leicht
zugenommen. Nach dieser Optimierung bildet die Berechnung des Indikators Abfrage sbIndM
den aufwändigsten Teil der Gesamtberechnung.
Die effizienzsteigernde Wirkung der materialisierten Sichten ist noch offensichtlicher, wenn
man die Berechnungen über längere Analysezeiträume betrachtet. Das folgende Diagramm zeigt
die durchschnittliche Berechnungszeit für drei Handelsstrategien aus der letzten
Implementierung Gruppieren der Datensätze verglichen mit der aktuellen materialisierten
Variante:
Durchschnittliche Berechnungsdauer OHNE materialisierten Sichten
Durchschnittliche Berechnungsdauer MIT materialisierten Sichten
Berechnungszeit (sec)
20
16,67
15
10,89
10
6,23
2,93
5
0,85
4,27
2,81
0
0
0,25
1
0,87
1,63
3
2
4
Analysezeitraum (Jahr)
Stichproben: CCI-, RSI-, CMF-basierte Handelsstrategie
Abbildung 6.26 Durchschnittiche Berechnungsdauer ( Testbedingung und Basisdaten16 )
16 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 6-D
aufgeführt.
122
5
6. Implementierung elementarer Handelsstrategien
Die Differenz in der Berechnungsdauer zwischen den beiden Varianten nimmt bei ansteigender
Länge des Analysezeitraumes beträchtlich zu. Diese Differenz für den Analysezeitraum 5 Jahre
beträgt über 12 Sekunden, während die Differenz bei einem 1-jährigen Analysezeitraum nur 0,6
Sekunden beträgt. Bei einer hohen Anzahl an zu verarbeitenden Datensätzen (aus einem langen
Analysezeitraum) kann das Materialisieren offensichtlich seine Stärken besonders gut
ausspielen. Für eine Verwendung der Materialisierung muss aber immer abgewogen werden
zwischen gewünschter Effizienz der Laufzeit und dem benötigten Speicherbedarf. Bei der
vorliegenden Implementierung konnte dieser Konflikt durch die Speicherung nur minimaler
Datenvolumen (nur die n-Werte) und durch lediglich temporäre Speicherung einigermaßen
ausgeglichen werden. Im Ergebnis wird eine erhebliche Effizienzsteigerung erzielt.
Abschließend werden hier kurz die bisherigen Optimierungen für die Signalberechnung der
Strategiebewertung zusammengefasst. Zur Erläuterung dient wieder dasselbe Testbeispiel, die
CCI-basierte Strategie über einen Analysezeitraum von einem Jahr.
Optimierungen und Berechnungsdauer
8466,078
9.000
6.750
4.500
79,6415
Berechnungszeit (sec)
3956,078
1
0,8441
2.250
2
Naive
0,2516
3
0
Implementierung Fortlaufende
4
Nummern
Separate
Signalberechnung Gruppieren 5 Materialisierte
der Datensätze Sichten
Abbildung 6.27 Bisherigen Optimierungen ( Testbedingung 17 )
Für die Naive Implementierung beträgt die Berechnungsdauer über eine Stunde. Dies ist
zurückzuführen auf die aufwändig aufgebauten Aggregatbildungen sowie die sehr zeitintensiven
Berechnungen für die Darstellung der zusammengehörigen Signale als Signalpaare. Mit der
weiteren Implementierung Fortlaufende Nummern wurden die Laufzeiten nicht verbessert und
es entstanden die Überlegungen zur Materialisierung sowie alternative Lösungen anhand von
VBA. Eine erhebliche Reduzierung der Berechnungsdauer auf 80 Sekunden konnte nachfolgend
mit der Implementierung Separate Signalberechnung erreicht werden. Dabei wurde die
aufwändige Berechnung für die Zusammenstellung der Handelssignale als Signalpaare
vermieden. Die anschließende Gruppierung der Datensätze bei den Minimumbildungen erzielte
einen großen Gewinn an Laufzeit. Im Ergebnis dieser Optimierung beträgt die Berechnungszeit
nur noch ca. 844 Millisekunden. In einem finalen Schritt ist die Durchführungsdauer durch
Materialisieren der Sichten noch einmal erheblich verbessert worden und beträgt nunmehr
lediglich 250 Millisekunden. Dazu werden nur die minimal benötigten Daten in jeweils
temporären Tabellen gespeichert.
17 Die Teststrategie sowie Testbedingungen sind unverändert gegenüber der Performanzanalyse in der Naiven
Implementierung im Abschnitt 6.2.1. Weitere Details sind in Anhang 6-A aufgeführt.
123
6. Implementierung elementarer Handelsstrategien
Weitere zusätzliche Optimierungen sind denkbar. So ist im Ergebnis der zweiten Optimierung
Fortlaufende Nummern die Entscheidung gegen die weitere Verwendung der fortlaufenden
Nummern getroffen worden. Eine vorgeschlagene alternative Lösung mit Einfügen
fortlaufender Nummern in materialisierte Sichten scheint jedoch weitere Effizienzsteigerungen
zu ermöglichen. Bei der Umsetzung von TInTo in Oracle sollte dieser Lösungsweg weiter
verfolgt werden.
124
7
Implementierung erweiterter
Handelsstrategien
In diesem Kapitel werden Funktionsweise und Implementierungen von erweiterten
Handelsstrategien vorgestellt. Ziel dieser erweiterten Strategien ist die Erhöhung des
Handelsgewinns mittels Einbeziehung weiterer Informationen in den Entscheidungsprozess.
Während die Signalberechnung elementarer Handelsstrategien als Basis nur die Berechnung
eines Indikators benötigt, erfordert die Signalberechnung erweiterter Handelsstrategien neben
der Berechnung eines Indikators zusätzliche Berechnungen für die Generierung der
Handelssignale. Im Folgenden werden regelbasierte Strategieerweiterungen mittels gleitender
Signallinie, zusätzlicher Signalbedingungen und zusätzlicher Indikatoren erläutert sowie deren
Signalberechnungen im Detail dargestellt.
Darüber hinaus werden Implementierungen von kombinierten Handelsstrategien mit alternativer
Investitionen während der Zeit von Handelspausen und auch deren Signalberechnung erläutert.
Dabei können diese alternativen Investitionen in Handelspausen optional durch den Anwender
sowohl mit elementaren Strategien als auch mit erweiterten Strategien kombiniert werden.
7.1 Erweiterte Teilberechnungen
Der Signalberechnung erweiterter Strategien liegen die in den Kapiteln 5 und 6 dargestellten
Berechnungen zu Grunde. Die Basisarchitektur für die Signalberechnung zur
Strategiebewertung ist identisch wie bei den elementaren Handelsstrategien:
sbBuyM
sbIndM
sb0M
sb1M
sbSellM
SBT
sb2
125
7. Implementierung erweiterter Handelsstrategien
Die Abfrage sbIndM übernimmt die Berechnung des Indikators. Darauf basierend berechnet die
Abfrage sbBuyM bzw. sbSellM Kauf- bzw. Verkaufssignale je nach gewählter Handelsstrategie.
sb0M bzw. sb1M ermitteln daraus die relevanten Verkaufssignale bzw. relevanten Kaufsignale
für die Strategiebewertung. Dabei werden die ermittelten Sichten temporär materialisiert.
Abschließend werden alle ermittelten Signale mit deren zusätzlichen Informationen mittels der
Abfragen sb2 und SBT dargestellt.
Erweiterte Strategien und kombinierte Strategien mit der Investition in den Handelspausen
erfordern Berechnungserweiterungen an unterschiedlichen Teilberechnungen für die
Signalberechnung zur Strategiebewertung.
Bei erweiterten Strategien sind die Berechnung des Indikators (sbIndM) und der Handelssignale
(sbBuyM, sbSellM) zu erweitern:
sbBuyM
sbIndM
sb0M
sb1M
sbSellM
SBT
sb2
Die weiteren Berechnungen für die Ermittlung relevanter Signale (sb0M, sb1M) sowie die
Berechnung für die Darstellung der Strategieevaluierung (sb2, SBT) gleichen den schon zuvor
erläuterten Berechnungen elementarer Strategien. Für die nötigen zusätzlichen Berechnungen
werden weitere Abfragen verwendet, deren Sichten ebenfalls mittels INTO-Anweisung
materialisiert sind. Die dadurch entstehenden Tabellen sind temporär, werden also am Ende der
gesamten Berechnung wieder entfernt.
Die Strategieerweiterungen in Handelspausen, welche im Abschnitt 7.3 erläutert werden, sind
abhängig von relevanten Handelssignalen. Demnach ist nur die Berechnung der relevanten
Signale in Abfrage sb1M zu erweitern:
sbBuyM
sbIndM
sb0M
sb1M
sbSellM
SBT
sb2
Anschließend an diese kurze Übersicht folgen nähere Erläuterungen zu den Erweiterungen in
den nächsten Abschnitten. Dabei liegt der Schwerpunkt in der Beschreibung der erweiterten
Teilberechnungen und der Vorgehensweise bei deren Implementierung. Identische
Teilberechnungen, wie sie auch bei den elementaren Handelsstrategien Anwendung finden
werden hier nicht wiederholt und können in den Kapiteln 5 und 6 nachgeschlagen werden.
Grundlagen, Erläuterungen und Analysen zu den Handelsstrategien sind in Kapitel 3 und 4
ausführlich beschrieben.
126
7. Implementierung erweiterter Handelsstrategien
7.2 Erweiterte Handelsstrategien
Folgende Strategieerweiterungen werden beispielhaft in den nächsten Abschnitten vorgestellt:
• Gleitende Signallinie (Abschnitt 7.2.1)
• Zusätzliche Signalbedingungen (Abschnitt 7.2.2)
• Kombination mit anderem Indikator (Abschnitt 7.2.3)
7.2.1 Gleitende Signallinien
Die in Kapitel 6 erläuterten elementaren Strategien basierend beispielsweise auf den Indikatoren
CCI, RSI und CMF verwenden jeweils eine starre Signallinie. Dabei können konkrete
Signalwerte für den gesamten Analysezeitraum für jeweils das Kauf- und das Verkaufssignal
festgelegt werden. Zum Beispiel verwendet die im letzten Kapitel für die Performanzanalyse
herangezogene CCI-basierte Strategie zwei feste Signalwerte von -100 und 100.
Bei manchen Indikatoren allerdings, wie zum Beispiel SMA, MACD oder Stochastics, ist es
verbreitet, einen zusätzlich berechneten Hilfsindikator als eine gleitende Signallinie zu
benutzen. Solche gleitende Signallinie besitzt für jeden fortlaufenden Zeitpunkt einen neuen
Wert und hat damit nicht starre, sondern gleitende Eigenschaften. In der Praxis werden diese
Unterschiede zwischen starrer und gleitender Signallinie leider oft nicht präzise hervorgehoben,
sondern in beiden Fällen einfach von einer Signallinie gesprochen.
Beispiel: SMA Crossover (SMAC)
Die im Rahmen dieser Arbeit in TInTo-StrategyBuilder integrierte Handelsstrategie SMA
Crossover verwendet neben dem SMA einen weiteren SMA mit längerer Berechnungsperiode
als Hilfsindikator, welcher als eine gleitende Signallinie dient. Die entsprechende Handelslogik
wird im Folgenden beschrieben. Darüber hinausgehende detaillierte Erläuterungen und
Anwendungen dieser Handelslogik finden sich im Abschnitt 3.4.1 in Kapitel 3 sowie im
Abschnitt 4.3.3 im Kapitel 4.
Handelslogik:
• Kaufe ein Wertpapier, wenn der SMA mit der kürzeren Periode den SMA mit der längeren
Periode von unten nach oben schneidet.
• Verkaufe ein Wertpapier, wenn der SMA mit der kürzeren Periode den SMA mit der längeren
Periode von oben nach unten schneidet.
Berechnung:
Um den Schnittpunkt zweier SMAs zu ermitteln, kann die relative Lage beider SMA-Linien
zueinander zum jeweiligen Zeitpunkt betrachtet werden. Dabei stellen die SMA-Linien die im
Chart miteinander verbundenen diskreten Werte der SMA-Indikatoren dar. Der Schnittpunkt
der Linien ist dann nicht einfach aus der Gleichheit zweier Werte beider SMA zum selben
Zeitpunkt zu erhalten. Es muss vielmehr die Lage beider SMA-Linien zueinander aus der
Differenz beider Linien zum selben Zeitpunkt ermittelt werden.
127
7. Implementierung erweiterter Handelsstrategien
Dow Jones Industrial Average (blau)
SMAShort : 21-Tage-SMA (rot)
SMALong : 150-Tage-SMA (Gleitende Signallinie grün)
Verkauf
Verkauf
Kauf
Fortlaufender
Zeitpunkt n
SMAShort(n) - SMALong(n) < 0
SMAShort(n) - SMALong(n) < 0
SMAShort(n) - SMALong(n) > 0
Abbildung 7.1 Handelssignale der Strategie SMA Crossover, Dow Jones Industiral Average [YH08f]
Daraufhin können Handelssignale so erzeugt werden, dass solche Differenzen beider Linien zu
hintereinander folgenden Zeitpunkten verglichen werden. Demnach sind die Handelsregeln wie
folgt zu formulieren:
Sei Ind(n) = SMAShort(n) - SMALong(n), n: Fortlaufender Zeitpunkt
∀n : { (Ind(n-1) < 0) ∧ (Ind(n) ≧ 0) } ⇒ (Signal(n) = „Kauf“)
∀n : { (Ind(n-1) > 0) ∧ (Ind(n) ≦ 0) } ⇒ (Signal(n) = „Verkauf“)
Umsetzung:
Zusätzlich zu den SMA Berechnungen ist noch eine gleitende Signallinie, also ein weiterer
SMA mit längerer Berechnungsperiode zu ermitteln:
1 SELECT A.n, AVG(B.Close) AS Ind1 INTO sbInd1
2 FROM sbA AS A INNER JOIN sbA AS B ON (A.n>= B.n) AND (B.n>A.n-sbGetPar2())
3 GROUP BY A.n;
Hier wird die Schlusskurse enthaltende Tabelle sbA mit sich selbst verknüpft, so dass für jeden
Zeitpunkt (A.n) die benötigten Daten abhängig von der Berechnungsperiode (sbGetPar2())
zusammengestellt werden (Zeile 2). Die eigentliche Berechnung des Durchschnitts (SMA)
erfolgt dann im SELECT-Teil, wofür eine Gruppierung nach jeweiligem Zeitpunkt in der Zeile 3
der umgenannten Tabelle A notwendig ist. Diese Sicht wird dann mit der INTO-Anweisung in
einer Tabelle sbInd1 gespeichert (Zeile 1).
Die Differenz zweier SMA-Linien ergibt sich wie folgt:
1 SELECT A.n, A.Ind0-B.Ind1 AS Ind INTO sbInd
2 FROM sbInd0 AS A INNER JOIN sbInd1 AS B ON A.n=B.n;
Dabei enthält die Spalte Ind0 in der Tabelle sbInd0 die schon ermittelten SMA-Werte mit der
kürzen Berechnungsperiode. Die Tabelle sbInd1 enthält die SMA-Werte mit der längeren
Berechnungsperiode. Durch eine JOIN-Verbindung können zwei SMA-Werte aus beiden Tabelle
zum selben Zeitpunkt verglichen (Zeile 2) und schließlich subtrahiert (Zeile 1) werden.
128
7. Implementierung erweiterter Handelsstrategien
Für die Berechnung der Handelssignale wird hier als Beispiel die Berechnung der Kaufsignale
erläutert und die Berechnung der Verkaufssignale können analog ermittelt werden:
1 SELECT B.n INTO sbBuy
2 FROM sbInd AS A INNER JOIN sbInd AS B
3
ON (A.n +1 = B.n) AND (A.Ind < getBuy() AND B.Ind >= getBuy())
4 WHERE A.n>= 0 AND B.n>= 0;
• Basierend auf der schon ermittelten Differenz beider SMA-Werte in der Tabelle sbInd wird
hier die oben genannte Handelsregel implementiert. In den Zeilen 2-3 folgt der
Bedingungsteil der Implikation { (Ind(n-1) < 0) ∧ (Ind(n) ≧ 0) }. Um hintereinander folgend
die Differenz beider Linien zu vergleichen, ist hier wieder eine JOIN-Verbindung angewendet
worden. Die erste Bedingung in der ON-Klausel (A.n +1 = B.n) sorgt dafür, dass die genau
zeitlich hintereinander folgenden Differenzen (Ind) zusammen verknüpft werden. Die
Funktion getBuy() in der Zeile 3 liefert die vom Benutzer gewünschte Differenz zweier SMALinien. Um den Schnittpunkt zweier SMA-Linien zu verfolgen, ist „0“ für die Differenz in
das Trade Signal Corssover genannte Eingabefeld der Benutzeroberfläche des TInToStrategyBuilder einzugeben.
• Der Folgerungsteil der Implikation (Signal(n) = „Kauf“) ist implizit angegeben, indem die
ermittelten n-Werte in die Tabelle für alle Kaufsignale gespeichert werden (Zeile 1).
• Durch die Bedingungen im WHERE-Teil bleiben die bei der Berechnung der Indikatoren
verwendeten Hilfsdaten ausgeschlossen.
Anwendungsmöglichkeiten für die Eingabefunktionen:
Die Funktion getBuy() liefert die vom Benutzer gewünschte Differenz zweier SMA-Linien,
womit die Empfindlichkeit der zu generierenden Kaufsignale beeinflusst werden kann.
Beispielsweise sei angenommen, dass der Anwender eine positive Zahl für die Differenz zweier
SMA-Linien eingegeben hat. Damit ist vorgegeben, dass ein Kaufsignal entsteht, wenn der
Trend im Kursverlauf des entsprechenden Wertpapiers schon entwickelt ist. Mit dieser Vorgabe
könnte man Fehlsignale in trendschwachen Phasen eliminieren und nur signifikante Signale
zulassen. Jedoch liegt die Schwierigkeit bei der praktischen Anwendung in der Abwägung
zwischen Rendite und Risiko. Das Generieren nur der signifikanten Signale bringt auch einen
Verlust an etwaigen Gewinnmöglichkeiten mit sich. Die Funktion getSell() für die Differenz
zweier SMA-Linien lässt den Anwendern analog die Empfindlichkeit der zu generierenden
Verkaufssingle einstellen. In der TInTo-StrategyBuilder Benutzeroberfläche können die
vorgewählten Differenzen zweier SMA-Linien im Eingabefeld Crossover Buy für Kaufsignale
und Crossover Sell für Verkaufssignale eingegeben werden:
129
7. Implementierung erweiterter Handelsstrategien
Abbildung 7.2 TInTo-StrategyBuilder Eingabefelder Crossover Buy Sell
7.2.2 Zusätzliche Strategiebedingungen
Zu den mittels gleitender Signallinien erzeugten Handelssignalen können zusätzlich weitere
Bedingungen angewendet werden, um möglichst nur wichtige Signale zuzulassen. Als Beispiel
soll hier die Signalberechnung der in TInTo-StrategyBuilder angebotenen Hadelsstrategie
MACD Crossover Plus erläutert werden.
Beispiel: MACD Crossover Plus
Die Strategie MACD Crossover Plus generiert Handelssignale mittels Überkreuzen der MACDLinie mit deren gleitender Signallinie. Dabei sind jedoch weitere Bedingungen für gültige
Handelssignale gestellt. Mittels Nulllinie wird nun zusätzlich die Gültigkeit der zu erzeugenden
Signale weiter eingeschränkt. Die entsprechende Handelslogik ist im Folgenden dargestellt.
Weitere detaillierte Erläuterungen und Anwendungen finden sich im Abschnitt 4.3.4 in Kapitel
4.
Handelslogik:
• Kaufe ein Wertpapier, wenn die MACD-Linie die Signallinie von unten nach oben schneidet
und gleichzeitig die MACD-Linie und die Signallinie kleiner als null sind.
• Verkaufe ein Wertpapier, wenn die MACD-Linie die Signallinie von oben nach unten
schneidet und gleichzeitig die MACD-Linie und die Signallinie größer als null sind.
Berechnung:
Um den Schnittpunkt der MACD-Linie mit deren Signallinie zu verfolgen, müssen wieder die
Differenzen beider Werte zum selben Zeitpunkt ermittelt und zu hintereinander folgenden
Zeitpunkten miteinander verglichen werden.
130
7. Implementierung erweiterter Handelsstrategien
12-26-Tage-MACD (schwarz)
9-Tage-SL (Gleitende Signallinie rot)
Sei Ind(n) = MACD(n) - SL(n)
Verkauf
Verkauf
Verkauf
MACD(n)>0
SL(n)>0
Nulllinie
Kauf
MACD(n)<0
SL(n)<0
Verkauf
Kauf
Kauf
Kauf
Ind(n) < 0
Ind(n) > 0
Ind(n) < 0
Ind(n) > 0
Ind(n) < 0
n
Fortlaufender
Zeitpunkt
Ind(n) > 0
Abbildung 7.3 Handelssignale der Strategie MACD Crossover Plus, Microsoft Corp. [SCharts08]
Neben dem Überkreuzen der MACD-Linie mit der Signallinie verwendet die genannte
Handelslogik als zusätzliches Kriterium für gültige Signale noch die Lage dieser beiden Linien
zum selben Zeitpunkt. Demnach wird beispielsweise das mittels Überkreuzen erzeugte
Verkaufssignal am 9. Juli in Abbildung 7.3 aussortiert, da die Lage beider Linien unterhalb der
Nulllinie ist. Demnach sind die Handelsregeln wie folgt zu formulieren:
Sei Ind(n) = MACD(n) - SL(n), n: Fortlaufender Zeitpunkt.
∀n : { (Ind(n-1) < 0)∧(Ind(n) ≧ 0) ∧ (MACD(n) < 0) ∧ (SL(n) < 0) } ⇒ (Signal(n) = „Kauf“)
∀n : { (Ind(n-1) > 0)∧(Ind(n) ≦ 0) ∧ (MACD(n) > 0) ∧ (SL(n) > 0) } ⇒ (Signal(n) = „Verkauf“)
Umsetzung:
Die Signalberechnung dieser Handelsregeln basiert auf dem schon berechneten Indikator
MACD und dessen gleitender Signallinie. Die gleitende Signallinie des MACD wird als EMA
(Exponentail Moving Average) des MACD selber berechnet. Darauf aufbauend ermittelt die
folgende Abfrage die benötigen Daten für die Signalberechnung:
1 SELECT n, (v1-v2)-v3 AS Ind, (v1-v2) AS MACD, v3 AS SL INTO sbInd
2 FROM sbA;
Im SELECT-Teil wird die Differenz des MACD(v1-v2) zu dessen Signallinie(v3) berechnet und
als Ind umbenannt. Neben den n-Werten werden dann die Differenz aus MACD und Signallinie,
die MACD-Werte sowie die Signallinien-Werte für die folgende Signalberechnung mittels
INTO-Anweisung in der Tabelle sbInd gespeichert.
Beispielhaft wird hier die Berechnung der Kaufsignale vorgestellt. Die Berechnung der
Verkaufssignale erfolgt analog:
1 SELECT B.n INTO sbBuy
2 FROM sbInd AS A INNER JOIN sbInd AS B
3
ON (A.n +1 = B.n) AND (A.Ind < getBuy() AND B.Ind>= getBuy())
4 WHERE A.n>= 0 AND B.n>= 0 AND B.MACD<getBuyR() AND B.SL<getBuyR();
• Basierend auf der zuvor erstellten Tabelle sbInd wird die genannte Handelsregel
implementiert.
131
7. Implementierung erweiterter Handelsstrategien
• Die erste Hälfte des Bedingungsteils {(Ind(n-1) < 0) ∧ (Ind(n) ≧ 0)} der Implikation ist
implementiert wie bei der im letzten Abschnitt erläuterten Handelsstrategie SMA Crossover
(dort Zeilen 2-3).
• Weitere Kriterien für die Gültigkeit eines Kaufsignals, also die zweite Hälfte des
Bedingungsteils der Implikation, sind als zusätzliche Bedingungen am Ende des WHERETeils eingefügt. Dabei liefert die Funktion getBuyR() das vom Benutzer gewünschte
Beschränkungsmaß für das Kaufsignal. Um die Gültigkeit der Signale mittels Nulllinie wie
bei dieser Handelsregel gefordert zu unterscheiden, ist „0“ in das mit Trade Signal Range
benannte Eingabefeld auf der Benutzeroberfläche einzusetzen. Die ersten zwei Bedingungen
im WEHRE-Teil sortieren die Hilfsdaten aus der Berechnung des Indikators aus.
• Schließlich werden nur die n-Werte zu allen ermittelten Kaufsignalen für die weitere
Berechnung durch die INTO-Anweisung in die Tabelle sbBuy gespeichert.
Anwendungsmöglichkeiten für die Eingabefunktionen:
Die Funktion getBuy() kann für die Einstellung der Empfindlichkeit bei der Generierung der
Signale benutzt werden, analog wie bei der Strategie SMA Crossover. Die zusätzliche Funktion
getBuyR() liefert das vom Benutzer eingegebene Beschränkungsmaß für das Kaufsignal und
bietet damit dem Anwender die Möglichkeit zur Berücksichtigung der vorherrschenden
Marktsituationen. Auf Grund der Oszillatoreneigenschaften des MACD können dessen Signale
in extremen Marktsituationen als „signifikante“ Signale interpretiert werden. Um Kaufsignale
nur in überverkaufter Marktsituation zu generieren, kann eine je nach Wertpapier angemessene
negative Zahl als Beschränkungskriterium für das Kaufsignal eingegeben werden. Analog lässt
sich mit getSellR() der Beschränkungsgrad für Verkaufssignale einsetzen.
In der TInTo Eingabemaske können solche Beschränkungsgrade im Eingabefeld Range Buy für
Kaufsignale und Range Sell für Verkaufssignale eingegeben werden:
Abbildung 7.4 TInTo-StrategyBuilder Eingabefelder Trade Signal Range Buy Sell
132
7. Implementierung erweiterter Handelsstrategien
7.2.3 Kombination mehrerer Indikatoren
Mit dem Ziel, stabilere Signale zu erzeugen, können mehrere Indikatoren zusammengesetzt
eine Handelsstrategie bilden. Als Beispiel wird im Folgenden die Signalberechnung der im
TInTo-StrategyBuilder angebotenen Handelsstrategie MACDCOP + CMF erläutert.
Beispiel : MACDCOP + CMF
Die Strategie MACDCOP+CMF ist eine Kombination aus der im letzten Abschnitt erläuterten
Strategie MACD Crossover Plus mit dem Volumenindikator CMF. Diese Kombination generiert
Handelssignale in gleicher Art wie MACD Crossover Plus mittels Überkreuzen der MACDLinie mit deren gleitender Signallinie. Dabei dient noch die Lage dieser beiden Linien zur
Nulllinie als weiteres Kriterium für die Gültigkeit der Signale. Zusätzlich kommt nun noch der
CMF zum Einsatz, um die geeignete Marktsituation für gültige Handelssignale zu bestätigen.
Die Handelslogik für diese Strategie ist im Folgenden dargestellt. Weitere detaillierte
Erläuterung und Anwendungen der Handelsstrategie MACD Crossover Plus sowie des
Indikators CMF sind in Kapitel 3 und 4 zu finden.
Handelslogik:
• Kaufe ein Wertpapier, wenn die MACD-Linie deren Signallinie von unten nach oben
schneidet und gleichzeitig die MACD-Linie, deren Signallinie und die CMF-Linie kleiner als
null sind.
• Verkaufe ein Wertpapier, wenn die MACD-Linie deren Signallinie von oben nach unten
schneidet und gleichzeitig die MACD-Linie und deren Signallinie und die CMF-Linie größer
als null sind.
Berechnung:
Das Überkreuzen der MACD-Linie und der Signallinie wird, wie auch bei den bereits zuvor
erläuterten Strategien SMA Crossover und MACD Crossover Plus, durch den Differenzvergleich
beider Linien zu hintereinander folgenden Zeitpunkten ermittelt:
12-26-Tage-MACD (schwarz)
9-Tage-SL (Gleitende Signallinie rot)
Sei Ind(n) = MACD(n) - SL(n)
Verkauf
Verkauf
Verkauf
Kauf
20-Tage-CMF (schwarz)
Kauf
Ind(n) > 0
Ind(n) < 0
Verkauf
MACD(n)>0
SL(n) > 0
Kauf
MACD(n)<0
SL(n) < 0
Verkauf
CMF(n) > 0
Kauf
CMF(n) < 0
Fortlaufender Zeitpunkt: n
Abbildung 7.5 Handelssignale der Strategie MACD + CMF, Microsoft Corp. [SCharts08]
133
7. Implementierung erweiterter Handelsstrategien
Zusammen mit den genannten weiteren Kriterien für gültige Handelssignale ergeben sich
folgende Handelsregeln für die Implementierung:
Sei Ind(n) = MACD(n) - SL(n), n: Fortlaufender Zeitpunkt
∀n : { (Ind(n-1) < 0) ∧ (Ind(n) ≧ 0) ∧ (MACD(n) < 0) ∧ (SL(n) < 0) ∧ (CMF(n) < 0) }
⇒ (Signal(n) = „Kauf“)
∀n : { (Ind(n-1) > 0) ∧ (Ind(n) ≦ 0) ∧ (MACD(n) > 0) ∧ (SL(n) > 0) ∧ (CMF(n) > 0) }
⇒ (Signal(n) = „Verkauf“)
Nach diesen Regeln erfüllt das mittels Überkreuzen erzeugte Verkaufssignal am 9. Juli in der
Abbildung 7.5 die weiteren Bedingungen nicht und wird daher aussortiert.
Umsetzung:
Die Signalberechnung dieser Handelsstrategie basiert auf den schon ermittelten MACD-Werten
und deren Signalwerten sowie den berechneten CMF-Werten.
Die folgende Abfrage aggregiert die benötigten Daten bezüglich MACD und speichert diese in
die Tabelle sbInd für die Signalberechnung:
1 SELECT n, (v1-v2)-v3 AS Ind, (v1-v2) AS MACD, v3 AS SL INTO sbInd
2 FROM sbA;
Dabei wird die Differenz von MACD-Werten und Signallinie-Werten im SELECT-Teil ermittelt
und als Ind umbenannt.
Repräsentativ wird hier die Berechnung der Kaufsignale vorgestellt. Die Berechnung der
Verkaufssignale ist analog umgesetzt:
1 SELECT B.n INTO sbBuy
2 FROM
(sbInd AS A INNER JOIN sbInd AS B
3
ON (A.n +1 = B.n) AND (A.Ind < getBuy() AND B.Ind>= getBuy()))
4
INNER JOIN sbIndV AS C ON B.n=C.n
5 WHERE A.n>= 0 AND B.n>= 0 AND B.MACD<0 AND B.SL<0 AND C.Ind<0;
• Die im FROM-Teil verwendeten Basistabellen sind sbInd, welche die Daten bezüglich
MACD enthält und eine weitere Tabelle sbIndV, welche neben den n-Werten auch die CMFWerte in der mit Ind benannten Spalte enthält.
• Die Kriterien {(Ind(n-1) < 0) ∧ (Ind(n) ≧ 0)} im Bedingungsteil der Implikation der
gegebenen Handelsregel für Kaufsignale sind in den Zeile 2-3 in gleicher Weise wie bei der
Strategie SMA Crossover implementiert. Dabei ist die Tabelle sbInd mit sich selbst verküpft,
um die hintereinander folgenden, hier als Ind umbenannten Differenzen von MACD-Werten
und Signal-Werten, zu vergleichen. Die zusätzliche JOIN-Bindung in der Zeile 4 wird
benötigt, um CMF-Werte mit einfließen zu lassen.
• Die weiteren Bedingungen der Implikation {(MACD(n) > 0) ∧ (SL(n) > 0) ∧ (CMF(n) > 0) }
folgen im WHERE-Teil. Die ersten zwei Bedingungen im WHERE-Teil schließen die
Hilfsdaten für die Berechnung der Indikatoren aus.
• Abschließend werden nur die n-Werte zur weiteren relevanten Signalberechnung der
Strategiebewertung mittels INTO-Anweisung in die Tabelle sbBuy gespeichert (Zeile 1).
134
7. Implementierung erweiterter Handelsstrategien
7.3 Kombinierte Strategien mit Investition in
Handelspausen
Um zusätzliche Gewinne während einer möglichen Handelspause zu erzielen, können Anleger
das verfügbare Kapital in alternative Produkte in den Handelspausen investieren. Demnach kann
eine Aktive-Markt-Strategie um eine Handelspausen-Strategie erweitert werden.
Die bisher vorgestellten erweiterten Strategien sind durch Erweiterungen an den Berechnungen
des Indikators (sbIndM) oder der Handelssignale (sbBuyM, sbSellM) realisiert worden.
sbBuyM
sbIndM
sb0M
sb1M
sbSellM
SBT
sb2
Etwaige Handelssignale für Investitionen in alternative Produkte während Handelspausen sind
abhängig von relevanten Handelssignalen der Aktiven-Markt-Strategie. Dies heißt in der Praxis,
alternative Produkte sollen dann gekauft werden, nachdem die Wertpapiere der Aktiven-MarktStrategie verkauft sind. Daher ist zur Ermittlung der Handelspause nur die Berechnung der
relevanten Signale (sb1M) zu erweitern.
Zur Veranschaulichung soll hier die zuletzt erläuterte Strategie MACDCOP + CMF verwendet
werden. Diese Strategie generiert durch die erweiterten Abfragen sbBuyM und sbSellM
folgende, in der Abbildung 7.6 mit 1 bis 6 beschriftete Handelssignale. Dabei wird das vierte
Signal aussortiert, da es die folgende Bedingung der Handelsregel (MACD(n) > 0) ∧ (SL(n) >
0) ∧ (CMF(n) > 0) nicht erfüllt.
Handelsregeln:
Sei Ind(n) = MACD(n) - SL(n), n: Fortlaufender Zeitpunkt
∀n : { (Ind(n-1) < 0) ∧ (Ind(n) ≧ 0) ∧ (MACD(n) < 0) ∧ (SL(n) < 0) ∧ (CMF(n) < 0) }
⇒ (Signal(n) = „Kauf“)
∀n : { (Ind(n-1) > 0) ∧ (Ind(n) ≦ 0) ∧ (MACD(n) > 0) ∧ (SL(n) > 0) ∧ (CMF(n) > 0) }
⇒ (Signal(n) = „Verkauf“)
135
7. Implementierung erweiterter Handelsstrategien
12-26-Tage-MACD
9-Tage-SL(Gleitende Signallinie)
Sei Ind(n) = MACD(n) - SL(n)
2.Verkauf
6.Verkauf
4.Verkauf
3.Kauf
1.Kauf
Ind(n) > 0
20-Tage-CMF
1.Kauf
Handelspause
5.Kauf
Verkauf
CMF(n) > 0
Ind(n) < 0
2.Verkauf
Handelspause
Verkauf
MACD(n)>0
SL(n) > 0
Kauf
MACD(n)<0
SL(n) < 0
3.Kauf
6.Verkauf
Handelspause
Kauf
CMF(n) < 0
n
Fortlaufender
Zeitpunkt
Abbildung 7.6 Handelssignale der Strategie MACD+CMF, Microsoft Corp. [SCharts08]
Durch die Berechnung der relevanten Signale mittels der Abfragen sb0M und sb1M wird
weiterhin das fünfte Kaufsignal aussortiert, da es einem Kaufsignal folgt. Im Ergebnis werden
die mit 1, 2, 3 und 6 beschrifteten Signale als relevante Signale abgeleitet. Abhängig von diesen
relevanten Signalen können, wie in der Abbildung 7.6 gezeigt, die Anfangs- und Endpunkte der
Handelspausen berechnet werden.
Der TInTo-StrategyBuilder bietet die Möglichkeit, alle in TInTo-StrategyBuilder angebotene
Aktive-Markt-Strategien optional mit einer von zwei vorgegebenen Handelspausen-Strategien
zu kombinieren:
Aktive-Markt-Strategien:
Handelspausen-Strategien:
Abbildung 7.7 TInTo-StrategyBuilder, Handelspausen-Strategien, Microsoft Corp. [SCharts08]
Die erste Handelspausen-Strategie „Combine with Opposite Product“ bietet die Möglichkeit,
die gewählte Aktive-Markt-Strategie um eine weitere Investition in ein alternatives Wertpapier
zu erweitern, dessen Kurs sich gegenläufig zum Kurs der Wertpapiere der Aktiven-MarktStrategie entwickelt.
136
7. Implementierung erweiterter Handelsstrategien
Die zweite Handelspausen-Strategie „Combine with Cash Deposit“ sieht vor, die gewählte
Aktive-Markt-Strategie um eine alternative Investition in ein fest verzinsliches Produkt zu
erweitern.
Berechnung:
Als ein Beispiel für die Signalberechnung der kombinierten Strategien mit der Investition in den
Handelspausen dient hier die kombinierte Strategie mit der Handelspausen-Strategie „Combine
with Cash Deposit“. Die Signalberechnung für die kombinierte Strategie mit der
Handelspausen-Strategie „Combine with Opposite Product“ erfolgt analog.
In Abhängigkeit von den relevanten Verkaufssignalen aus der Aktiven-Markt-Strategie können
Kaufsignale für eine alternative Investition in den Handelspausen berechnet werden:
Relevante Signale: Kauf
Verkauf
Verkauf
Kauf
Kauf
Verkauf
...
...
Handelspause
Handelspause
n
Fortlaufender
Zeitpunkt
Handelspause
∀n : (SignalRelevant(n) = „Verkauf“) ⇒ (SignalPause(n) = „Kauf“)
Nach einem relevanten Verkaufssignal aus der Aktiven-Markt-Strategie (SignalRelevant(n) =
„Verkauf“) steht Kapital für eine alternative Investition zur Verfügung. Anschließend kann ein
Kaufsignal für eine alternative Investition in der Handelspause (SignalPause(n) = „Kauf“)
generiert werden. Beide Signale werden zum gleichen Zeitpunkt realisiert. Bei tagesbasierten
Zeitpunkten ist dies so zu verstehen, dass die von diesem Handelssignalen ausgelösten
Handelsaktionen nacheinander, aber am selben Tag erfolgen.
Umsetzung:
Die Signalpartner der berechneten Kaufsignale der Handelspausen-Strategie können wie folgt
ermittelt werden:
sb1
BuyN SellN
BuyN
SellN
39
72
150
60
112
196
∀BuyN ∀SellN : SellN ⇒ BuyN
39
60
72
112
150
Die temporäre Tabelle sb1 enthält die Zeitpunkte aller
relevanten Handelssignale aus der Aktiven-Markt-Strategie.
BuyN, SellN: Fortlaufende Zeitpunkten relevanter Kaufsignale
bzw. Verkaufssignale.
60
72
112
150
196
Handelssignale der
Handelspausen-Strategie
Signalpartner der berechneten
Kaufsignale der HandelspausenStrategie ist die zeitlich hinterher
folgende erste Kaufsignal von der
Aktiven-Markt-Strategie.
Dabei ist die vorgestellte Regel ∀n : (SignalRelevant(n) = „Verkauf“) ⇒
(SignalPause(n) = „Kauf“) durch eine sinngleiche Regel ∀BuyN ∀SellN : SellN ⇒ BuyN zu
ersetzen.
137
7. Implementierung erweiterter Handelsstrategien
Um Handelssignale aus der Aktiven-Markt-Strategie von denen aus der HandelspausenStrategie unterscheiden zu können, kann die im Abschnitt 6.2.4 und 6.2.5 erläuterte Abfrage
sb1M erweitert werden. Dabei wird eine zusätzliche Spalte CD erstellt:
Abfrage sb1M
1 SELECT
MIN(n) AS BuyN, SellN, 0 AS CD INTO sb1
2 FROM
sb0
3 GROUP BY SellN;
Ein konstanter Wert „0“ in der Spalte CD (Zeile 1) weist darauf hin, dass die ermittelten
Zeitpunkte der Signale aus der Aktiven-Markt-Strategie stammen.
Zu der durch die Abfrage sb1M erstellten Tabelle sb1 werden Zeitpunkte für die Handelssignale
aus der Handelspausen-Strategie durch folgende INSERT INTO Aktionsabfrage hinzugefügt:
1
2
3
4
INSERT INTO sb1
SELECT A.SellN AS BuyN, MIN(B.BuyN) AS SellN, 1 AS CD
FROM
sb1 AS A INNER JOIN sb1 AS B ON A.SellN<B.BuyN
GROUP BY A.SellN;
• Die vorgestellte Regel ∀BuyN ∀SellN : SellN ⇒ BuyN ist durch eine Umbenennung (A.SellN
AS BuyN) in der Zeile 2 implementiert.
• Um die jeweiligen Signalpartner von Kaufsignalen von der Handelspausen-Strategie zu
finden, ist die Tabelle sb1 mit sich selbst verknüpft. Dabei sorgt die ON-Bedingung dafür,
dass solche Signalpartner, also das zugehörige Verkaufssignal, zeitlich jünger als das jeweilige
Kaufsignal ist. Eine Minimum-Bildung in der Zeile 2 ermittelt das gesuchte Verkaufssignal,
indem es zusammen mit der GROUP BY-Klausel das erste Kaufsignal der jeweiligen Gruppe
aus durch die ON-Klausel bedingten Kaufsignalen berechnet.
• Alle ermittelte Zeitpunkte der Handelssignale von der Handelspausen-Strategie werden durch
einen konstanten Wert 1 in der Spalte CD gekennzeichnet (Zeile 2).
Abbildung 7.8 veranschaulicht das generelle Verhalten dieser Aktionsabfrage. Die Anzahl an
Zeitpunkten aller Signale aus der Handelspausen-Strategie im Analysezeitraum ist um zwei
Zeitpunkte niedriger als die Anzahl von Zeitpunkten aller Signale aus der Aktiven-MarktStrategie. Insgesamt werden 6 Signale im Analysezeitraum nach Aktiver-Markt-Strategie
generiert, aber nur 4 Signale nach Handelspausen-Strategie. Die zwei mit * markierten Signale
aus der Handelspausen-Strategie werden nicht generiert, da zu diesen Signalzeitpunkten die
Logik der Gruppierung und die ON-Bedingung (Zeile 3-4) nicht erfüllt werden. Im Ergebnis der
Strategieerweiterung werden ab dem Zeitpunkt des ersten Kaufsignals aus der Aktiven-MarktStrategie bis zum Zeitpunkt des letzten Verkaufssignals aus dieser Aktiven-Markt-Strategie
Kapital angelegt. Die sich in diesem Zeitraum abwechselnden Investitionen in Wertpapiere aus
der Aktiven-Markt-Strategie und in alternative Produkte während der Handelspausen sind in
Abbildung 7.8 entlang der Zeitachse als blaue Felder dargestellt.
138
7. Implementierung erweiterter Handelsstrategien
Handelssignale aus Aktiver-Markt-Strategie
Kauf
Verkauf
*
Kauf
Kauf
Verkauf
Kauf
Verkauf
Fall 1
Fortlaufender
Zeitpunkt
n
Fall 2
Anfang des
Analysezeitraumes
Verkauf
Kauf
Verkauf
Handelssignale aus Handelspausen-Strategie
*
Ende des
Analysezeitraumes
Abbildung 7.8 Handelssignale aus Aktiver-Markt-Strategie und Handelspausen-Strategie
Weiterhin müssen folgende drei Sonderfälle für die Signalberechnung der Strategiebewertung
berücksichtigt werden:
• Fall 1: Erste zwei Handelssignale.
• Fall 2: Letzte zwei Handelssignale.
• Fall 3: Kein Signal aus der Aktiven-Markt-Strategie.
Fall 1: Erste zwei Handelssignale.
Dieser Fall ist in der Abbildung 7.8 mit Fall 1 gekennzeichnet. Wenn der Zeitpunkt des ersten
Kaufsignals aus der Aktiven-Markt-Strategie nicht mit dem Anfangszeitpunkt des
Analysezeitraumes zusammenfällt, dann muss die erste Handelspause zusätzlich berücksichtigt
werden:
1
2
3
4
5
6
INSERT INTO sb1
SELECT Iif((SELECT MIN(BuyN) FROM sb1 )>0, 0, NULL) AS BuyN,
MIN(sb1.BuyN) AS SellN,
Iif((SELECT MIN(BuyN) FROM sb1 )>0, 1, NULL) AS CD
FROM sb1
WHERE (SELECT MIN(BuyN) FROM sb1 )>0;
• Die Basistabelle sb1 enthält alle relevanten Signale aus der Aktiven-Markt-Strategie und die
letzten, mit Aktionsabfrage generierten Signale der Handelspausen-Strategie. Im Fall der
Abbildung 7.8 enthält die Tabelle sb1 die Zeitpunkte aller mit Kauf und Verkauf
gekennzeichneten Signale. Insgesamt werden dann 10 Signale generiert.
• Die WHERE-Bedingung in der Zeile 6 ist nur den Fall beschränkt, bei dem das erste
Kaufsignal nach dem Anfangszeitpunkt des Analysezeitraumes erscheint. Der
Anfangszeitpunkt des Analysezeitraumes ist immer „0“.
• Im SELECT-Teil werden dann „0“ als Kaufzeitpunkt von der Handelspausen-Strategie und
der Zeitpunkt des ersten Kaufsignals als Verkaufszeitpunkt der Handelspausen-Strategie
angelegt (Zeile 2-3). Um die Signalzeitpunkte aus der Handelspausen-Strategie zu
kennzeichnen, wird „1“ in die Spalte CD geschrieben (Zeile 3). Die Syntax der Funktion Iif ist
wie folgt:
Iif(Bedingung, Wert_wenn_Wahr, Wert_wenn_Falsch)
Bedingung ist der auszuwertende Ausdruck.
Wert_wenn_Wahr ist der auszulieferende Wert, wenn die angegebene Bedingung wahr ist.
Wert_wenn_Falsch ist der auszulieferende Wert, wenn die angegebene Bedingung falsch ist.
139
7. Implementierung erweiterter Handelsstrategien
Angemerkt sei hier, dass die Bedingung für die Existenz einer Handelspause vor dem ersten
Kaufsignal aus der Aktiven-Markt-Strategie (SELECT MIN(BuyN) FROM sb1 )>0 redundant in
den Zeilen 2, 4 und 6 verwendet wird. Eliminiert man allerdings diese Bedingung in den Zeilen
2 und 4, wird im Fall des Fehlschlags der WHERE-Bedingung eine ungewünschte Zeile
hingefügt:
BuyN SellN
CD
Fehlerhaft !
Wenn die WHEREBedingung falsch ist,
wird solche Zeile
hinzugefügt:
1 INSERT INTO sb1
2 SELECT 0 AS BuyN,
3
MIN(sb1.BuyN) AS SellN,
1 AS CD
sb1
6 WHERE (SELECT MIN(BuyN) FROM sb1 )>0;
4
5 FROM
72
112
0
112
150
1
0
1
Aber gewünscht ist, dass kein Signal generiert wird:
Wenn am Anfangszeitpunkt des Analysezeitraumes eine Investition nach Aktiver-MarktStrategie angelegt werden sollte ((SELECT MIN(BuyN) FROM sb1 ) = 0), muss kein Signal für
eine alternative Investition nach Handelspausen-Strategie am Anfangszeitpunkt des
Testzeitraumes generiert werden. Um fälschlicherweise generierte Signale auszugrenzen, wird
die zusätzliche Bedingung (Iif((SELECT MIN(BuyN) FROM sb1 )>0, 0, NULL)) in den Zeile 2
und 4 verwendet. Anhand von NULL-Werten wird dabei kein Signal im Falle des Fehlschlags
im Bedingungsteil generiert.
Fall 2: Letzte zwei Handelssignale.
Dieser Fall ist in der Abbildung 7.8 mit Fall 2 gekennzeichnet. Wenn der Zeitpunkt des letzten
Verkaufssignals aus Aktiver-Markt-Strategie mit dem Endzeitpunkt des Analysezeitraumes nicht
identisch ist, dann muss die letzte Handelspause zusätzlich berücksichtigt werden:
1 INSERT INTO sb1
2 SELECT Iif((SELECT MAX(SellN) FROM sb1 )<(SELECT MAX(n) FROM sbA),
3
(SELECT MAX(SellN) FROM sb1 ), NULL) AS BuyN,
4
5
MAX(sbA.n) AS SellN,
Iif((SELECT MAX(SellN) FROM sb1 )<(SELECT MAX(n) FROM sbA), 1, NULL) AS CD
6 FROM sbA
7 WHERE (SELECT MAX(SellN) FROM sb1 )<(SELECT MAX(n) FROM sbA);
• Um den Endzeitpunkt des Analysezeitraumes zu berücksichtigen, wird hier die Tabelle sbA als
Basistabelle verwendet (Zeile 6). Die temporäre Tabelle sbA enthält alle benötigten Daten für
Indikatorberechnung sowie Signalberechnung zusammen mit den jeweiligen Zeitpunkten.
• Die WHERE-Bedingung in der Zeile 7 überprüft, ob eine Handelspause nach dem letzten
Verkaufssignal existiert. Dabei liefert der linke Teil des Vergleichs den Zeitpunkt des letzten
Verkaufssignals und der rechte Teil des Vergleichs den Endzeitpunkt des Analysezeitraumes.
• Im SELECT-Teil werden dann der letzte Verkaufszeitpunkt als Kaufzeitpunkt für ein
alternatives Produkt nach Handelspausen-Strategie und der Endzeitpunkt des Testzeitraumes
als Verkaufszeitpunkt von dieser Handelspausen-Strategie angelegt (Zeile 2-4). Zeile 5
kennzeichnet die Signale aus der Handelspausen-Strategie.
140
7. Implementierung erweiterter Handelsstrategien
• Hier werden wieder zusätzliche Bedingungen in den Zeilen 2, 3 und 5 verwendet, um die im
Fall 1 vorgestellte fälschliche Signalgenerierung zu vermeiden.
Fall 3: Kein Signal aus Aktiver-Markt-Strategie.
Wenn kein relevantes Handelssignal aus der Aktiven-Markt-Strategie generiert worden ist,
werden in den bisherigen Abfragen keine Signale generiert. In diesem Fall ist aber der gesamte
Analysezeitraum als Handelspause zu betrachten und eine Investition in alternative Produkte
nach Handelspausen-Strategie soll vorgenommen werden:
1 INSERT INTO sb1
2 SELECT Iif((SELECT COUNT(n) FROM sb0)=0, 0, NULL) AS BuyN,
MAX(A.n) AS SellN,
Iif((SELECT COUNT(n) FROM sb0)=0, 1, NULL) AS CD
5 FROM
sbA AS A
6 WHERE (SELECT COUNT(n) FROM sb0)=0;
3
4 • Um den Endzeitpunkt des Analysezeitraumes zu ermitteln, wird hier wieder die Tabelle sbA
als Basistabelle verwendet (Zeile 5).
• Die WHERE-Bedingung in der Zeile 6 überprüft, ob keine relevanten Handelssignale aus der
Aktiven-Markt-Strategie generiert worden sind. Die Tabelle sb0 enthält alle relevanten
Verkaufssignale aus der Aktiven-Markt-Strategie im Analysezeitraum zusammen mit
möglichen Signalpartnern.
• Im SELECT-Teil werden dann der Anfangszeitpunkt des Analysezeitraumes „0“ als
Kaufzeitpunkt für alternative Produkte und der Endzeitpunkt des Analysezeitraumes als
Verkaufszeitpunkt dieser alternativen Produkte angelegt. Zeile 4 kennzeichnet die Signale aus
der Handelspausen-Strategie.
• Die zusätzliche Bedingung in den Zeilen 2 und 4 wird verwendet, um die im Fall 1
vorgestellte fehlerhafte Signalgenerierung zu vermeiden.
141
7. Implementierung erweiterter Handelsstrategien
Neben den elementaren Handelsstrategien wurden im Rahmen dieser Diplomarbeit folgende
erweiterte Handelsstrategien innerhalb des TInTo-StrategyBuilder realisiert:
Strategie-Kategorie
Erweiterte Strategie
Signalgenerierung
Gleitende Signallinien
Strategie
SMA Crossover (SMAC)
MACD Crossover (MACDC)
Fast Stochastics Crossover (FSTOCC)
Slow Stochastics Crossover (SSTOCC)
Zusätzliche
Strategiebedingungen
MACD Crossover Plus (MACDCP)*
FSTOC Crossover Plus (FSTOCCP)*
SSTOC Crossover Plus (SSTOCCP)*
Handelspausen-Strategie
Kombination mehrerer
Indikator
MACDCP+CMF (MCF)
Erweiterungsoptionen in
Handelspause
Combine with Opposite Product
Combine with Cash Deposit
Tabelle 7.1 Erweiterte Handelsstrategien und Handelspausen-Strategien in TInTo-StrategyBuilder
142
8
Bewertung von Handelsstrategien
Eine entworfene Handelsstrategie lässt sich anhand ihrer Rendite bezogen auf historische Daten
bewerten. Das in dieser Arbeit implementierte Modul TInTo-StrategyBuilder ermöglicht es
Anwendern, sowohl die Rendite einer vorhandenen Strategie zu überprüfen, als auch die
Entwicklung der Rendite innerhalb des Analysezeitraumes der Strategie zu analysieren und
gegebenenfalls durch Eingabefunktionen weiter zu optimieren.
In diesem Kapitel wird die Modellierung und die Implementierung der Renditeberechnung
entworfener Strategien vorgestellt. Dabei liegt die in den Kapiteln 6 und 7 erläuterte
Signalberechnung für die Strategiebewertung zu Grunde. Anschließend folgen eine technische
Performanzanalyse zur Berechnungsdauer im TInTo-System sowie beispielhafte
Profitabilitätsbewertungen der im TInTo-StrategyBuilder angebotenen Handelsstrategien. Die
Informationen zur Berechnung der Zinserträge basieren sich auf [ZinB08].
8.1 Renditeberechnung
Eine Handelsstrategie kann durch hypothetisch erzielte Gewinne unter Verwendung historischer
Daten und Investitionen in Analysewertpapiere über vorgewählte Analysezeiträume bewertet
werden.
Verschiedene Wertpapiere ermöglichen unterschiedliche Ertragsformen.
Eine Rendite aus Investitionen in Aktien kann durch Kursgewinne und Dividenden erzielt
werden. Darüber hinaus sollten auch ein subjektiver Gewinn aus den Stimmrechten, aber auch
mögliche Kosten (zum Beispiel Depotgebühr, Provision) und Steuern (zum Beispiel
Abgeltungssteuer ab 2009) berücksichtigt werden. Für Anlagen in Fonds fallen darüber hinaus
Verwaltungskosten für Fondmanagement und Ausgabeaufschläge an.
Renditemöglichkeiten von festverzinslichen Wertpapieren wie zum Beispiel Anleihen und
Pfandbriefen hängen dagegen hauptsächlich vom gewährten Zinssatz ab.
Der Schwerpunkt dieser Diplomarbeit liegt auf der Aktiven-Markt-Strategie, deren Rendite aus
der Wertsteigerung von Wertpapieren resultiert. Die technische Analyse, worauf die
143
8. Bewertung von Handelsstrategien
Handelsstrategien dieser Arbeit basieren, sieht definitionsgemäß vor, dass Erträge ausschließlich
aus Kursgewinnen entstehen. Ein möglicher zusätzlicher Ertrag aus Dividenden kann relativ
gering sein im Verhältnis zu der gesamten Wertsteigerung, vorausgesetzt die Investition
fokussiert auf Kursgewinne. Mögliche Handelskosten und Besteuerungen sind je nach Anleger,
beauftragter Transaktionsbank und dem Rechtsrahmen des jeweiligen Landes sehr
unterschiedlich zu betrachten.
Auf Grund dieser Komplexität und der Abhängigkeit von den persönlichen Gegebenheiten der
jeweiligen Investoren ist die Entscheidung getroffen worden, im Rahmen dieser Arbeit die
Berechnung des erzielten Gewinns in einem vereinfachten, pauschalen Lösungsweg zu
implementieren. Dazu wird im Folgenden eine Strategie ausschließlich durch den erzielten
Kursgewinn bewertet. Für den Fall, dass eine Investition eine dividendenträchtige Aktie oder
Fonds beinhaltet oder wenn eine Investition mit erheblichem Kosteneinsatz (Transaktionskosten
durch extrem häufige Handelsaktionen) verbunden ist, sollten diese Kapital Zu- oder Abflüsse
ebenfalls mit in die Gewinnberechnung mit einbezogen werden.
Eine zukünftige Version von TInTo kann um diese zusätzlichen Gewinn- oder Kostenelemente
erweitert werden.
Die Renditeberechnung einer Handelseinheit aus Wertpapierkauf und späterem Verkauf nach der
Aktiven-Markt-Strategie gemäß TInTo-StrategyBuilder lautet dann wie folgt:
Kauf
Verkauf
n : Fortlaufender Zeitpunkt
Dabei wird der erzielte Kursgewinn zum eingesetzten Kapital, also dem ursprünglichen
Kaufpreis, ins Verhältnis gesetzt.
Die Renditeberechnung der alternativen Investitionen in einer Handelspause, bietet
Ertragsmöglichkeiten in anderer Weise:
Handelssignale
aus Aktiver-Markt-Strategie:
Verkauf
Kauf
Handelspause
Handelssignale
aus Handelspausen-Strategie:
n: Fortlaufender Zeitpunkt
Kauf
Verkauf
• Für die Handelspausen-Strategie „Combine with Opposite Product“ in TInTo-StrategieBuilder
lässt sich die Profitabilität anhand der gegenläufigen Kursbildung zum Kurs der AktivenMarkt-Strategie berechnen:
144
8. Bewertung von Handelsstrategien
• Für die Handelspausen-Strategie „Combine with Cash Deposit“ in TInTo-StrategyBuilder lässt
sich die Profitabilität über den Zinssatz der alternativen Investition während der Handelspause
berechnen:
Dabei ist hier die englische Zinsmethode verwendet worden. Diese Methode setzt voraus,
dass die Zinstage kalendergenau bestimmt werden und zur Ermittlung des tagesgenauen
Anteils der nominale Jahreszinssatz durch 365 geteilt wird. Im Vergleich dazu sieht die
deutsche Zinsmethode vor, dass jeder Monat mit 30 Zinstagen und ein gesamtes Jahr mit 360
Zinstagen berechnet wird.
Da meistens im Analysezeitraum mehrere Käufe und Verkäufe vorgenommen werden, muss die
Gesamtrendite aus allen einzelnen Handelseinheiten im Analysezeitraum kumulativ betrachtet
werden. Darüber hinaus kann eine Strategie noch durch Rentabilitätstests auf Basis mehrere
Beispiel-Wertpapiere und über mehrere Testzeiträume bewertet werden.
8.2 Implementierung
Die Renditeberechnung für die Aktive-Markt-Strategie sowie für die kombinierte Strategie mit
der Investition in den Handelspausen müssen separat betrachtet werden, da die Rendite jeweils
auf andere Weise ermittelt wird.
8.2.1 Aktive-Markt-Strategien
Für die Renditeberechnung Aktiver-Markt-Strategie werden ausschließlich die Kursgewinne
betrachtet. Wobei ist Aktive-Markt-Strategie ein Oberbegriff für elementare Strategie und
erweiterte Strategie. Das Ziel bei der Implementierung waren eine Anzeige sowohl der
prozentualen Rendite aller einzelnen Handelseinheiten als auch der prozentualen kumulativen
Rendite über den gesamten Analysezeitraum. Dabei basiert die Renditeberechnung auf den in
den Kapiteln 6 und 7 erläuterten Signalberechnungen.
Sicht SBT
BuyDate
BuyClose
SellDate
SellClose
Profit(%)
CMLProfit(%)
05.03.2008
12254,99
25.03.2008
12532,6
XX
XX
Handelseinheit: 29.05.2008
12646,22
24.07.2008
11349,28
XX
XX
Signalberechnung(Vorhanden)
145
Neu Renditeberechnung
8. Bewertung von Handelsstrategien
Berechnung:
Die Rendite einer einzelnen Handelseinheit ergibt sich aus der Division des Kursgewinns durch
den Kaufkurs. Die prozentuale Rendite wird dann berechnet, indem die ermittelte Rendite mit
100 multipliziert wird:
Dabei richtet sich diese Berechnung nach dem Schlusskurs (Close), mit dem eine Handelsaktion
abgeschlossen worden wäre.
Die kumulative Renditeberechnung basiert dann auf der Renditeberechnung der einzelnen
Handelseinheiten. Die Kapitalhöhe am Ende des Zeitraumes ergibt sich nach chronologisch
geordneten Handelseinheiten wie folgt:
...
...
Das vorhandene Kapital nach Abwicklung einer Handelseinheit aus Kauf und anschließendem
Verkauf ergibt sich durch eine rekursive Berechnung. Dabei wird der erneut erworbene
Ertragswert (Sh-1·Rh) zu der Kapitalhöhe am Ende der vorangegangenen Handelseinheit(Sh-1)
addiert.
Die kumulative Rendite wird dann ermittelt, indem die Gewinngröße (Sh - S0) durch das
Anfangskapital dividiert wird:
Die im Analysezeitraum erzielte Gesamtrendite entspricht dann der kumulativen Rendite nach
der letzten abgeschlossnen Handelseinheit im betreffenden Analysezeitraum.
Umsetzung:
Die Berechnung der kumulativen Rendite erfordert die Formulierung von rekursiven Sichten,
welche mit dem von Access 2003 unterstützten SQL-92 nicht möglich sind. Für eine analoge
Aufgabenstellung, die Berechnung rekursiver Indikatoren, haben die zuvor erwähnten
Diplomarbeiten im TInTo-Projekt als eine Behelfslösung die Eigenschaft der UpdateAnweisung verwendet. Diese Methode wird im Folgenden ebenfalls für die kumulative
146
8. Bewertung von Handelsstrategien
Renditeberechnung verwendet. Jedoch besteht eine potenzielle Fehlermöglichkeit bei der
Renditeberechnung nach dieser Methode, welche im Rahmen dieser Arbeit gemäß Vereinbarung
nicht behoben werden konnte. Diese bekannte Problemstellung wird im Abschnitt 8.3 näher
erläutert.
Die Renditeberechnung basiert auf der in den Kapiteln 6 und 7 erläuterten Signalberechnung.
Die letzte Sicht bei der Signalberechnung enthält das Datum und den Schlusskurs für alle
relevanten Handelssignale im Analysezeitraum:
1 SELECT A.BuyDate, A.BuyClose, A.SellDate, A.SellClose
2 FROM sb2 AS A INNER JOIN sb1 AS B ON (A.SN=B.SellN) AND ( A.BN=B.BuyN)
3 ORDER BY A.BuyDate ASC;
Dabei sind alle relevante Signalzeitpunkte aus der Tabelle sb1 mit den zugehörigen
Darstellungsdaten (Date, Close) aus der Abfage sb2 mittels Zeitpunktvergleich (ON-Bedingung)
verknüpft. Die Daten werden schließlich durch die Anweisung in der letzten Zeile
chronologisch sortiert.
Diese Abfrage wird nun für die Renditeberechnung erweitert, indem die Renditen einzelner
Handelseinheiten berechnet werden und die Anfangswerte für die kumulative
Renditeberechnung initialisiert werden:
1 SELECT A.BuyDate, A.BuyClose, A.SellDate, A.SellClose
(SellClose-BuyClose)/BuyClose AS R, R*100 AS P,
1+R AS acmR, (acmR-1)*100 AS acmP INTO SBT
4 FROM sb2 AS A INNER JOIN sb1 AS B ON (A.SN=B.SellN) AND ( A.BN=B.BuyN)
5 ORDER BY A.BuyDate ASC;
2
3
• Die Erweiterung findet in den Zeilen 2 und3 statt.
• Der erste Teil in der Zeile 2 berechnet die Rendite der jeweiligen Handelseinheit und der
zweite Teil ermittelt die prozentuale Rendite der jeweiligen Handelseinheit.
• Der erste Teil in der Zeile 3 (1+R AS acmR) initialisiert die vorhandene Kapitalhöhe nach
Abschluss der ersten Handelseinheit. Dabei ist für das Anfangskapital die Zahl „1“ eingesetzt.
Diese Vorgabe der Zahl „1“ vereinfacht die gesamte Berechnung und reicht für unseren
Zweck, die prozentuale kumulative Renditeberechnung. Der nächste Teil in der Zeile 3
((acmR-1)*100 AS acmP) ermittelt die prozentuale kumulative Rendite nach Abschluss der
ersten Handelseinheit. Folgender Teil aus der erläuterten Formel ist damit in der Zeile 3
realisiert:
SQL
SQL
1 (Anfangskapital)
1 + R AS acmR
(acmR-1)*100 AS acmP
• Die Sicht wird durch die INTO-Anweisung materialisiert (Zeile 3). Jedoch wird diese Sicht
am Ende der Berechnung gelöscht. Das Materialisieren dieser Sicht ist notwendig, um die
folgenden Aktionsabfragen für die rekursive Berechnung verwenden zu können.
Der folgende rekursive Formelteil erfordert eine Verknüpfung der Daten der aktuellen
Handelseinheit mit den Daten der vorherigen Handelseinheit:
147
8. Bewertung von Handelsstrategien
Für eine solche Verknüpfung ist eine Nummerierung von Handelseinheiten wünschenswert.
Folgende Aktionsabfrage fügt fortlaufende Nummern zu der mittels der letzten Aktionsabfrage
erstellten Tabelle SBT hinzu:
1 ALTER TABLE SBT ADD COLUMN NR COUNTER(1,1)
2 CONSTRAINT PrimaryKey PRIMARY KEY;
Mittels der ALTER TABLE-Anweisung wird die Tabelle SBT modifiziert, indem eine
zusätzliche Spalte NR für die fortlaufenden Nummern anhand einer ADD COLUMNAnweisung hinzugefügt wird. Dabei startet die Funktion COUNTER die Autonummerierung
mit der Nummer „1“ in der ersten Zeile und inkrementiert diese bei jeder weiteren Zeile um
eins. Damit ist eine Spalte mit fortlaufenden Nummern umgehend simuliert. Die Syntax der
verwendeten Funktion COUNTER lautet wie folgt:
COUNTER (Startwert, Inkrementierender Wert)
Für die rekursive Berechnung wird die in den bisherigen Diplomarbeiten zum TInTo-Projekt
erläuterte Behelfslösung eingesetzt. Dabei wird eine Eigenschaft der UPDATE-Anweisung
verwendet, womit die Datensätze in der Tabelle sukzessiv hintereinander aktualisiert werden.
Folgende Abfrage berechnet die jeweils vorhandene Kapitalhöhe und die jeweilige kumulative
Rendite in Prozent:
1 UPDATE SBT AS A INNER JOIN SBT AS B ON A.NR-1=B.NR
2 SET A.acmR = B.acmR + B.acmR*A.R, A.acmP = (B.acmR + B.acmR*A.R-1)*100;
• Anhand der realisierten fortlaufenden Nummern (NR) sind die Daten aktueller
Handelseinheiten mit den Daten vorheriger Handelseinheiten verknüpft (Zeile 1).
• Der erste Teil in der Zeile 2 berechnet die jeweilige Kapitalhöhe. Da die Berechnung mittels
UPDATE-Anweisung sukzessiv Zeile für Zeile erfolgt, enthält die für die Berechnung der
Kapitalhöhe der aktuellen Handelseinheit (A.acmR) benötigte Kapitalhöhe aus der vorherigen
Handelseinheit (B.acmR) bereits den zuvor berechneten Wert (B.acmR). Der zweite Teil in
der Zeile 2 ermittelt die kumulative Rendite. Somit sind hier folgende Formeln in SQL
umgesetzt:
1 (Anfangskapital)
SQL
SQL
A.acmR = B.acmR + B.acmR*A.R
A.acmP = (B.acmR + B.acmR*A.R-1)*100
Die Ergebnisse aus den bisherigen Berechnungen (die temporäre Tabelle SBT) werden für die
Anzeige in die Tabelle TstrBuilderShow hinzugefügt:
1 INSERT INTO TstrBuilderShow(Info) VALUES(getSbInfo());
1 INSERT INTO TstrBuilderShow( BuyDate, BuyClose, SellDate, SellClose, P, acmP)
2 SELECT SBT.BuyDate, SBT.BuyClose, SBT.SellDate, SBT.SellClose, SBT.P, SBT.acmP
3 FROM
SBT ;
Die Funktion getSBInfo() in der ersten Aktionsabfrage liefert die Symbole der gewählten
Wertpapiere, den Namen der gewählten Handelsstrategie und die eingegebenen Parameter für
die aktuelle Strategie.
148
8. Bewertung von Handelsstrategien
Die Tabelle TstrBuilderShow bleibt permanent in der Datenbank, im Gegensatz zu den anderen
Tabellen, welche temporär nur für die Berechnung erstellt wurden. Um die Profitabilität
verschiedener Handelsstrategien zu vergleichen, werden auch weitere Berechnungsergebnisse
anderer Strategien in diese Tabelle hinzugefügt. In dieser Tabelle ist eine Spalte mit dem
Datentyp AutoNumber definiert. Diese Lösung nummeriert jeden hinzugefügten Datensatz und
dient dazu, dass die Ergebnisse aus verschiedenen Strategien in der hinzugefügten Reihenfolge
gespeichert und angezeigt werden.
Die Daten aus der Tabelle TstrBuilderShow werden wie folgt auf der Benutzeroberfläche
angezeigt:
Rendite aus jeweiliger
Handelseinheit im Prozent
Kumulative Rendite
in Prozent
Analysewertpapier
und
Strategieinformation
Abbildung 8.1 Anzeige der Rendite von Aktiver-Markt-Strategie
8.2.2 Kombinierter Strategien mit Investition in Handelspausen
Wenn eine Handelsstrategie um alternative Investitionen in Handelspausen erweitert wird, muss
die Renditeberechnung auch dementsprechend angepasst werden. Der TInTo-StrategyBuilder
bietet zwei optionale Handelspausen-Strategien „Combine with Opposite Product“ und
„Combine with Cash Deposit“ für weitere Investitionen in einer Handelspause. Als Beispiel für
die erweiterte Renditeberechnung dient im Folgenden die Option „Combine with Cash
Deposit“.
Beispiel „Combine with Cash Deposit“:
Die Rendite aus der Aktiven-Markt-Strategie ergibt sich ausschließlich aus Kursgewinnen und
wird auch so berechnet. Dagegen hängt die Rendite aus alternativen Investitionen in
festverzinsliche Produkte von der Anlagedauer und dem gewährten Zinssatz ab. Als Ziel war
vorgegeben, eine Anzeige der jeweiligen prozentualen Rendite aller einzelnen Handelseinheiten
sowie des prozentualen kumulativen Gewinns nach der jeweiligen Handelseinheit aus der
Aktiven-Markt-Strategie zu realisieren. Weiterhin sollte eine gesamte prozentuale Rendite für
den Analysezeitraum ermittelt werden.
149
8. Bewertung von Handelsstrategien
Signalberechnung (Vorhanden)
BuyDate
BuyClose
05.03.2008
12254,99
25.03.2008 12532,6
0
29.05.2008
12646,22
24.07.2008 11349,28
1
Info
Handelseinheit:
CD
SellDate
SellClose CD
BuyDate
BuyClose
SellDate
05.03.2008
12254,99
25.03.2008
29.05.2008
Neu Renditeberechnung
SellClose Profit(%) CMLProfit(%)
12532,6
24.07.2008
CD Due
XX
XX
XX
XX
Dabei zeigt „CD“ in der Spalte Info an, dass es sich bei der jeweiligen Handelseinheit um eine
alternative Investition in festverzinsliche Produkte in einer Handelspause handelt. „CD Due“
stellt die gesamte kumulative Rendite am Laufzeitende der Zinsen dar.
Berechnung:
Die Renditeberechnung wird in folgenden fünf Schritten vorgenommen:
Schritt 1) Im Fall des Handels nach Aktiver-Markt-Strategie (CDh=0) ergibt sich die Rendite
mittels Division des Kursgewinns durch den Kaufkurs. Im Fall des Handels nach
Handelspausen-Strategie mit alternativer Investition (CDh=1) ermittelt sich die Rendite
dadurch, dass der nominale Zinssatz mit dem Anteil der Zinstage im Jahr multipliziert wird:
Schritt 2) Basierend auf der berechneten Rendite einzelner Handelseinheiten kann die
kumulative Kapitalhöhe nach Abschluss der jeweiligen Handelseinheit ermittelt werden. Dabei
wird zuerst nur die Rendite aus der Aktiven-Markt-Strategie (CDh=0) betrachtet:
150
8. Bewertung von Handelsstrategien
...
...
Die prozentuale kumulative Rendite ergibt sich dann dadurch, dass die Gewinnhöhe in Relation
zum Anfangskapital gesetzt und anschließend mit 100 multipliziert wird:
Der Ertragswert aus der Handelspausen-Strategie kann nicht nach jeder einzelnen
Handelseinheit erzielt werden, da die Verzinsung am Laufzeitende, also im Beispiel des
verzinslichen Verrrechnungskontos, erst am Jahresende fällig ist.
Schritt 3) Die Berechnung des Ertragswertes einzelner Handelseinheiten in einer Handelspause
setzt die Berechnungen aus den Schritten 1 und 2 voraus. Der Ertragswert Eh wird berechnet
durch die Multiplikation des angelegten Kapitals mit der jeweiligen Rendite Rh:
Als angelegtes Kapital in dieser Handelseinheit der Handelspause fließt dabei ein die
kumulative Kapitalhöhe im Ergebnis der vorangegangenen Handelseinheit Sh-1 aus der AktivenMarkt-Strategie. Es gilt die Logik: Handelspause folgt Aktiver-Markt-Strategie.
Schritt 4) Die gesamte Kapitalhöhe am Ende des Analysezeitraumes wird mittels Addition der
letzten kumulativen Kapitalhöhe aus der Aktiven-Markt-Strategie mit den summierten
Ertragswerten aus der Handelspausen-Strategie ermittelt:
Das berechnete Endkapital (Kend) beinhaltet das Anfangskapital sowie alle Gewinne aus der
Aktiven-Markt-Strategie und der Handelspausen-Strategie, nachdem die Verzinsung fällig
geworden ist. Zur Vollständigkeit: Zinseszins auf die jährliche Verzinsung des für die
151
8. Bewertung von Handelsstrategien
Handelspausen verwendeten Verrechnungskontos ist in diesem Modell zur Vereinfachung nicht
berücksichtigt.
Die erzielte prozentuale Rendite im Analysezeitraum ergibt sich dann wie bereits zuvor
dargestellt dadurch, dass der gesamte Ertragswert mit dem Anfangskapital ins Verhältnis gesetzt
und mit 100 multipliziert wird:
Schritt 5) Ein Sonderfall muss noch berücksichtigt werden. Sollten keine Handelssignale nach
Aktiver-Markt-Strategie erzeugt worden sein, wird das Anfangskapital über den gesamten
Analysezeitraum für alternative Investitionen gemäß Handelspausen-Strategie angelegt. Da aber
der Ertragswert aus dieser alternativen Investition (Eh) bei der Berechnung des Endkapitals
(Kend) kein Anfangskapital enthält, muss dies wie folgt berücksichtigt werden:
Umsetzung:
Die Berechnung der kumulativen Rendite enthält rekursive Formeln. Die dafür erforderliche
rekursive Berechnung ist gemäß der bisher in TInTo verwendeten Methode implementiert
worden. Das bestehende Problem rekursiver Berechnung wird im nächsten Abschnitt
beschrieben.
Der Grundgerüst ähnelt der im letzten Abschnitt vorgestellten Renditeberechnung und wird
mittels mehrerer Aktionsabfragen durchgeführt. Auf die wiederholten Teilberechnungen wird
hier nur kurz eingegangen. Diese basieren auf der ebenfalls in den Kapiteln 6 und 7 erläuterten
Signalberechnung. Für die Umsetzung der Renditeberechnung wird die letzte Abfrage SBT der
Signalberechnung wie folgt erweitert:
1 SELECT A.BuyDate, Iif(B.CD=0, A.BuyClose, NULL) AS BuyClose, A.SellDate,
2
3
4
5
6
7
8
Iif(B.CD=0, A.SellClose, NULL) AS SellClose,
Iif(B.CD=0,(SellClose-BuyClose)/BuyClose,
'" & Irate & "'/100*DateDiff('d',BuyDate,SellDate)/365) AS R,
R*100 AS P,
1+R AS acmR, (acmR-1)*100 AS acmP, CD INTO SBT
FROM
sb2 AS A INNER JOIN sb1 AS B ON (A.SN=B.SellN) AND (A.BN=B.BuyN);
ORDER BY A.BuyDate ASC;
• Die Erweiterung findet nur im SELECT-Teil statt.
• Die Handelskurse werden mittels einer Fallentscheidung von Iif-Klausel nur bei Handel nach
Aktiver-Markt-Strategie (CD=0) übertragen (Zeile 1-2). Die Syntax von der Funktion Iif
lautet:
Iif(Bedingung, Wert_wenn_Wahr, Wert_wenn_Falsch)
Bedingung ist der auszuwertende Ausdruck.
Wert_wenn_Wahr ist der auszuliefernde Wert, wenn die angegebene Bedingung wahr ist.
Wert_wenn_Falsch ist der auszuliefernde Wert, wenn die angegebene Bedingung falsch ist.
152
8. Bewertung von Handelsstrategien
Die prozentuale Rendite einer einzelnen Handelseinheit wird in den Zeilen 3 und 4 ermittelt.
Damit wird folgende Berechnungsformel aus Schritt 1) implementiert:
Der Parameter Irate in der Zeile 4 liefert den vom Anwender eingegebenen jährlichen
prozentualen Zinssatz. Die von Access angebotene Funktion DateDiff liefert die Zinstage
zwischen Kaufdatum und Verkaufsdatum der jeweiligen Handelseinheit. Die Syntax der
Funktion DateDiff lautet:
DateDiff(Intervall, Startdatum, Enddatum)
Intervall ist der Zeitintervall, mit dem die Differenz zwischen Startdatum und Enddatum
berechnet werden soll. Mögliche Werte für Intervall sind h für Stunden, d für Tag, m für
Monat etc.
Startdatum und Enddatum sind die Datumsangaben zur Berechnung der Differenz.
• Der erste Teil (1+R) in der Zeile 6 dient zur Initialisierung der rekursiven Berechnung der
kumulativen Rendite. Dabei wird die Kapitalhöhe nach der ersten Handelseinheit berechnet.
Die Zahl 1 wird wieder für das Anfangskapital verwendet. Der folgende Teil ((acmR-1)*100)
ermittelt die prozentuale kumulative Rendite nach der ersten Handelseinheit.
Zu der durch die letzte Aktionsabfrage erstellten Tabelle SBT wird noch eine zusätzliche Zeile
hinzugefügt, um die erzielte gesamte Rendite am Ende der Verzinsungslaufzeit darzustellen.
Dabei enthält diese Zeile eine Konstante „2“ in der Spalte CD:
1 INSERT INTO SBT(CD) VALUES(2);
Analog der vorhergehenden Implementierung in Abschnitt 8.2.1 werden fortlaufende Nummern
mittels COUNTER Funktion in die Tabelle SBT hinzugefügt. Diese fortlaufenden Nummern
werden für die folgende rekursive Berechnung verwendet.
1 ALTER TABLE SBT ADD COLUMN NR COUNTER(1,1)
2 CONSTRAINT PrimaryKey PRIMARY KEY;
Für die rekursive Berechnung der kumulativen Rendite aus der Aktiven-Markt-Strategie wird
wieder die Eigenschaft der sukzessiven Abarbeitung der UPDATE-Anweisung verwendet:
1 UPDATE SBT AS A INNER JOIN SBT AS B ON A.NR-2=B.NR
2 SET
3 WHERE
A.acmR = B.acmR + B.acmR*A.R, A.acmP = (B.acmR + B.acmR*A.R-1)*100
A.CD=0;
• Die Daten der aktuellen Handelseinheit werden mit den Daten der vorherigen Handelseinheit
aus der Aktiven-Markt-Strategie (CD=0) verknüpft (Zeile 1, 3). Dabei stehen
Handelseinheiten aus Aktiver-Markt-Strategie und Handelspausen-Strategie (CD=1) immer
abwechselnd in der Tabelle SBT. Durch die ON- und WHERE-Bedingungen werden hier nur
die Daten aus der Aktiven-Markt-Strategie behandelt.
• Der erste Teil der zweiten Zeile berechnet die vorhandene Kapitalhöhe. Durch die sukzessive
Berechnung der UPDATE-Anweisung enthält die Kapitalhöhe der vorherigen Handelseinheit
153
8. Bewertung von Handelsstrategien
(B.acmR) den für die Berechnung der Kapitalhöhe der aktuellen Handelseinheit (A.acmR)
benötigte zuvor berechneten Wert (B.acmR). Der zweite Teil berechnet die kumulative
Rendite. Die damit in SQL umgesetzten Formeln lauten wie folgt:
Das Anfangskapital S0 ist durch die Zahl 1 umgesetzt.
Basierend auf der schon bereits berechnete Kapitalhöhe (acmR) wird die Ertragshöhe der
einzelner Handelseinheit aus der Handelspausen-Strategie (CD=1) ermittelt:
1 UPDATE SBT AS A INNER JOIN SBT AS B ON A.NR-1=B.NR
2 SET
A.R=A.R*B.acmR
3 WHERE
A.CD=1;
Die hier realisierte Berechnungsformel lautet wie folgt:
Der ermittelte Ertragswert einer einzelnen Handelseinheit wird hier durch die UPDATEAnweisung sukzessive summiert:
1 UPDATE SBT AS A INNER JOIN SBT AS B ON A.NR-2=B.NR
2 SET
3 WHERE
A.R=A.R+B.R
A.CD=1;
Die folgende Aktionsabfrage ermittelt basierend auf den berechneten Teilergebnissen das
Endkapital und die gesamte Rendite im Analysezeitraum:
1 UPDATE (SBT AS A INNER JOIN SBT AS B ON A.NR-1=B.NR)
2
INNER JOIN SBT AS C ON B.NR-1=C.NR
3 SET
4
A.acmR=Iif(B.CD=1,B.R+C.acmR,B.acmR+C.R),
A.acmP=Iif(B.CD=1,(B.R+C.acmR-1)*100, (B.acmR+C.R-1)*100)
5 WHERE A.CD=2;
Für die Berechnung des Endkapitals werden die bereits berechnete kumulative Kapitalhöhe
(acmR) aus der Aktiven-Markt-Strategie sowie der ermittelte gesamte Ertragswert (R) aus der
Handelspausen-Strategie benötigt. Diese beiden Teilergebnisse befinden sich in den beiden
letzten Zeilen der Tabelle SBT. Für die Berechnung des Endkapitals wird eine Verknüpfung in
der Zeile 2 benötigt. Das Endkapital im Analysezeitraum wird anschließend in die mit CD-Wert
„2“ reservierte letzte Zeile geschrieben, wofür die weitere Verknüpfung in der Zeile 1 verwendet
wird. Im Zuge dieser Verknüpfung wird auch die Tabelle SBT in A, B, C umbenannt.
Für die Berechnung des Endkapitals Kend wird eine Fallentscheidung in Zeile 3 benötigt, um
jeweils die entsprechenden Daten zu addieren:
154
8. Bewertung von Handelsstrategien
Fall 1) Der Analysezeitraum endet mit einer alternativen Investition in einer Handelspause
(B.CD=1)
CD
0
C (Aktive-Markt-Strategie)
1
B (Handelspausen-Strategie)
2
A (Endergebnis)
Das Endkapital ergibt sich dadurch, dass
die bereits berechnete kumulative
Kapitalhöhe aus der Aktiven-MarktStrategie (C.acmR) und der ermittelte
gesamte Ertragswert aus der
Handelspausen-Strategie (B.R) addiert
werden:
A.acmR = B.R + C.acmR
Fall 2) Der Analysezeitraum endet mit dem Handel nach Aktiver-Markt-Strategie (B.CD=0)
CD
1
C (Alternative Strategie)
0
B (Handelspausen-Strategie)
2
A (Endergebnis)
Das Endkapital ergibt sich dadurch, dass
die bereits berechnete kumulative
Kapitalhöhe aus der Aktiven-MarktStrategie (B.acmR) und der ermittelte
gesamte Ertragswert aus der
Handelspausen-Strategie (C.R) addiert
werden:
A.acmR = B.acmR + C.R
Dabei wird dann das Endkapital im Analysezeitraum in die mit CD-Wert „2“ reservierte letzte
Zeile geschrieben. Die vierte Zeile ermittelt dann die gesamte Rendite in Prozent. Dabei wird
eine analoge Fallentscheidung verwendet. Folgende Formeln aus Schritt 4 sind hier somit
implementiert:
Für den Sonderfall, dass nur eine Handelseinheit vorliegt (siehe Schritt 5), ist die Berechnung
des Endkapitals sowie der gesamten Rendite anhand von dieser Aktionsabfrage nicht möglich.
Diese Einschränkung entsteht, weil die letzte Aktionsabfrage mindestens 2 Handelseinheiten für
die JOIN-Verknüpfungen benötigt.
CD
Nr
1
1
B
oder
2
2
A (Endergebnis)
CD
Nr
0
1
B
2
2
A (Endergebnis)
Für diesen Fall wird dann das initialisierte Handelsergebnis in der ersten Aktionsabfrage als
Endergebnis übertragen:
1 UPDATE SBT AS A INNER JOIN SBT AS B ON A.NR-1=B.NR
2 SET
A.acmR=B.acmR, A.acmP=B.acmP
3 WHERE
A.CD=2 AND A.NR=2;
155
8. Bewertung von Handelsstrategien
Mit dieser Lösung ist der im Berechnungsschritt 5 erläuterte Sonderfall anhand von
initialisierten Werten berücksichtigt:
Die Ergebnisse der vorausgegangenen Berechnungen (die temporäre Tabelle SBT) werden für
die Anzeige in die Tabelle TstrBuilderShow hinzugefügt:
1 INSERT INTO TstrBuilderShow(Info) VALUES(getSbInfo());
1 INSERT INTO TstrBuilderShow( Info, BuyDate, BuyClose, SellDate, SellClose, P, acmP)
2 SELECT Iif(SBT.CD=0, NULL, Iif(SBT.CD=1,' C D', '
C D Due')),
3 SBT.BuyDate, SBT.BuyClose, SBT.SellDate, SBT.SellClose, SBT.P,
4
5 FROM
Iif(SBT.CD=1,NULL, SBT.acmP)
SBT ;
Dabei liefert die Funktion getSbInfo() in der ersten Aktionsabfrage das Symbol des
Analysewertpapiers sowie die Strategieinformation. Dabei werden die Handelseinheiten aus der
Handelspausen-Strategie mit „CD“ in der Spalte Info gekennzeichnet. Schließlich wird das
Endergebnis mit „CD Due“ gekennzeichnet.
Die zwei Iif-Funktionen in der zweiten Zeile realisieren folgende Fallentscheidung:
Die Ergebnisse aus der Tabelle TstrBuilderShow werden beispielsweise wie folgt auf der
Benutzeroberfläche angezeigt:
Rendite aus jeweiliger
Handelseineheit in Prozent
Analysewertpapier und
Strategieinformation
Kumulative
Rendite
in Prozent
Aktive-Markt-Strategie→
Handelspausen-Strategie→
Gesamte Rendite am
Laufzeitende der
Handelspausen-Strategie
Optionale kombinierbare Handelspausen-Strategien
Abbildung 8.2 Anzeige der Rendite von kombinierter Strategien mit Investition in Handelspausen
156
8. Bewertung von Handelsstrategien
8.3 Bestehende Fehlermöglichkeit
Für die Berechnung der rekursiven Formeln für technische Indikatoren hat Christian Hübel im
Rahmen seiner Arbeit (TInTo-Version-2007) eine umgehende Methode verwendet, da die von
Access 2003 unterstützte Sprache SQL-92 eine rekursive Formulierung von Abfragen nicht
unterstützt. Dieser Lösungsansatz wurde weiterhin in allen folgenden TInTo Aktualisierungen,
auch in dieser vorliegenden Arbeit, verwendet. Im Rahmen dieser Diplomarbeit ist eine
potenzielle Fehlermöglichkeit dieses Lösungsansatzes identifiziert worden. Auf Grund der
geplanten Portierung von TInTo in Oracle ist jedoch entschieden worden, den Aufwand für eine
Lösungskorrektur auf Basis von MS-Access nicht mehr zu betreiben. Im Folgenden werden die
Fehlerursachen, Auswirkungen auf die ermittelten Berechnungsergebnisse sowie eine
Korrekturmöglichkeit beschrieben.
Folgende drei Berechnungen in TInTo erfordern eine rekursive Formulierung der Abfragen, d.h.,
für die Berechnung eines Wertes einer Formel zum aktuellen Zeitpunkt wird mindestens ein
schon bereits berechneter Wert derselben Formel aus einem vergangenen Zeitpunkt benötigt.
• Der MACD Indikator
Rekursiv
Wobei t: Fortlaufender Zeitpunkt, Ewn(t): Gewichtungsfaktor
n, n1, n2 : Eingabeperiode, n1 < n2
• Der ADL Indikator
Rekursiv
Wobei t: Fortlaufender Zeitpunkt, CLV(t): Closing-Location-Value auf Zeitpunkt t
• Kumulative Renditeberechnung
Rekursiv
Wobei h: Fortlaufende Nummer, Rh: Rendite aus h-ter Handelseinheit
Solch rekursive Berechnungen sind in TInTo durch die UPDATE-Anweisung implementiert. Als
Beispiel dient hier eine EMA-Berechnung für den MACD:
UPDATE chInd AS A INNER JOIN chInd AS B ON A.n=B.n-1
SET
A.v1= (A.Close-B.v1)*2/(12+1)+B.v1
...
Dabei ist bislang angenommen worden, dass die UPDATE-Anweisung sukzessiv Zeile für Zeile
arbeitet. Damit würde der Zugriff auf den vorherigen EMA-Wert (B.v1) über die JOINVerknüpfung den bereits berechneten EMA-Wert (B.v1) für die Berechnung des aktuellen EMAWertes (A.v1) liefern:
157
8. Bewertung von Handelsstrategien
n
v1
n
v1
26
XX
26
XX
27
Initialisierung
Join
Update
n
v1
26
XX
27
XX
28
Join
Update
n
v1
26
XX
27
XX
28
XX
Join
29
..
Update
Abbildung 8.3 Sukzessive Aktualisierung
Dabei sind in den Beispieltabellen schon berechnete Werte in Blau verdeutlicht. Es ist allerdings
festzustellen, dass die UPDATE-Anweisung von SQL-92 in Access 2003 bei der Verarbeitung
größerer Datenmengen oder bei aufwendigeren Berechnungen beispielsweise folgendermaßen
parallel arbeitet:
n
v1
26
XX
27
Join
Update
n
v1
26
XX
27
XX
Join
n
v1
n
v1
26
XX
26
XX
27
XX
27
XX
28
XX
28
XX
29
XX
28
28
29
29
29
30
30
30
..
..
..
737
..
Update
..
..
737
..
738
738
739
739
739
..
..
..
Update
30
..
..
Join
737
738
..
Join
..
..
..
Update
..
..
..
Join
Update
737
738
XX
Join
..
739
..
..
Parallele Aktualisierung
..
..
..
Update
Parallele Aktualisierung
Abbildung 8.4 Parallele Aktualisierung
Ab der dritte Tabelle in der Abbildung 8.4 sind parallele Aktualisierungen an zwei Stellen
verdeutlicht. Die EMA-Berechnung für den MACD der Aktie Microsoft Corp. über 3 Jahre
zeigt beispielsweise einen Fall paralleler Aktualisierung. Folgende Tabelle beinhaltet einen
Ausschnitt der Ergebnisse aus der EMA-Berechnung:
158
8. Bewertung von Handelsstrategien
UPDATE chInd AS A INNER JOIN chInd AS B ON A.n=B.n-1
SET
A.v1= (A.Close-B.v1)*2/(12+1)+B.v1
...
n
Close
v1
734
8273,58
8724,49
735
8424,75
8678,38
(8424,75 - 8724,49) * 2/13 + 8724,49 = 8678,38
736
7997,28
8573,59
(7997,28 - 8678,38) * 2/13 + 8678,38 = 8573,59
737
7552,29
1161,89
Parallele Berechnung
(7552,29 - 0) * 2/13 + 0 = 1161,89
Sukzessive Berechnung
(7552,29 - 8573,59) * 2/13 + 8573,59 = 8416,472
Wenn die Aktualisierung (Update) sukzessiv zeilenweise erfolgt wäre, hätte sich als EMA-Wert
in der Spalte v1 zum Zeitpunkt 737 ein Wert von 8416,472 ergeben. In der Ergebnistabelle ist
allerdings zu sehen, dass ein Wert von 1161,89 ermittelt worden ist. Diese Abweichung rührt
daher, dass Access in der Zeile mit dem Zeitpunkt 737 einen zusätzlichen Prozess zur
Aktualisierung gestartet hat und es keinen bereits berechneten EMA-Wert des Vortages zum
Zeitpunkt 736 gab. Daher ist der Nullwert für den EMA-Wert des Vortags verwendet worden
und im Ergebnis ergab sich ein falscher EMA-Wert von 1161,89.
Die Abbildung 8.5 zeigt, dass rekursive Formeln mittels UPDATE-Anweisung von SQL-92 in
Access 2003 sowohl richtig als auch fehlerhaft berechnet werden können. Als Referenz dienen
hier die Charts aus ChartDirector. Das zweite von TInTo berechnete Chart TInTo Fehlerfrei
weist einen identischen Verlauf zum Referenzchart auf. Für diesen Fall ist festzustellen, dass die
rekursive Berechnung mittels UPDATE-Anweisung zeilenweise sukzessiv erfolgt ist. Im Fall
von parallelen Aktualisierungen zeigt das Chart wie im Fall von TInTo Fehlerhaft abnormale
drastische Verlaufsänderung wie beispielsweise im November 2008. Die Abweichung des
Chartverlaufes im Vergleich zu dem Bild des ChartDirector ist markiert und deutlich erkennbar.
ChartDirector
TInTo Fehlerfrei
ChartDirector
TInTo Fehlerhaft
Berechnungsfehler ist aufgetreten.
Abbildung 8.5 Rekursive Berechnung mittels UPDATE-Anweisung, MSFT Corp.
159
8. Bewertung von Handelsstrategien
Als Ursache für diese beobachteten Abweichungen wird vermutet, dass Access 2003 parallele
Aktualisierungen nur bei großen Datenmengen oder aufwendigen Berechnungen durchführt. In
der Praxis sind solche Fehlberechnungen bei der Berechnungen von MACD sowie bei
Berechnungen von ADL über Zeiträume von über 3 Jahren (ca. 750 Datensätze) gefunden
worden. Bei der Berechnungen von ADL unter 3 Jahren sowie Renditeberechnungen, die
vergleichsweise wenige Datensätze und Berechnungsaufwand benötigen, sind bei erneuten Tests
keine Fehlberechnungen gefunden worden. Dennoch besteht die Möglichkeit potenzieller
Fehler, da alle diese Berechnungen dieselbe Methode für rekursive Formeln verwenden.
Zur Abstellung dieses Problems in Access muss eine andere umgehende Lösung für rekursive
Berechnungen gefunden werden. Eine sichere Variante wäre es, die UPDATE-Anweisung
mittels VBA erneut für jeden Datensatz nach und nach aufzurufen. Diese Lösung liefert sicher
ein richtiges Endergebnis, wäre aber in einer Datenbanklösung nicht gewünscht , da zum
Beispiel bei der Berechnung von MACD über 5 Jahren mindestens eine Anzahl von 2500 (= 250
(Datensätze pro Jahr) *5 (Zeitraum) *2 (Anzahl der benötigten EMA-Berechnungen))
UPDATE-Anweisungen wiederholt durchgeführt werden müssten.
Weitere alternative Lösungswege sind nicht untersucht worden, da wie eingangs erwähnt die
von Oracle unterstützte SQL schon komfortable Möglichkeiten für die Formulierung rekursiver
Abfragen bietet.
8.4 Performanzanalyse
Im sechsten Kapitel wurde die Performanzanalyse detailliert für jeden angewandten
Optimierungsschritt der Signalberechnung dargestellt. In diesem Abschnitt 8.4.1 wird nunmehr
die gesamte allgemeine Berechnungsdauer zur Bewertung einer Strategie untersucht. Diese
gesamte Berechnung beinhaltet neben der Renditeberechnung auch die zu Grunde liegende
Indikator- und Signalberechnung.
Weiterhin wird im folgenden Abschnitt 8.4.2 die Profitabilität der im TInTo-StrategyBuilder
angebotenen Handelsstrategien unter Anwendung der vorgestellten Renditeberechnung getestet.
Dabei wurde der im vorangegangen Kapitel erwähnte potenzielle Berechnungsfehler bei
rekursiven Formeln manuell überprüft.
8.4.1 Berechnungsdauer
Um die allgemeine Recheneffizienz zu bewerten, sind 11 verschiedene Handelsstrategien mit
allgemein gültigen Eingabeparametern als Stichproben verwendet worden. Die verwendeten
Strategien sind dabei allgemein für mittelfristigen Handel (Anlagedauer ca. 2-3 Monate)
angepasst . Als Analysewertpapier wurde der Dax (Xetra: ^GDAXI) verwendet. Als
Testinstrument diente Microsoft XP SP3 auf Intel Pentium M Prozessor (1,60 GHz, 1,25GB)
Hardware und über DSL 16MBit an das Internet angebunden.
Gemessen wurde die Laufzeit ab dem Zeitpunkt der Betätigung des „Trade“ Button durch den
Anwender bis zur Anzeige der Ergebnisse auf der Benutzeroberfläche. Dabei laufen grob
folgende Berechnungen hintereinander durch:
•
•
•
•
•
Einlesen der Eingabeparameter
Aggregieren der benötigten Datensätze
Berechnen der Indikator/Signallinie
Ermitteln der Handelssignale
Berechnen der Rendite
160
8. Bewertung von Handelsstrategien
• Anzeigen der Ergebnisse
Handelsstrategien lassen sich grob wie in den vorangegangene Kapiteln erläutert in folgende
drei Komplexitätsklassen unterteilen:
• Elementare Strategie mit einem Indikator
• Erweiterte Strategie auf Basis mehrerer Indikatoren
(beide in Kombination als „Aktive-Markt-Strategie“ bezeichnet)
• Kombinierte Strategie mit der Investition in den Handelspausen
Der folgender Graph zeigt die durchschnittliche Berechnungsdauer unterschiedlicher
Strategiekomplexitäten über verschiedenen Analysezeiträume:
Elementare Strategie
Erweiterte Strategie
Kombinierte Strategie mit Investition in Handelspausen
Stichproben
7.869
Elementare Strategien
8.000
ROC (12/-5/5)
RSI (14/30/70)
CCI (20/-120/120)
7.222
6.400
SMAC (50/130/100/0)
SSTOCCP (21/3/3/0/0/20/80)
MACDCP (12/26/9/0/0/20/80)
MACD+CMF
4.800
4.820
3.296
4.510
Kombinierte Strategien mit
Investition in
Handelspausen
RSI+Bonds (14/30/70)
SMAC+Bonds (50/130/100/0)
RSI+CD (14/30/70/4%)
SMAC+CD (50/130/100/0/4%)
0
0
734
2.958
1.507
593
3.200
2.925
1.757
Berechnungszeit (ms)
5.328
Erweiterte Strategien
1.600
1.749
0
864
1 322
Jahr
0 1 Jahr
2 Jahre
0
3 Jahre
4 Jahre
5 Jahre
Analysezeitraum
Abbildung 8.6 Durchschnittliche Berechnungsdauer unterschiedlicher Strategiekomplexität
( Testbedingungen und Basisdaten18 )
Die Berechnungsdauer nimmt für längere Analysezeiträume überproportional zu. Sie beträgt
unter 1 Sekunde für einen Analysezeitraum von 1 Jahr und zwischen 4 und 8 Sekunden für
einen Anylsezeitraum von 5 Jahren.
Wie erwartet ist die benötigte Berechnungsdauer umso länger, je höher die Strategiekomplexität
ist. Die Berechnungsdauer für elementare Strategien ist messbar kürzer im Vergleich zu
Strategien anderer Komplexitätsklassen. Elementare Strategien basieren auf einer starren
18 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-A
aufgeführt.
161
8. Bewertung von Handelsstrategien
Signallinie, welche über den ganzen Analysezeitraum konstant bleibt, und erfordern daher keine
weiteren Berechnungen für diese Signallinie. In Gegensatz dazu muss für die erweiterten
Strategien zusätzlich eine gleitende Signallinie ermittelt werden. Erweiterte Strategien mit
mehreren Indikatoren benötigen darüber hinaus auch noch die Berechnung weiterer Indikatoren
wie im Beispiel MACD+CMF. Diese steigende Komplexität trägt wesentlich zur Erhöhung der
benötigten Berechnungsdauer bei.
Für die Bewertung einer kombinierten Strategie mit der Investition in den Handelspausen sind
wiederum zusätzliche Berechnungen von Signalen sowie der Rendite der alternativen
Investitionen in Handelspausen erforderlich. Der resultierende Unterschied in der
Berechnungsdauer im Vergleich zu der Berechnungsdauer der Aktiven-Markt-Strategie ist
jedoch nicht wesentlich.
Es ist daher zu vermuten, dass die Signalberechnungen sowie die Renditeberechnungen für die
alternativen Investitionen in den Handelspausen sehr effizient vorgehen und im Vergleich zu der
Berechnung der Indikatoren und der Signallinie einen geringeren Aufwand erfordern.
Das folgende Diagramm zeigt den Anteil der Berechnungsdauer des Indikators und
gegebenenfalls dessen Signallinie im Vergleich zur gesamten Berechnungsdauer der
Strategiebewertung über unterschiedliche Analysezeiträume. Getestet wurden die zwei
Strategien RSI und SMAC.
Indikator Berechnung (RSI)
Gesamte Berechnung (Strategie: RSI)
Indikator- und Signallinieberechnung (Strategie: SMAC)
Gesamte Berechnung (Strategie: SMAC)
15.000
9.000
6.000
312
218
1 Jahr
828
734
2 Jahre
1.687
2.875
4.390
3.000
1.609
3 Jahre
0
2.765
4 Jahre
Berechnungszeit (ms)
12.000
4.281
5 Jahre
Analysezeitraum
Abbildung 8.7 Berechnungsdauer von Teilberechnung verglichen mit gesamter Berechnungsdauer
( Testbedingungen und Basisdaten19 )
Aus dieser Messung ist ersichtlich, dass die Berechnung des Indikators und der Signallinie den
hauptsächlichen Berechnungsaufwand verursacht. Der Unterschied zwischen dieser
Teilberechnung für den Indikator und die Signallinie und der gesamten Berechnungsdauer ist
sehr gering und bleibt auch für längere Analysezeiträumen unwesentlich.
19 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-A
aufgeführt.
162
8. Bewertung von Handelsstrategien
Dieser vergleichbar große Aufwand für die Indikator- und die Signallinienberechnung beruht
darauf, dass die Anzahl der zu betrachtenden Datensätze durch die Verknüpfung der Daten für
die gleitende Durchschnittsbildung je nach Berechnungsperiode um ein Mehrfaches expandiert.
Im Vergleich dazu benötigt die Berechnung aller Handelssignale lediglich eine Verknüpfung für
den Vergleich zwischen dem aktuellen und dem vorherigen Tag, um den Signalpunkt
(Kreuzungspunkt) zu verfolgen. Weitere Signalberechnungen verarbeiten noch kleinere
Datenmengen, da die Datensätze dabei erst nur auf Handelstage und anschließend auf für die
Strategiebewertung relevante Handelstage gefiltert werden. Ein zusätzlicher Gewinn an
Effizienz bei den Signalberechnungen ist durch die im Kapitel 6 vorgestellten
Optimierungsschritte erreicht worden. Die abschließend folgende Renditeberechnung wird dann
schließlich nur auf Basis der ausgefilterten minimalen Datensätze durchgeführt.
Die folgende Darstellung zeigt die Untersuchungsergebnisse zur durchschnittlichen gesamten
Berechnungsdauer und deren Standardabweichung für 11 verschiedene Strategien über
verschiedene Analysezeiträume:
Durschschnitt
Standard Abweichung
6.718
Strategie Berechnungsdauer
(Stichproben) über 5 Jahren (ms)
7.000
5.600
4.200
4.569
2.740
1.423
0
571
2.800
3.069
1.877
1.400
988
00
399
1 Jahr
1 Jahr
2 Jahre
3 Jahre
0
4 Jahre
5 Jahre
Berechnungszeit (ms)
4.497
ROC
125
RSI
4390
CCI
9015
SMAC
11296
SSTOCCP
12593
MACDCP
265
MACDCP+CMF
4734
RSI+OP
4390
SMAC+OP
1134
RSI+CD
4400
SMAC+CD
11343
Analysezeitraum
Abbildung 8.8 Durchschnittliche Berechnungsdauer und Standard Abweichung
( Testbedingungen und Basisdaten20 )
Die durchschnittliche Berechnungsdauer nimmt für längere Analysezeiträume überproportional
zu und erreicht bis über 6 Sekunden für den Analysezeitraum von 5 Jahren. Es ist dabei
auffällig, dass die Berechnungsdauer verschiedener Strategien sich wesentlich unterscheidet.
Die Standardabweichung ist hoch in Relation zum Durchschnitt und nimmt für längere
Analysezeiträume ebenfalls überproportional zu. Die elementare Strategie ROC benötigt die
kürzeste Berechnungsdauer mit 125 ms für den Analysezeitraum über 5 Jahre. Die erweiterte
Strategie SSTOCP hingegen braucht über 12 Sekunden für den gleiche Analysezeitraum. Die
20 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-A
aufgeführt.
163
8. Bewertung von Handelsstrategien
MACDCP Berechnung benötigt wiederum eine relativ kurze Rechenzeit, da die erforderliche
rekursive Berechnung mittels Aktionsabfrage (UPDATE-Anweisungen) durchgeführt wird.
Ist ein Anwender bereit, 12 Sekunden für die Bewertung einer Handelsstrategie zu warten?
Um die Berechnungen zu beschleunigen wäre zum einen die Erhöhung der Hardwareleistung
sicher eine mögliche Lösung. Die im Test verwendete Hardware aus Pentium M mit 1,6 GHzTaktung ist für komplexe Analysen sicher nicht mehr als state-of-the-art anzunehmen. Zum
anderen sind weitere Optimierungen an den aufwändigsten Teilberechnungen für die
Indikatoren sowie die Signallinien möglich. Vorschläge hierfür sind am Ende von Kapitel 6
aufgeführt. Eine interaktive Anzeige der geschätzten Rechendauer wäre für den Anwender,
insbesondere bei aufwändigen erweiterten oder kombinierten Handelsstrategien, eine
wünschenswerte Ergänzung.
8.4.2 Profitabilitätstest von Handelsstrategien
In diesem Abschnitt wird die Profitabilität der in dieser Arbeit implementierten Strategien
beispielhaft vorgestellt. Um die Testergebnisse allgemein vergleichbar und abschätzbar zu
halten, ist der am Markt gehandelte Deutsche Aktienindex Dax als Analysewertpapier
verwendet worden. Dieser Index spiegelt den Kursverlauf der 30 wichtigsten deutschen
Unternehmen wider und dient als Leitindex für den deutschen Aktienmarkt. Da der Dax als
Index einen allgemein abgerundeten Kursverlauf aufweist, ist ein weiterer Rentabilitätstest der
Handelsstrategien mit Aktien eines einzelnen Unternehmens durchgeführt worden. Als Beispiel
hierfür wurde die Aktie der Firma Microsoft, Anbieter des DBMS Access, verwendet. Bezüglich
dieser Auswahl sei allgemein angemerkt, dass bewusst Analysewertpapiere mit einem für den
Analysezeitraum typischen Kursverlauf ausgewählt wurden. Aktien mit einem
außergewöhnlichen Wertzuwachs wie zum Beispiel der Firma Apple oder mit im Jahr 2008
krisenfesten Verlauf wie im Beispiel der Firma McDonalds sind für einen allgemein gültigen
Strategietest als nicht genügend repräsentativ eingeschätzt worden und wurden nicht
ausgewählt. Als Testsoftware wurde das im Rahmen dieser Arbeit entwickelte Modul TInToStrategyBuilder verwendet.
Beispiel: DAX (XETRA:^GDAXI )
Das gewählte Testpapier des Index DAX weist für die vergangenen 5 Jahre einen relativ stetig
ansteigenden Kursverlauf auf. Typisch für diesen Zeitraum sind die Kursgewinne bis in die
Jahre 2006 und 2007 sowie die rasanten Kursstürze ab Mitte des Jahres 2008.
Das folgende Diagramm zeigt die kumulative Rendite in Prozent für die ausgewählten
Handelsstrategien über fünf Jahre von 2004 bis einschließlich 2008:
164
8. Bewertung von Handelsstrategien
MACDCP
SMAC
CCI
RSI
AOS
80
68
60
40
33
40
14
34
20
2004
2005
Kumulative Rendite (%)
68 71
59
ROC
0
2006
2007
2008
Jahr
Strategie
Anzahl der
Anzahl der Max. Gewinn Max. Verlust Höchster Punkt von Gesamte
(Eingabeparametern) Gewinnhandel Verlusthandel pro Handel pro Handel kumulativer Rendite Rendite
(%)
(%)
(%)
(%)
MACDCP
(12/26/9/0/0/0/0)
11
1
7,56
-25,1
56,55
17,25
SMAC(50/130/100/0)
2
0
32,49
-
68,22
68,22
CCI(20/-120/120)
18
4
6,49
-18,54
71,07
34,37
RSI(14/30/70)
11
3
9,9
-28,96
60,26
9,8
AOS(50/0/0)
7
5
14,8
-7,43
63,57
33,6
ROC(12/-5/5)
11
5
18,91
-21,27
78,29
33,81
Abbildung 8.9 Strategie Analyse mit dem Analysewertpapier DAX
( Testbedingungen und Basisdaten21 )
Dabei ist zu erkennen, dass von 2004 bis 2007 die kumulative Rendite aller Teststrategien
allmählich zunimmt. Bis zum Jahr 2007 erreichen alle Handelsstrategien einen kumulativen
Gewinn zwischen 60% und 70 % nach vierjährigem Handel. Im Vergleich ist dabei die
Performanz der Strategien CCI und ROC überdurchschnittlich gut. Nach dem höchsten Punkt
der kumulativen Rendite, welcher in 2007 erreicht ist, führen die Kursverluste des DAX im Jahr
2008 auch zu drastischen Handelsverlusten der verglichenen Strategien. Die teils
rekordverdächtigen Verluste bis zu -20% in 2008 sind in Tabelle 8.9 einzeln pro Strategie
aufgeschlüsselt dargestellt.
Eine wichtige Erkenntnis aus dem Krisenjahr 2008 und eine mögliche Verbesserungsidee für die
weitere Entwicklung von Handelsstrategien wäre es dann, als Anleger eine Festlegung von
Risikogrenzen pro Handel vorzugeben. Mit einer Risikogrenze von 5% pro Handel hätten
21 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-B
aufgeführt.
165
8. Bewertung von Handelsstrategien
beispielswese alle Teststrategien mindestens um die 50% kumulative Rendite über 5 Jahre, trotz
der Kursabstürze im Jahr 2008, geliefert.
Die Strategie SMAC hat in den Analysezeitraum fallenden Märkten ihre Stärke als eine
Trendfolgeindikator-basierende Strategie ausspielen können. Am Ende des Analysezeitraumes
Ende 2008 behält diese Strategie weiterhin ihren höchsten Punkt und erleidet keinen Verlust an
kumulativer Rendite. Alle anderen Teststrategien haben Oszillatoreigenschaften, welche im
überverkauften Markt, im Beispiel im Jahr 2008, Kaufsignale liefern. Dabei wird eine baldige
Trendumkehr prognostiziert und vorausgesetzt, was aber im Jahr 2008 nicht eingetreten ist. Die
bärische Marktsituation bei überverkauftem Markt blieb weiter bestehen. Die Strategie SMA
dagegen ist trendfolgend und liefert tendenziell in bärischer Marktsituation keine Kaufsignale.
Darüber hinaus sind mittels der Eingabefunktion (Trade Crossover Buy) im TInToStrategyBuilder Fehlsignale in trendlosen Märkten im Wesentlichen eliminiert. Als weitere
Besonderheit der Strategie SMAC gilt, dass diese wenige Handelssignale liefert und im
Analysezeitraum zu keinem Verlusthandel geführt hat.
Das folgende Diagramm zeigt die kumulative Rendite für die Strategie SMAC sowie für zwei
weitere kombinierte Strategien von SMAC mit alternativen Investitionen in den Handelspausen.
Als Analysezeitraum wurden wieder die Jahre 2004 bis 2008 verwendet:
100
SMAC (50/130/100/0)
SMAC + Opposite Product
SMAC + Cash Deposit (4%)
82
33
3326
00
33
33
0
0 -5
75
68
50
45
25
14
0
01.01.04
07.12.04
29.06.06
Kumulative Rendite (%)
68
68
0
100
-25
11.10.06
25.09.07
31.12.08
Handelsdatum
Abbildung 8.10 SMAC und ihre kombinierte Strategien mit Investition in Handelspause
( Testbedingungen und Basisdaten22 )
Die Strategie SMAC liefert wenige Signale dem längerfristigem Trend folgend. Im
Analysezeitraum über 5 Jahre erzeugt diese Strategie lediglich 4 Handelssignale. Daher
resultiert SMAC in besonders langen Handelspausen, wenn wie in 2004 und 2008 der Markt
sich über längere Perioden seitwärts bewegt bzw. fällt.
Durch alternative Investitionen in festverzinsliche Produkte mit einem Zinssatz von 4% p.a
während der Handelspausen erzielt die Strategie SMAC+Cash Deposit eine Rendite von 82%
22 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-B
aufgeführt.
166
8. Bewertung von Handelsstrategien
über 5 Jahre. Mit der kombinierten Investition in Handelspausen in ein Produkt, dessen Kurs
den DAX-Kurs gegenläufig abbildet, erzielt die Strategie SMAC+Opposite Product bis zu 100%
Rendite. Dabei gilt zu beachten, dass diese Strategie besonders hohen Gewinn im fallenden
Markt in 2008 geliefert hat.
Beispiel: Microsoft Corp. (MSFT)
Im Vergleich zu einem Index wie dem DAX entwickelt sich der Kurs von Microsoft volatiler. In
den Jahren 2004 bis 2006 weist der Kurs eine seitwärts Tendenz auf, gefolgt von einer positiven
Entwicklung in 2007 und einem stark negativen Verlauf in 2008. Das folgende Diagramm zeigt
die kumulative Rendite in Prozent für die ausgewählten Handelsstrategien über die fünf Jahre
von 2004 bis 2008:
MACDCP
SMAC
CCI
RSI
AOS
SSTOCP
90
81
52
54
40
31
23
12
36
37
27
4
18
-3
2004
0
2005
Kumulative Rendite (%)
72
-18
2006
2007
2008
Jahr
Anzahl der
Anzahl der Max. Gewinn Max. Verlust Höchster Punkt von Gesamte
Gewinnhandel Verlusthandel pro Handel pro Handel kumulativer Rendite Rendite
(%)
(%)
(%)
(%)
MACDCP
(12/26/9/0/0/-0,3/0,3)
5
2
17,08
-29,76
81,46
27,44
SMAC(12/26/0,2/0)
12
6
24,18
-6,37
55,87
36,7
CCI(20/-180/180)
9
1
9,51
-25,51
44,8
7,85
RSI(21/30/70)
7
3
12,7
-30,81
36,57
-5,52
AOS(50/0/0)
14
6
25,68
-11,38
47,81
35,1
SSTOCCP
(12/-5/5/0/0/10/90)
6
3
30,02
-31,65
41,74
-3,11
Abbildung 8.11 Strategie Analyse mit dem Testwertpapier MSFT ( Testbedingungen und Basisdaten23)
23 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-C
aufgeführt.
167
8. Bewertung von Handelsstrategien
Die mit den verschiedenen Strategien über den gesamten Analysezeitraum erzielten Renditen
sind durchwachsen. Mit der positiven Kursentwicklung im Jahr 2007 erzielen alle Strategien
auch positive Ergebnisse mit sehr hohen Gewinnraten. Im Gegensatz dazu machen im
Krisenjahr 2008 alle Strategien wiederum Verluste. Die Verlustrate pro Handel liegt dabei
zwischen -6 % bis -32%. Es ist wieder feststellbar, dass eine Festlegung von Risikogrenzen die
gesamte Rendite im Analysezeitraum deutlich erhöhen würde. Auch beweist die Strategie
SMAC wieder ihre trendfolgende und verlustmindernde Fähigkeit im fallenden Markt in 2008.
Im Ergebnis liefert SMAC eine gesamte Rendite von 37% über 5 Jahre. Eine weitere auffällige
Strategie ist die MACDCP, welche eine Rendite von 81% über die 4 Jahre von 2004 bis 2007
erzielt hat. Da die MACDCP mit ihrer Oszillatoreigenschaft auf schwankende und
trendschwache Kursverläufe sehr schnell reagieren kann, steigt ihr Gewinn bis 2007 deutlich
stärker als bei der Strategie SMAC.
Das folgende Diagramm zeigt die Entwicklung der kumulativen Rendite der Strategie
MACDCP und ihrer kombinierten Strategien mit alternativen Investitionen in den
Handelspausen für die letzten fünf Jahre von 2004 bis einschließlich 2008:
MACDCP (12/26/9/0/0/-0,3/0,3)
MACDCP + Opposite Product
MACDCP + Cash Deposit (4%)
199
200
116
98
103
110
81
49
0
9
0
0
12
2004
25
12
22
10
32
10
2005
23
100
83
75
22
150
40
23
55
40
81
55
50
Kumulative Rendite (%)
153
40
0
2006
2007
2008
Jahr
Abbildung 8.12 MACDCP und ihre kombinierte Strategien mit alternativer Investition in Handelspausen
( Testbedingungen und Basisdaten24 )
Alle Strategien zeigen für die MSFT-Aktie positive Gewinnentwicklungen bis 2007 gefolgt von
einem stark negativen Verlauf in 2008. Die Strategie MACDCP bietet eine Rendite von 27%
über 5 Jahre. Durch alternative Investitionen in den Handelspausen war hier eine zusätzliche
Rendite zu erzielen. Die kombinierte Strategie MACDCP + Cash Deposit erreicht eine gesamte
Rendite von 40% während die Strategie MACDCP+Opposite Product eine Rendite von 110%
bis zum Ende des Analysezeitraumes erzielt. Die MACDCP + Opposite Product nutzt die
fallenden Kursphasen in 2006 und 2008 aus und erreicht fast 200% Rendite am Anfang 2008.
24 Die Testbedingungen sowie die Basisdaten für die Darstellung des Diagramms sind im Anhang 8-C
aufgeführt.
168
8. Bewertung von Handelsstrategien
Besonderes Potential zeigen die in dieser Arbeit entworfenen Handelsstrategien wie SMAC und
MACDCP sowie kombinierte Strategien mit Investition in Handelspause mit auffällig positiven
Handelsergebnissen.
Unter Verwendung des in den TInTo-StrategyBuilder implementierten Moduls zur
Renditeberechnung ist es möglich, die kumulative Rendite sowie die Gewinn- oder
Verlustentwicklung einer Strategie exakt zu verfolgen. Damit kann der Anwender eine geeignete
Handelsstrategie auswählen, Stärken und Schwächen der Strategie erkennen und weiter
analysieren sowie die Strategie durch Eingabefunktionen für Handelskriterien weiter verbessern.
Für die zukünftige Entwicklung der Strategiebewertung sollten darüber hinaus weitere
Funktionen in TInTo umgesetzt werden, welche zum Beispiel aus Kombinationen mehrere
Wertpapiere die erzielte Rendite zusammenfassend berechnen und die Ergebnisse graphisch
darstellen kann.
169
9
Zusammenfassung und Ausblick
Das Ziel dieser Arbeit bestand darin, Handelsstrategien für Wertpapiere basierend auf
technischen Indikatoren zu entwerfen und auf Profitabilität zu optimieren. Die so formulierten
Strategien sollten regelbasiert unter Verwendung von SQL Skripten implementiert und für
kürzest mögliche Berechnungszeiten optimiert werden. Die Implementierung sollte ebenfalls
über eine Funktion zur Profitabilitätsbewertung der gewählten Strategien verfügen.
Im Rahmen dieser Arbeit wurden mehrere profitable Handelsstrategien entwickelt, welche
sowohl aus einzelnen Indikatoren als auch aus Kombinationen von Indikatoren bestehen können
wie im Beispiel „MACDCP plus CMF (Moving Average Convergance Divergance Crossover
mit Chaikin Money Flow). Im Ergebnis ausführlicher Tests am Beispiel des „Deutschen
Aktienindex DAX“ über einen Zeitraum von 5 Jahren von 2004 bis 2008 wurde festgestellt,
dass die Strategie „SMAC(Simple Moving Average Crossover)“ in trendstarken Phasen
besonders profitabel ist. Einstiegskurse werden ebenso gut signalisiert wie Trendwechsel hin zu
einem wieder fallenden Markt mit der Möglichkeit zum rechtzeitigen Ausstieg. Für
trendschwache Phasen oder Seitwärtsphasen ist, nach vorgenommenen Tests die
Handelsstrategie „MACDCP“ am Erfolg versprechendsten. In der Beispielanalyse für den Kurs
der Aktie von „Microsoft Corp. (MSFT)“ für den Zeitraum von 2004 bis 2007 wurde ein
Handelsergebnis von 81% Rendite erzielt. In einer weiteren Kombination des aktiven
Wertpapierhandels mit einer alternativen Investition in Handelspausen sind weitere
Steigerungen der Gewinnmöglichkeiten erzielt worden. Für das Beispiel des Wertpapiers der
Aktie von „Microsoft Corp.“ beträgt die Gewinnsteigerung mit der Strategie „Combine with
Opposite Product“ gegenüber keiner Investition in Handelspausen 72 Prozentpunkte. „Opposite
Product“ ist in diesem Fall ein Derivatefonds, welcher einen invertierten Kursverlauf gegenüber
dem jeweiligen Aktienkurs aufweist.
Mit Blick auf die erforderlichen Berechnungszeiten für die Analyse der historischen
Wertpapierdaten sind in mehreren Optimierungsschritten erhebliche Effizienzsteigerungen
erzielt worden. Benötigte die Berechnung einer „CCI-basierten Strategie“ für die so genannte
„Naive Implementierung“ noch 3956 Sekunden für das Wertpapier Dow Jones Industrial
Average, so konnte die Rechenzeit durch die Implementierung „Materialisierter Sichten“ auf
251 Millisekunden verkürzt werden. Allerdings mussten einige Unzulänglichkeiten von SQL 92
171
9. Zusammenfassung und Ausblick
in MS Access umgangen werden, zum Beispiel die nicht als Funktion angebotenen rekursiven
Formeln sowie die nicht vorhandenen materialisierten Sichten. Beide Funktionalitäten werden
für die Implementierung und Profitabilitätsbewertung von Handelsstrategien benötigt und
mussten im Rahmen dieser Arbeit aufwändig simuliert werden. Dennoch kann die Eignung von
MS Access für die regelbasierte Implementierung generell bejaht werden.
Das im Ergebnis dieser Arbeit erstellte Modul TInTo-StrategyBuilder bietet dem Anwender
vielseitige Analysemöglichkeiten und kann sowohl für die Bewertung bestehender Strategien als
auch für Strategieentwurf verwendet werden. Ein ganz entscheidender Vorteil besteht dabei
darin, dass sich Strategien an historischen oder auch aktuellen Kursen prüfen lassen, ohne
eigentlich in die entsprechenden Papiere zu investieren. Dazu können Anwender den
Ertragswert aus dem Handel mit verschiedenen Wertpapieren für unterschiedliche Zeiträume
und unter Verwendung verschiedener Strategien berechnen lassen. Zur Auswahl stehen im
Modul StrategyBuilder sowohl elementare Strategien, welche auf jeweils nur einem technischen
Indikator basieren, als auch acht (8) erweiterte Strategien, welche jeweils durch weitere,
ebenfalls durch das Modul analysierte Handelskriterien unterstützt werden. Als besondere
Option sind mögliche Investitionen in Handelspausen in den StrategyBuilder integriert worden.
Wie eingangs erwähnt bieten diese Investitionen zusätzliche Renditemöglichkeiten in ansonsten
ungünstigen Marktverhältnissen. Um dem Anwender eine maximale Flexibilität in der Analyse
von Handelsstrategien zu bieten, wurden darüber hinaus sämtliche Indikatoren- und StrategienParameter sowohl mit sinnvollen Standardwerten voreingestellt als auch komplett
konfigurierbar gestaltet. Damit erhält der Anwender sowohl die Möglichkeit, Analysen anhand
dieser „Standard- Strategiewerte“ vorzunehmen als auch Tests mit verschiedenen eigenen
Parametern durchzuführen. Je nach Marktsituation, Wertpapier und persönlichen
Risikopräferenzen lassen sich damit optimale Renditen erzielen.
Die Rentabilitäten der so eingestellten Handelsstrategien können in dem eingebauten Formular
Trades untereinander verglichen und vom Anwender weiter analysiert werden. Schliesslich kann
die so überprüfte Handelsstrategie unter Berücksichtigung erkannter etwaiger Stärken und
Schwächen im realen Handel Verwendung finden.
Ausführliche Darstellungen finden sich in den verschiedenen Kapiteln dieser Arbeit entlang
folgender Themenschwerpunkte:
In Kapitel 1 wurden die Motivation und die Aufgabenstellung dieser Arbeit dargestellt sowie
die Gliederung der Kapitel und die Aufteilung der Themenschwerpunkte dargelegt. Ziel der zu
erstellenden Arbeit ist die Entwicklung profitabler Handelsstrategien auf Basis technischer
Indikatoren und eine effiziente regelbasierte Implementierung in TInTo.
Im darauf Folgenden Kapitel 2 wurden die theoretischen Grundlagen zu relationalen
Datenbanken, ein Standard welcher für TInTo Verwendung findet, beschrieben. In diesem
Zusammenhang wurde auch die Frage gestellt, ob relationale Datenbanken für die Verwaltung
komplexer Anwendungsobjekte geeignet sind und komfortabel genutzt werden können. Für die
zukünftig weiter ansteigende Komplexität von TInTo wäre Objektdatenbank ein denkbares
Datenbankmodell, wofür jedoch die noch fehlenden Standards zur Datenverwaltung als eine
Einschränkung noch zu beachten sind. Im Weiteren wurden in Kapitel 2 wesentliche
Eigenschaften der für die Implementierung von StrategyBuilder extensiv verwendeten
Datenbanksprache SQL kurz erläutert und die Möglichkeiten aber auch die Nachteile von
Sichtexpandierungen erwähnt. Eine Vorstellung der Grundfunktionen des Datenbank
Management Systems (Database Management System - DBMS) Microsoft Access und der
integrierten Programmsprache „VBA“ sowie ein kurzer Vergleich von MS Access mit anderen
DBMS schliessen das Kapitel ab.
172
9. Zusammenfassung und Ausblick
Eine Einführung in die Grundlagen der Wertpapieranalyse wurde in Kapitel 3 gegeben.
Verschiedene Analysemethoden wie die fundamentale Analyse, die Chartanalyse und die
Sentimentanlyse wurden beschrieben sowie deren vielfältige Umsetzungsmöglichkeiten in
TInTo vorgeschlagen. Im Detail wurden die technische Analyse und insbesondere die
vielfältigen technischen Indikatoren vorgestellt, welche in TInTo Verwendung finden.
Philosophische oder rationale Prämissen der technischen Analyse wurden erläutert vor dem
Hintergrund, dass auch die Analyse fundamentaler Daten und rationales Verhalten der
Marktteilnehmer Voraussetzungen für die Anwendbarkeit der technischen Analyse sind. Eine
Auswahl technischer Indikatoren mit ihren unterschiedlichen Eigenschaften wurden beispielhaft
präsentiert und besonders auf ihre verschiedenen Interpretationsmöglichkeiten, einschließlich
zahlreicher Charts, und Handelsempfehlungen hin untersucht.
In Kapitel 4 wurden die Entwürfe der in dieser Arbeit erstellten Handelsstrategien mit ihren
spezifischen Eigenschaften beispielhaft dargestellt. Neben elementaren Strategien, deren
Handelssignale auf den Handelsempfehlungen eines einzelnen technischen Indikators basieren,
wurden auch erweiterte Handelsstrategien unter Verwendung zusätzlicher Indikatoren
entworfen. Dabei wurde insbesondere Nachgewiesen, dass sich positiv ergänzende Indikatoren
zu einer Steigerung des Handelsergebnisses (Rendite) führen können. Detaillierte
Analyseergebnisse sowie die entsprechenden Berechnungsformeln wurden dargestellt und
Schritt für Schritt erläutert. Für den spezifischen Fall von Handelspausen wurden geeignete
Investitionen zur weiteren Renditesteigerung, zum Beispiel Investition in festverzinsliche
Papiere, identifiziert. Im Ergebnis wurde beispielhaft demonstriert, dass eine Strategie aus
Investition in den aktiven Markt kombiniert mit Investitionen in Handelspausen ein unter den
meisten Marktbedingungen attraktives Handelsergebnis (Rendite) liefert.
In Kapitel 5 wurde das bestehende System TInTo mit seinen grundlegenden Funktionen
vorgestellt. Im Detail wurden die an der Berechnungen der technischen Indikatoren
vorgenommenen Aktualisierungen beispielhaft erläutert. Für 14 der vorhandenen Indikatoren
wurden die Berechnungen auf den aktuellen Stand angepasst.
Die nachfolgende Implementierung der entworfenen elementaren Strategien wurde in Kapitel 6
beschrieben. Die in Kapitel 4 entworfene Handelslogik wurde regelbasiert modelliert und die zu
Grunde liegenden Annahmen für die Modellierung erläutert. Weiterhin wurden die
Berechnungen aller Handelsaktionen für die Strategiebewertung beschrieben, welche auf Grund
ihrer Abhängigkeit von mehreren Basisberechnungen von Indikatoren und Handelssignalen
durch mehrstufigen Schachtelungen von Sichtdefinitionen implementiert sind. Im Weiteren
wurden die vorgenommenen Optimierungsschritte, wie zum Bespiel Verbesserungen der
Effizienz der Indikatorberechnung, Aufteilung der Sichtdefinitionen, effektiver Einsatz von
Gruppierungen der Datensätze und die Materialisierung der Sichten im Detail beschrieben. Für
eine Teststrategie konnte im Ergebnis die Berechnungsdauer auf nur 251 Millisekunden
reduziert werden.
In Kapitel 7 wurde es beispielhaft dargestellt, wie erweiterte Strategien sowie kombinierte
Strategien mit Investition in Handelspausen regelbasiert modelliert und implementiert wurden.
Im Detail wurden die zusätzlich erforderlichen Berechnungen für zum Beispiel eine gleitende
Signallinie, für die Berücksichtigung zusätzlicher Handelskriterien oder zusätzlicher Indikatoren
erläutert. Weiterhin wurde die Signalberechnung der Handelspausen-Strategien beschrieben,
welche von Signalen der Aktiven-Markt-Strategie abgeleitet werden und die Berücksichtigung
von Sonderfällen notwendig machen.
173
9. Zusammenfassung und Ausblick
Die abschliessende Modellierung und Implementierung der Strategiebewertung (Profitabilität)
wurde in Kapitel 8 beschrieben. Die jeweils unterschiedlichen Implementierungswege für die
Bewertung der Aktiven-Markt-Strategie sowie der kombinierten Strategien mit der Investition
in Handelspausen sind beispielhaft vorgestellt. Im Detail wurden die Ergebnisse zweier
Optimierungsziele dieser Arbeit vorgestellt, einerseits die Handelsergebnisse der wesentlichen
in dieser Arbeit entwickelten Handelsstrategien und andererseits die Effizienzsteigerungen im
Laufe der verschiedenen regelbasierten Implementierungen. Dabei ist festgestellt worden, dass
die Berechnungsdauer für verschiedene Strategien sehr unterschiedlich ist und der wesentliche
Aufwand auf die Berechnungen der Indikatoren und gegebenenfalls der Signallinien entfällt.
Die Berechnung der Handelssignale sowie die Renditeberechnung konnten im Ergebnis der
vorgenommenen Optimierungen deutlich in ihrer Effizienz gesteigert werden. Auf noch
bestehende Fehlermöglichkeiten bei der Durchführung rekursiver Berechnungen ist
abschliessend hingewiesen worden, welche allerdings im Zuge der geplanten Portierung
aufgehoben werden können.
Zusammenfassend lässt sich feststellen, dass Handelsstrategien basierend auf technischen
Indikatoren jährliche Renditen im zweistelligen Prozentbereich realisieren können. Die hierfür
empfohlenen und in TInTo integrierten Indikatoren und Strategien lassen sich durch wählbare
Parameter in weiten Bereichen individuellen Anforderungen anpassen. Darüber hinaus lässt sich
ebenfalls feststellen, dass sich diese Handelsstrategien regelbasiert in MS Access
implementieren lassen. Einige eingangs erwähnte Funktionen sind in SQL 92 nicht verfügbar
und müssen simuliert werden. Im Ergebnis konnten jedoch Berechnungszeiten in einem für
Anwender durchaus akzeptablen Rahmen von wenigen Sekunden für komplexe Strategien und
längere Analysezeiträume realisiert werden.
In zukünftigen Weiterentwicklungen der implementierten Handelsstrategien können unter
Anderem die in Kapitel 8 vorgeschlagenen festen Risikogrenzen sowie die in Kapitel 4
erwähnte Strategie unter Verwendung adaptiver Divergenzanalyse weiter untersucht werden.
Mit Blick auf die technische Weiterentwicklung kann eine Portierung auf Oracle helfen, die in
Access notwendigen Simulationen der rekursiven Berechnungen und der materialisierten
Sichten zu überwinden sowie weitere Effizienzsteigerungen zu erzielen. Bei steigender
Komplexität der Anwendung kann gegebenenfalls eine objektorientierte Datenbank zur
Anwendung kommen. Aus Benutzersicht wären parallel ablaufende Bewertungen verschiedener
Strategieoptionen und für verschiedene Wertpapiere wünschenswert und könnten in einer
zukünftigen Version von TInTo umgesetzt werden.
Zur Aussagekraft technischer Analysen wurde an verschiedenen Stellen dieser Arbeit der
Hinweis gegeben, dass diese davon abhängig sind, dass historische und aktuelle
Wertpapierkurse die Entwicklung fundamentaler Daten widerspiegeln. Mit zunehmender
Popularität des computergestützten Wertpapierhandels ist gegebenenfalls zu befürchten, dass die
notwendige Analyse fundamentaler Daten in den Hintergrund gerät und die überwiegend
trendfolgenden Handelsentscheidungen mittels technischer Analyse zu extremen
Marktsituationen so genannten „Blasen“ führen können. Das Ziel eines automatischen
Handelssystems sollte deshalb kombiniert werden mit dem Ziel, in diesem System auch
ausgewählte Fundamentaldaten in die Bewertungen der Handelsstrategien mit einfliessen lassen
zu können.
174
Anhang
1- A: Begriffe
Im Folgenden werden wesentliche, in dieser Arbeit Verwendung findende Begriffe erläutert. Da
einige spezifische Begriffe in der Literatur oder in der Praxis nicht oder nicht eindeutig definiert
sind, werden diese in der Reihenfolge ihrer Verwendung in den folgenden Kapiteln hier
eingeführt:
Technische Indikatoren (Indikatoren) sind Instrumente der Wertpapieranalyse, welche eine
bestimmte Entwicklung eines Wertpapierkurses mittels mathematischer Berechnungen auf der
Basis von Kurs- und/oder Volumendaten anzeigen sollen. Diese Indikatoren werden in der Regel
graphisch in Charts dargestellt.
Trendfolger ist ein technischer Indikator, welcher die vorherrschende Trendrichtung
(Aufwärtstrend/Abwärtstrend/Seitwärtstrend) des Kursverlaufs aufzeigt, dies allerdings in der
Regel zeitlich verzögert, wenn sich der neue Trend bereits etabliert hat.
Oszillatoren sind technische Indikatoren, welche überkaufte oder überverkaufte
Marktsituationen anzeigen, woraus sich in der Regel baldige Trendwechsel prognostizieren
lassen.
Fortlaufende Zeitpunkte sind chronologisch nummerierte Handelstage für die
Wertpapieranalyse auf Basis voller Handelstage.
Eingabeperiode (EP) ist die vom Anwender gewählte Anzahl von Handelstagen für die
Berechnung eines Indikatorwertes. Die Verwendung dieses Wertes in der Berechnung richtet
sich nach der spezifischen jeweiligen Indikatordefinition.
Berechnungsperiode (BP) ist die definierte Anzahl der fortlaufenden Zeitpunkte (Handelstage)
für die Berechnung eines jeweiligen Indikatorwertes. Der Zusammenhang zwischen
Berechnungsperiode und Eingabeperiode ist abhängig von der jeweiligen Indikatordefinition.
SMA (Simple Moving Average) ist ein Trendfolger, welcher als Durchschnitt der,
typischerweise, Schlusskurse einer gegebenen Berechnungsperiode berechnet wird. Der SMA
lässt sich durch Verbinden berechneter Einzel-SMA-Werte beispielsweise wie folgt in Charts
darstellen:
3-Tage-SMA
(Berechnungsperiode: 3)
Durchschnitt der Schlusskurse aus
den Zeitpunkten 75-77
72
73
74
75 76
73
74
75
74
75
75
76
76
77
78
77
175
Fortlaufender Zeitpunkt
Anhang
Vollkauf/Vollverkauf ist Kauf/Verkauf von Wertpapieren mit dem gesamten zu investierenden
Kapitals.
Teilkauf/Teilverkauf ist Kauf/Verkauf mit einem Teil des zu investierenden Kapitals.
Relevante Handelssignale (Relevante Signale) sind Handelssignale, welche zur
Handelsaktionen führen, also für den Anleger relevant sind.
Signalpaar ist ein Paar aus einem Kaufsignal und dem dazugehörigen folgenden
Verkaufssignal.
Signalpartner ist fallweise entweder ein Kaufsignal zu einem nachfolgenden Verkaufssignal
bzw. ein Verkaufssignal zu einem vorangegangen Kaufsignal.
Handelseinheit ist eine Kaufaktion und die dazugehörige folgende Verkaufsaktion.
Starre Signallinie ist eine Hilfslinie für technische Indikatoren zur Generierung von
Handelssignalen. Starre Signallinien haben einen über fortlaufende Zeitpunkte hinweg
konstanten Wert.
Gleitende Signallinie ist eine Hilfslinie für technische Indikatoren zur Generierung von
Handelssignalen und werden mittels Durchschnittsberechnung (SMA) aus Schlusskursen oder
Indikatorwerten für jeden fortlaufenden Zeitpunkt ermittelt.
Indikatorlinie
Indikatorlinie
Starre Signallinie
Gleitende Signallinie
Verkauf
Verkauf
Kauf
Kauf
Kauf
Kauf
Fortlaufender Zeitpunkt
Fortlaufender Zeitpunkt
Analysezeitraum ist die Zeitspanne, für welche der Anwender die Kursentwicklung eines
Wertpapiers und die Rentabilität einer Handelsstrategie bewerten möchte.
Handelsstrategie sind Strategien für Investitionen, welche dem Anwender Kaufsignale und
Verkaufssignale liefern. Ziel ist in der Regel, eine maximale Rendite zu erzielen.
Elementare Strategie ist eine Handelsstrategie, welche basierend auf einem einzelnen
technischen Indikator und dessen starrer Signallinie Kaufsignale und Verkaufssignale liefert.
Erweiterte Strategie ist eine Handelsstrategie, welche basierend auf einem technischen
Indikator oder mehreren technischen Indikatoren, deren gleitenden Signallinien und/oder
weiteren Handelskriterien Kaufsignale und Verkaufssignale liefert.
Aktive-Markt-Strategie ist ein Oberbegriff für elementare Strategie und erweiterte Strategie
und bezeichnet jene Handelsstrategien, in welchen der Anleger aktiv über den Erwerb oder die
Veräußerung von Wertpapieren am Handel teilnimmt.
176
Anhang
Handelspausen-Strategie ist eine Investitionsoption, welche in den Handelspausen der
Aktiven-Markt-Strategie Anwendung finden kann. In der Regel investiert der Anleger in den
Handelspausen in alternative Anlagen wie Festgeld oder „parkt“ verfügbares Kapital zum
Beispiel auf einem verzinsten Verrechnungskonto.
Kombinierte Strategie mit Handelspausen ist eine zusammengesetzte Strategie aus der
Aktiven-Markt-Strategie und der Handelspausen-Strategie.
Aktive-Markt-Strategie
Elementare Strategie
Erweiterte Strategie
Indikatorlinie
+
Handelspausen-Strategie
→
Kombinierte Strategie
mit Investition in Handelspause
Signallinien
Verkauf
Kauf
Verkauf
Kauf
Verkauf
Kauf
Fortlaufender Zeitpunkt
Kauf
Verkauf
HP
Kauf
Verkauf
Kauf
HP
Kauf
Verkauf
Verkauf
Kauf
HP
kauf Verkauf
Verkauf
HP
: Analyse Zeitraum
: Aktive-Markt-Strategie
(HP: Handelspause)
kauf Verkauf
: Handelspausen-Strategie
: Kombinierte Strategie
mit Investition
in Handelspause
1-B: TInTo-StrategyBuilder-Anleitung
Im Folgenden werden drei Anwendungsfälle vorgestellt, um einen Überblick über die
grundlegenden Funktionen des implementierten Moduls TInTo-StrategyBuilder zu geben. Die
Charts von Wertpapierkursen und technischen Indikatoren können im TInTo-Hauptfenster
angezeigt werden. Detaillierte weitere Funktionen für die Darstellungen von Charts sind im
Abschnitt 5.1 erläutert.
Mit dem TInTo-StrategyBuilder können Sie Handelsstrategien basierend auf technischen
Indikatoren bewerten, detailliert analysieren und anhand von Eingabefunktionen optimieren.
Klicken Sie auf „StrategyBuilder“ im TInTo-Hauptfenster, um das Programmmodul zu
verwenden.
177
Anhang
Wählen Sie ein zu analysierendes
Wertpapier und einen Analysezeitraum.
Vergleichen Sie die Rentabilität
verschiedener Strategien und
analysieren Sie die Strategien ihrer
Merkmale.
Analysieren Sie die
erzeugten
Handelssignale.
Wählen Sie ihre Strategie und
verwenden Sie
Eingabefunktionen, um ihre
Strategie zu optimieren.
Bewerten von Aktiven-Markt-Strategien
1. Wählen Sie ein zu analysierendes Wertpapier und geben Sie einen Analysezeitraum ein.
2. Wählen Sie eine Aktive-Markt-Strategie aus. Automatisch werden dabei alle
Eingabeparameter mit den gängigsten Standardparametern eingeblendet.
● Aktive-Markt-Strategien
sind nach der Eigenschaft ihrer
verwendeten Indikatoren wie folgt sortiert:
Trendfolger
Oszillatoren
Volumenindikatoren
Zusammengesetzte Indikatoren
● Elementare
Strategien enthalten identische Namen wie
die technischen Indikatoren auf welchen sie basieren.
● Erweiterte
Strategien sind nach den Namen der verwendeten
technischen Indikatoren und den Eigenschaften der
Strategien benannt.
3. Kicken Sie auf „Trade“, um die Rentabilität der gewählten Strategie zu überprüfen.
4. Wiederholen Sie Schritte 1 bis 3 und vergleichen Sie die Rentabilität der verschiedenen
Strategien, bis Sie eine überzeugende Strategie gefunden haben.
178
Anhang
Vergleichen
Sie die
gesamte
Rendite
verschiedener
Strategien.
Analysewertpapier und
Strategieinformation
Handelsdaten
Rendite aus jeweiliger
Handelseinheit
Kumulative
Rendite
5. Klicken Sie auf „Clear All“, um alle Handelsergebnisse zu löschen.
Bewerten von kombinierten Strategien mit Investition in Handelspausen und weitere
Optionen
1. Wählen Sie ein zu analysierendes Wertpapier und geben Sie den Analysezeitraum ein.
2. Wählen Sie eine Aktive-Markt-Strategie aus.
3. Kombinieren Sie ihre Aktive-Markt-Strategie mit einer Handelspausen-Strategie, um
zusätzlichen Gewinn in den Handelspausen zu erzielen:
• Wählen Sie die Option „Combine With Opposite Product“, um ihre Investition in
Handelspausen mit Produkten, deren Kurs gegenläufig zu dem Kurs ihrer Aktiven-MartStrategie verläuft, zu erweitern.
• Wählen Sie Option „Combine With Cash Deposit“, um ihre Investition in Handelspausen
um festverzinsliche Produkte zu erweitern.
Handelsergebnisse aus Aktiver-Markt-Strategie
Handelsergebnisse aus Handelspausen-Strategie
„Opposite Product“ sind mit „B“ verdeutlicht.
Investitionsergebnisse aus Handelspausen-Strategie
„Cash Deposit“ sind mit „CD“ verdeutlicht.
4. Kicken Sie auf „Trade“, um die Rentabilität der erstellten Strategie zu überprüfen.
5. Wiederholen Sie Schritte 1 bis 4 und vergleichen Sie die Rentabilität verschiedener
Strategien, bis Sie ihre überzeugende Strategie gefunden haben.
179
Anhang
6. Vergleichen Sie noch die Rentabilität ihrer Strategie mit folgenden einfachen Investitionen
und optimieren Sie ihre Strategie:
• Wählen Sie „Profit Without Intermediate Trade“ und klicken Sie „Go“, um die Rentabilität
aus einem alternativen Handel aus einmaliger Kaufaktion am Anfang des
Analysezeitraumes und einmaliger Verkaufsaktion am Ende des Analysezeitraumes zu
überprüfen.
• Wählen Sie „Cash Deposit Interest“ und klicken Sie „Go“, um die Rentabilität au einer
Investition in festverzinsliche Produkte über den gesamten Analysezeitraum zu überprüfen.
Handelsergebnis aus der Strategie „Profit Without Intermediate Trade“
ist mit „Without“ verdeutlicht.
Rendite aus der Investition „Cash Deposit Interest“ ist mit „C.D. Interest“ verdeutlicht.
Analysieren und entwerfen von eigenen Strategien
1.
2.
3.
4.
Wählen Sie ein zu analysierendes Wertpapier und geben Sie einen Analysezeitraum ein.
Wählen Sie eine Aktive-Markt-Strategie aus.
Kicken Sie auf „Trade“, um die Rentabilität ihrer gewählten Strategie zu überprüfen.
Klicken Sie auf „Signal“, um alle mittels ihrer Strategie erzeugten Signale abzufragen.
5. Verwenden Sie die Eingabefunktionen „Periode Parameter“ für die Indikator-/SignallinieBerechnung, um schnellreagierende oder trägere Signale zu erzeugen.
6. Verwenden Sie Ihre Strategie mit weiteren Eingabefunktionen „Trade Signal“, um die
Empfindlichkeit der Signalgenerierung zu beeinflussen und um die vorherrschenden
Marktsituationen zu berücksichtigen:
• Wenn Sie eine elementare Strategie für eine Aktive-Markt-Strategie gewählt haben,
verwenden Sie „Trade Signal“ wie folgt:
- Setzen Sie einen kleineren Wert für „Crossover Buy“ und einen größeren Wert für
„Crossover Sell“ als die eingeblendeten Standardparameter ein, um beispielsweise
schnell-reagierende Signale oder mehr Signale zu erzeugen.
- Setzen Sie einen größeren Wert für „Crossover Buy“ und einen kleineren Wert für
„Crossover Sell“ als die eingeblendeten Standardparameter ein, um beispielsweise
schwache Signale zu eliminieren oder Signale nur in extremen Marktsituationen zu
erzeugen.
180
Anhang
Indikator-Linie
Signallinien
Verkauf
Verkauf
Verkauf
Der Wert für „Crossover Sell“
bestimmt den Signallinienwert für
Verkaufssignale.
Der Wert für „Crossover Buy“
bestimmt den Signallinienwert für
Kaufsignale.
Kauf
Fortlaufender Zeitpunkt
Kauf
• Wenn Sie eine erweiterte Strategie für eine Aktive-Markt-Stratgie gewählt haben,
verwenden Sie „Trade Signal“ wie folgt:
- Setzen Sie einen größeren Wert für „Crossover Buy“ und/oder einen kleineren Wert für
„Crossover Sell“ als die eingeblendeten Standardparameter von null ein, um
beispielsweise schwache Signale in der Seitwärtsphase oder zu frühe Signale zu
eliminieren.
- Verwenden einen kleineren Wert für „Range Buy“ und/oder einen größeren Wert für
„Range Sell“ als die eingeblendeten Standardparameter von null ein, um beispielsweise
Signale nur in extremen Marktsituationen zu erzeugen und um Fehlsignale in einer
trendlosen Phase zu eliminieren. (Eingabefunktion „Range Buy/Sell“ ist nur für die mit
Stern markierten Strategien anwendbar.)
Indikator-Linie
Signallinie
Verkauf
Verkauf
Mittelpunktslinie
Verkauf
Verkauf
Der Wert für „Range Buy“ bestimmt
den gültigen Bereich für Kaufsignale.
Kauf
Kauf
Kauf
Der Wert für „Range Sell“ bestimmt
den gültigen Bereich für
Verkaufssignale.
Kauf
Kauf
Fortlaufender Zeitpunkt
Die Werte für „Crossover Buy“ und „Crossover Sell“ bestimmen die Differenz aus Indikatorwert und
jeweiligem Signalliniewert, welche ein Signal erzeugt.
In der Abbildung oben sind Signale mittels Schnittpunkt „0“ für „Crossover Buy“ und „Crossover Sell“
erzeugt.
(Vielfältige weitere Möglichkeiten der Eingabefunktion „Trade Signal“ können je nach
gewählter Strategie und deren Basisindikatoren unterschiedlich eingesetzt werden.)
7. Kicken Sie auf „Trade“, um die Rentabilität der erstellten Strategie zu überprüfen.
8. Wiederholen Sie die Schritte 1 bis 5 und vergleichen Sie die Rentabilität verschiedener
Strategien, bis Sie Ihre überzeugende Strategie gefunden haben.
Hinweis:
• Die Rendite der Aktiven-Markt-Strategie ist ausschließlich aus den Kursgewinnen berechnet.
Dividenden sowie Gebühren werden nicht zugerechnet bzw. abgezogen.
• Die jeweiligen Handelsaktionen folgen nur dem Ansatz des Vollkauf bzw. Vollverkauf.
• Die Zinsberechnung für die Handelspausen-Strategie „Cash Deposit“ richtet sich nach
englischer Zinsmethode (act/365). Dabei werden die erzielten Zinserträge am Ende des
Analysezeitraumes addiert und Zinseszins nicht berücksichtigt.
181
Anhang
4-A
Testsoftware: TInTo-StrategyBuilder
Analysezeitraum: 01.01.2005-31.12.2007
Analysewertpapier: Dow Jones Indutrial Average In (^DJI)
• Strategie: SMAC (Parameter: 23/130) + ADX (Parameter: 14/14), SMAC (Parameter: 23/130)
Handelstag
SMAC + ADX
SMAC
BuyDate
SellDate
Profit
cmlProfit
Profit
cmlProfit
29.07.2005
12.10.2005
-3,98
-3,98
-3,98
-3,98
18.11.2005
19.06.2006
1,63
-2,42
1,63
-2,42
18.08.2006
29.03.2007
8,5
5,88
8,5
5,88
04.04.2007
16.11.2007
-
5,88
5,16
11,34
• Strategie: SMAC (Parameter: 23/130) + CMF (Parameter: 20)
Handelstag
SMAC + ADX
BuyDate
SellDate
Profit
cmlProfit
29.07.2005
12.10.2005
-3,98
-3,98
18.11.2005
19.06.2006
1,63
-2,42
18.08.2006
16.11.2007
15,77
12,97
4-B
Testsoftware: TInTo-StrategyBuilder
Darstellung von Parametern (Par1/ Par2/ Tradecrossover Buy/ Tradecrossover Sell)
Hierbei werden nur die Handelsergebnisse des jeweiligen Jahres dargestellt.
GDax(^GDAXI)
Microsoft Corp.(MSFT)
SMAC
(50/130/100/0)
SMAC
(50/130/0/0)
SMAC
(12/26/0,2/0)
SMAC
(12/26/0/0)
2004 SellDate
-
-
23.11.2004
30.12.2004
2004 cmlProfit
-
-
-2,99
-3,83
2005 SellDate
-
-
15.12.2005
15.12.2005
2005 cmlProfit
-
-
4,44
6,17
2006 SellDate
29.06.2006
29.06.2006
12.12.2006
07.02.2007
2006 cmlProfit
32,49
44,81
31,26
30,36
2007 SellDate
25.09.2007
25.09.2007
26.11.2007
14.01.2008
2007 cmlProfit
68,22
88,75
51,66
48,84
2008 SellDate
-
24.01.2008
08.09.2008
24.12.2008
2008 cmlProfit
68,22
62,31
36,69
26,27
182
Anhang
4-C
Testsoftware: TInTo-StrategyBuilder
Analysewertpapier: Microsoft Corp. (MSFT)
Strategie
Par 1
Par 2
Par 3
Trade Crossover: Trade Crossover: Trade Range:
Buy
Sell
Buy
Trade Range:
Sell
MACDCP +
12
26
9
0
0
-0,3
0,3
MACDCP -
12
26
9
0
0
0
0
Hierbei werden nur die Handelsergebnisse des jeweiligen Jahres dargestellt.
2004 SellDate
MACDCP +
MACDCP -
06.07.2004
15.10.2004
2004 cmlProfit
11,95
6,02
2005 SellDate
29.11.2005
29.11.2005
2005 cmlProfit
23,39
10,24
2006 SellDate
01.09.2006
01.09.2006
2006 cmlProfit
39,91
24,9
2007 SellDate
09.11.2007
09.11.2007
2007 cmlProfit
81,46
58,86
6-A
CCI-basierte Handelsstrategie
Signalwerten: -100 für Kaufsignal, 100 für Verkaufssignal
Berechnungsperiode: 20 Handelstage
Analysewertpapier: Dow Jones Industrial Average
Analysezeitraum: 01.01 2008 - 31.12.2008 (253 Datensätze)
Anzahl der zu betrachtenden Datensätze: 272
Testinstrument: Microsoft XP SP3, Intel Pentium M Prozessor (1,60 GHz, 1,25GB), DSL 16MBit
Besonderheit: 1) Abfrage sbInd holt die benötigte Daten aus der Tabelle tmpCCI0.
2) Die Berechnungsdauer einer Abfrage beinhaltet neben der Durchführung der Abfrage
bis auf Speicherung der Endergebnisse.
6-B
Analysewertpapier: Dow Jones Industrial Average
Analysezeitraum: 01.01 2008 - 31.12.2008 (253 Datensätze)
Testinstrument: Microsoft XP SP3, Intel Pentium M Prozessor (1,60 GHz, 1,25GB), DSL 16MBit
Besonderheit: 1) Abfrage sbInd bei der CCI-basierte Strategieholt die benötigte Daten aus der Tabelle
tmpCCI0.
2) Die Berechnungsdauer einer Abfrage beinhaltet neben der Durchführung der Abfrage
bis auf Speicherung der Endergebnisse.
Strategie
Signalwert
Berechnungsperiode
Anzahl der Benötigten Datensätze
CCI-basierte
-100, 100
20
272
RSI-basierte
30, 70
14
267
CMF-Basierte
0, 0
21
273
183
Anhang
Strategie
IndikatorBerechnung
Optimierte
IndikatorBerechnung
Signalberechnung der
Strategiebewertung
OHNE optimierter
Indikatorberechnung
Signalberechnung für
Strategiebewertung MIT
optimierter
Indikatorberechnung
CCI-basierte
0,2812
0,2312
1,0156
0,8441
RSI-basierte
0,2556
0,2187
0,9062
0,8437
CMF-Basierte
0,2656
0,2512
0,9843
0,8906
6-C
Analysewertpapier: Dow Jones Industrial Average
Testinstrument: Microsoft XP SP3, Intel Pentium M Prozessor (1,60 GHz, 1,25GB), DSL 16MBit
Stichproben: CCI- , RSI-, CMF-basierte Handelsstrategie
Besonderheit: 1) Abfrage sbInd bei der CCI-basierte Strategieholt die benötigte Daten aus der Tabelle
tmpCCI0.
2) Die Berechnungsdauer einer Abfrage beinhaltet neben der Durchführung der Abfrage
bis auf Speicherung der Endergebnisse.
Strategie
Signalwert
Berechnungsperiode
CCI-basierte
-100, 100
20
RSI-basierte
30, 70
14
CMF-Basierte
0, 0
21
Analysezeitraum (Jahr)
Benötige Datensätze
CCI-Basis
Berechnungsdauer (Sec)
RSI-Basis CMF-Basis
CCI-Basis
RSI-Basis
CMF-Basis
1 (1.1.08 - 31.12.08)
272
267
273
0,8441
0,8437
0,8906
2 (1.1.07 - 31.12.08)
523
518
524
2,9062
2,875
3,0156
3 (1.1.06 - 31.12.08)
774
769
775
6,2343
6,0937
6,3906
4 (1.1.05 - 31.12.08)
1026
1021
1027
10,8281
10,8125
11,0312
5 (1.1.04 - 31.12.08)
1278
1273
1279
16,5625
16,5156
16,9531
Analysezeitraum (Jahr)
Durchschnitt der
Berechnungsdauer
Standard Abweichung der
Berechnungsdauer
1 (1.1.08 - 31.12.08)
0,8594
0,0269
2 (1.1.07 - 31.12.08)
2,9322
0,0738
3 (1.1.06 - 31.12.08)
6,2395
0,1485
4 (1.1.05 - 31.12.08)
10,8906
0,122
5 (1.1.04 - 31.12.08)
16,677
0,2401
6-D
Analysewertpapier: Dow Jones Industrial Average
Testinstrument: Microsoft XP SP3, Intel Pentium M Prozessor (1,60 GHz, 1,25GB), DSL 16MBit
Stichproben: CCI- , RSI-, CMF-basierte Handelsstrategie (Die Parametern für jeweilige Strategien sind
identisch wie die in 6-C angegebenen Parametern der jeweiligen Strategie)
Besonderheit: 1) Abfrage sbInd bei der CCI-basierte Strategieholt die benötigte Daten aus der Tabelle
tmpCCI0.
2) Die Berechnungsdauer einer Abfrage beinhaltet neben der Durchführung der Abfrage
bis auf Speicherung der Endergebnisse.
184
Anhang
Analysezeitraum (Jahr)
Berechnungsdauer(Sec)
Durchschnittliche Berechnungsdauer
CCI-Basis
RSI-Basis
CMF-Basis
1 (1.1.08 - 31.12.08)
0,2516
0,2343
0,2656
0,2505
2 (1.1.07 - 31.12.08)
0,7812
0,7656
1,0781
0,8749
3 (1.1.06 - 31.12.08)
1,625
1,5625
1,7031
1,6302
4 (1.1.05 - 31.12.08)
2,8281
2,7187
2,8906
2,8124
5 (1.1.04 - 31.12.08)
4,3125
4,1093
4,3906
4,2708
8-A
Analysewertpapier : Dax(^GDAXI)
Testsoftware: TInTo-StrategyBuilder
Testinstrument: Microsoft XP SP3, Intel Pentium M Prozessor (1,60 GHz, 1,25GB), DSL 16MBit
Messdauer: Begin: Klick des „Trade“ Button auf der Benutzeroberfläche durch den Anwender
Ende: Anzeige des Handelsergebnisses auf der Benutzeroberfläche.
- Stichproben Handelsstrategien
Strategie Par 1 Par 2 Par 3
ROC
12
-
-
Trade
Trade
Trade
Trade
Crossover: Buy Crossover: Sell Range: Buy Range: Sell
-5
Zinssatz
%
5
-
-
-
RSI
14
-
-
30
70
-
-
-
CCI
20
-
-
-120
120
-
-
-
SMAC
50
130
-
100
0
-
-
-
SSTOCCP
21
3
3
0
0
20
80
-
MACDCP
12
26
9
0
0
0
0
-
MACDCP+CMF
-
-
-
-
-
-
-
-
RSI+OP
14
-
-
30
70
-
-
-
SMAC+OP
50
130
-
100
0
-
-
-
RSI+CD
14
-
-
30
70
-
-
4
SMAC+CD
50
130
-
100
0
-
-
4
Berechnungsdauer (Millisekunde)
1 Jahr
(2008)
2 Jahre
(2007-2008)
3 Jahre
(2006-2008)
4 Jahre
(2005-2008)
5
(2004-2008)
ROC
93
93
109
109
125
RSI
312
828
1687
2875
4390
CCI
562
1671
3453
5890
9015
SMAC
1125
2640
4875
7734
11296
SSTOCCP
703
2218
4703
8156
12593
MACDCP
140
171
203
234
265
MACDCP+CMF
406
1000
1921
3156
4734
RSI+OP
328
843
1703
2875
4390
SMAC+OP
1140
2656
4875
7765
11343
RSI+CD
328
859
1734
2906
4400
SMAC+CD
1140
2671
4875
7765
11343
Durchschnitt
571
1423
2740
4497
6718
Standard
Abweichung
399
988
1877
3069
4569
185
Anhang
Durchschnittliche Berechnungsdauer (Millisekunde)
1 Jahr
(2008)
2 Jahre
(2007-2008)
3 Jahre
(2006-2008)
4 Jahre
(2005-2008)
5 Jahre
(2004-2008)
Elementare Strategie
322
864
1749
2958
4510
Erweiterte Strategie
593
1507
2925
4820
7222
Kombinierte Strategie im
Handelspause
743
1757
3296
5328
7869
Berechnungsdauer (Millisekunde)
1 Jahr
(2008)
2 Jahre
(2007-2008)
3 Jahre
(2006-2008)
4 Jahre
(2005-2008)
5 Jahre
(2004-2008)
218
734
1609
2765
4281
Indikatorberechnung (RSI)
Gesamte Berechnung (Strategie: RSI)
312
828
1687
2875
4390
Indikator/Signallinieberechnung
(SMAC)
1046
2578
4750
7671
11178
Gesamte Berechnung
(Strategie: SMAC)
1125
2640
4875
7734
11296
8-B
Analysewertpapier: Dax(^GDAXI)
Testsoftware: TInTo-StrategyBuilder
Strategie
Par 1
Par 2
Par 3
MACDCP
12
26
9
SMAC
50
130
-
CCI
20
-
-
Trade Crossover: Trade Crossover: Trade Range:
Buy
Sell
Buy
0
Trade Range:
Sell
0
0
0
100
0
-
-
-120
120
-
-
RSI
14
-
-
30
70
-
-
AOS
50
-
-
0
0
-
-
ROC
12
-
-
-5
5
-
-
MACDCP
SMAC
CCI
RSI
AOS
ROC
24.09.2004
-
04.11.2004
22.11.2004
27.04.2004
15.11.2004
2004 cmlProfit
5,96
-
14,35
15,4
1,45
17,77
2005 SellDate
14.12.2005
-
16.11.2005
09.12.2005
08.11.2005
16.11.2005
2005 cmlProfit
21,62
-
39,58
34,62
22,1
30,61
2004 SellDate
2006 SellDate
06.09.2006
29.06.2006
19.12.2006
05.07.2006
17.05.2006
20.12.2006
2006 cmlProfit
28,68
32,5
59,42
39,25
34,71
54,03
2007 SellDate
19.12.2007
25.09.2007
12.12.2007
13.12.2007
27.11.2007
06.12.2007
2007 cmlProfit
54,44
68,22
71,07
60,26
55,02
78,29
2008 SellDate
30.12.2008
-
11.12.2008
30.12.2008
30.12.2008
11.12.2008
2008 cmlProfit
17,25
68,22
34,37
9,81
33,61
33,82
186
Anhang
Handelstag
SMAC
SMAC + OP
SMAC + CD(4%)
BuyDate
SellDate
Profit
cmlProfit
Profit
cmlProfit
Profit
cmlProfit
02.01.2004
07.12.2004
-
-
-4,83
-4,83
4,66
-
07.12.2004
29.06.2006
32,5
32,5
32,5
26,09
32,5
32,5
29.06.2006
11.10.2006
-
32,5
-9,63
13,95
1,43
32,5
11.10.2006
25.09.2007
26,96
68,22
26,96
44,67
26,96
68,22
25.09.2007
30.12.2008
-
68,22
38,09
99,78
6,33
68,22
CD Due
-
-
-
-
-
81,98
8-C
Analysewertpapier: Microsoft Corp.(MSFT)
Testsoftware: TInTo-StrategyBuilder
Strategie Par 1
Par 2
Par 3
Trade Crossover:
Buy
Trade Crossover: Trade Range: Trade Range:
Sell
Buy
Sell
MACDCP
12
26
9
0
0
-0,3
0,3
SMAC
12
26
-
0,2
0
-
-
CCI
20
-
-
-180
180
-
-
RSI
21
-
-
30
70
-
-
AOS
25
-
-
0
0
-
-
SSTOCP
21
3
3
0
0
10
90
MACDCP
SMAC
CCI
RSI
AOS
SSTOCCP
2004 SellDate
06.07.2004
23.11.2004
28.04.2004
08.07.2004
15.11.2004
10.11.2004
2004 cmlProfit
11,95
-2,99
4,65
8,86
5,79
10,88
2005 SellDate
29.11.2005
15.12.2005
04.11.2005
06.12.2005
19.12.2005
09.11.2005
2005 cmlProfit
23,39
4,44
7,26
26,25
13,41
11,83
2006 SellDate
01.09.2006
12.12.2006
23.08.2006
16.08.2006
28.04.2006
07.07.2006
2006 cmlProfit
39,91
31,26
22,77
16,18
3,4
-2,92
2007 SellDate
09.11.2007
26.11.2007
23.07.2007
27.12.2007
03.12.2007
05.11.2007
2007 cmlProfit
81,46
51,66
27,55
36,57
47,81
33,61
2008 SellDate
31.12.2008
08.09.2008
31.12.2008
31.12.2008
31.12.2008
31.12.2008
2008 cmlProfit
27,44
36,69
7,85
-5,52
35,1
-3,11
Handelstag
MACDCP
Profit
MACDCP + OP
cmlProfit
Profit
SellDate
02.01.2004
26.03.2004
-
-
8,82
8,82
0,92
-
26.03.2004
06.07.2004
11,95
11,95
11,95
21,81
11,95
11,95
06.07.2004
06.12.2004
-
11,95
2,46
24,81
1,68
11,95
06.12.2004
16.08.2005
-2,16
9,53
-2,16
22,12
-2,16
9,53
16.08.2005
18.10.2005
-
9,53
8,12
32,03
0,69
9,53
18.10.2005
29.11.2005
12,66
23,39
12,66
48,74
12,66
23,39
29.11.2005
23.05.2006
-
23,39
17,67
75,02
1,92
23,39
23.05.2006
01.09.2006
13,38
39,91
13,38
98,44
13,38
39,91
01.09.2006
19.03.2007
-
39,91
-7,7
83,16
2,18
39,91
19.03.2007
18.05.2007
10,78
54,99
10,78
102,9
10,78
54,99
187
cmlProfit
MACDCP + CD(4%)
BuyDate
Profit
cmlProfit
Anhang
18.05.2007
24.08.2007
-
54,99
6,55
116,2
1,07
54,99
24.08.2007
09.11.2007
17,08
81,46
17,08
153,12
17,08
81,46
09.11.2007
22.02.2008
-
81,46
17,94
198,52
1,15
81,46
22.02.2008
31.12.2008
-29,77
27,43
-29,77
109,65
-29,77
27,43
CD Due
40,16
9-A
Die beiliegende CD-ROM enthält folgenden Dateien:
• TInTo_2009.mdb: Die Datenbankdatei TInTo.
• DA_SoheeShin: Diese Diplomarbeit als PDF-Datei.
188
Literaturverzeichnis
[ADT08]
The New York Times Company About.com: DayTrading, New York, 2008.
http://daytrading.about.com
[BörV08] TM Börsenverlag AG.: Börsenwissen, Rosenheim, 2008
http://www.börsenverlag.de
[Cod70]
Codd, Edgar F.: A Relational Model of Data for Large Shared Data Banks. In:
Communications of the ACM, New York, 1970
[CR08]
Aktienratgeber Chart und Rat GbR: Lexikon: Chatanalyse Aktienanalyse, 2008
http://www.chartundrat.de
[CT06]
Junghwan Kim: Charttechnik, Ire Media, Korea, 2006.
(김정환: 차트의 기술, 이레미디어, 경기도 고양시 대한민국, 2006)
[CW08]
IDG Business Media GMBH: Computerzeitschrift Computerwoche:
Datenbanken, München 2008
http://www.computerwoche.de
[FA06]
Timothy P. Vick: How to Pick Stocks Like Warren Buffet: Profiting from the Bargin
Hunting Strategies of the World‘s Greatest Value Investor, Mcgraw Hill Audio,
Auflage März 2004
[ForR08]
ForexRealm: Forex technical Indicators, 2008
http://www.forexrealm.com
[Gep05]
Geppert, Alexander: Ein regelbasierter Ansatz zur Modellierung der technischen
Analyse von Wertpapierkursen. Diplomarbeit, Rheinische Friedlich-WilhelmsUniversität Bonn, 2005
[Gra34]
Graham, Benjamin: Security Analysis: The Classic 1934 Edition,
Mcgraw-Hill Professional, Auflage: 6th. ed. 2008
[Han07]
Hahn, Nargis: Entwurf und Implementierung einer webbasierten Version des
TInTo-Systems. Diplomarbeit, Rheinische Friedlich-WilhelmsUniversität Bonn, 2007
[HM08r]
Hochschule der Medien Stuttgart Fakultät Information und Kommunication:
Relationale Datenbank, 2008
http://www.v.hdm-stuttgart.de/
[Hüb07]
Hübel, Christian: TInTo - Ein datenbankgestütztes Werkzeug zur regelbasierten
Wertpapier Analyse. Diplomarbeit, Rheinische Friedlich-Wilhelms-Universität
Bonn, 2007
[ITW08]
ITWissen: Das große Online-Lexikon für Informationstechnologie, 2008
http://www.itwissen.info
189
Literaturverzsichnis
[Man07]
Manthey, Rainer: Folien zur Vorlesung Informationssysteme. Rheinische FriedlichWilhelms-Universität Bonn, Institut for Informatik III, 2007
[Mur96]
Murphy, John J.: The Visual Investor: How to Spot Market Trands. John Wiley &
Sons, Inc. USA, 1996
[Mur99]
Murphy, John J.: Technical Analysis of the financial Markets. New York Institute
of Finance, USA, 1999
[NYSE08]
NYSE Euronext Inc. : NYSE Group Volume Records, 2008
http://www.nyxdata.com
[OV08]
OnVista Media GmbH. Onvista: Wertpapieranalyse, Köln, 2008
http://www.onvista.de
[SCharts08]
StockCharts.com, Inc.: Free stock charts and market analysis for online
Investors: Chart School, Redmond WA, 2008
http://www.StockCharts.com
[Sch07]
Schüller, Gereon: Änderungspropagierung zur regelbasierten Analyse von
Finanz-Datenströmen in TInTo. Diplomarbeit, Rheinische Friedlich-WilhelmsUniversität Bonn, Institut for Informatik III, 2007
[TSO08]
Tradesignal GmbH: Tradesignalonline Financial Charts: Lexikon, Bremen, 2008
http://www.tradesignalonline.com
[Wik08]
Wikimedia Founndation Inc.: Wikipedia, Die freie Enzyklopedia, San Francisco,
USA, 2008
http://de.wikipedia.org
[Wik08r]
Wikimedia Founndation Inc.: Wikipedia, Die freie Enzyklopedia: Relationale
Datenbank, San Francisco, USA, 2008.
http://de.wikipedia.org
[YH08f]
Yahoo! Inc.: Yahoo! Finance, Finance Search, Sunnyvale CA USA, 2008.
http://finance.yahoo.com
[ZNet08]
CBS Interactive GmbH, ZDNet.de: IT-Business, München, 2008.
http://www.ZDNet.de
[ZinB08]
Thomas Gottfried, Zinsen-berechnen.de: Zinsmethode, Heidelberg, 2008
http://www.zinsen-berechnen.de
190
Erklärung
Hiermit erkläre ich, dass ich diese Diplomarbeit selbstständig durchgeführt, keine anderen als
die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate als solche kenntlich gemacht zu
haben.
Bonn, den 26 März 2009
________________________________________________
Herzlichen Dank für Ihr Feedback.
Ihre So Hee Shin
E-mail: [email protected]
191
Herunterladen