Für neue Autoren:
kostenlos, einfach und schnell
Für bereits registrierte Autoren
Bachelorarbeit, 2011
30 Seiten, Note: 1.3
1 Einleitung
1.1 Funktionsweiseeines Orderbuches
1.2 Mathematische Beschreibung
2 Demoversion Orderbuch
2.1 UmsetzungdesOrderbuches
2.1.1 Eintragen und Entfernen von Aufträgen
2.1.2 VerarbeitungeingehenderAufträge
2.1.3 Auftrags-Stornierung
2.2 Visualisierung
3 Orderbuch an der Börse
4 Zusammenfassung
Anhang
A) DieJava-KlasseGUI
B) Zur grafischen Ausgabe
Literaturverzeichnis
Orderbücher sind im Börsenalltag unabdingbar, sie zeigen aktuelle Kauf- und Verkaufsaufträge der jeweiligen Aktie und bestimmen den aktuellen Aktienkurs.
Ziel dieser Arbeit ist die Vorstellung der Demonstrationsversion eines Orderbuches als (denkbarer) Handelsmechanismus an der Börse, welcher eingehende Kauf- bzw. Verkaufsaufträge für eine Aktie entgegennimmt und verarbeitet. Dies wird in Kapitel 2 geleistet.
Ein Orderbuch ist eine Gegenüberstellung von auf dem Markt verfügbaren Kauf- und Verkaufsaufträgen für ein bestimmtes Wertpapier, z.B. die Aktie der Volkswagen AG an der Deutschen Börse. Wir werden uns auf die Funktionsweise des offenen Orderbuches beschränken, welches für alle Handelsteilnehmer sichtbar ist. Hier ein Beispiel eines vereinfachten Orderbuches aus [PielO] :
Figur 1.1
Abbildung in dieser Leseprobe nicht enthalten
Die linke Seite, auch Geld-Seite genannt, zeigt die Kaufaufträge und kann als Angebot des Wertpapiers auf dem Markt interpretiert werden. Wenn ein Wertpapier verkauft werden soll, so stellt [PielO] fest, dass dies die relevante Seite des Orderbuches ist. Die rechte Seite wird auch Brief-Seite genannt und führt die Verkaufsaufträge, welche als gesamte Nachfrage der Marktteilnehmer gesehen werden können. Die Brief-Seite ist bei Kauf-Absichten entscheidend.
Der Kaufpreis dieses Orderbuches liegt bei 99, der Verkaufspreis bei lO2 - das macht einen Gleichgewichtspreis (Mittel von Kauf- und Verkaufspreis) von 1OO.5. Auf der Geld-Seite beschreiben die angegebenen Preise obere Limits für den jeweiligen Kaufauftrag, auf der Brief-Seite geben sie untere Limits für die Verkaufsaufträge.
Geht nun ein Kaufauftrag über 18 000 Stück ohne Limitierung ein (d.h. „Bestens"), entspricht dies im Orderbuch den besten Verkaufsaufträgen, in unserem Fall 15 000 zu 102 und 3 000 zu 105. Diese Verkaufsaufträge werden dann aus dem Orderbuch herausgenommen. Analog passt eine Verkaufsorder über 15 000 Stück ohne Limit-Angabe zu den besten Kaufaufträgen, hier 10 000 zu 99 und 5000 zu 98.
Liegt bei einer eingehenden Verkaufsorder für 8 000 Stück das gewünschte Limit nun bei 98, d.h. unter dem Preislimit der besten Kauforder, stehen dem die besten Kauforders gegenüber, in unserem Beispiel 8000 zu 99. Beläuft sich jedoch der Verkaufsauftrag anstatt auf 8 000 auf 25 000, entspricht dies den 10 000 Stück zu 99 und 14 000 zu 98. Diese Transaktion über 24 000 wird dann ausgeführt und die verbleibenden 1 000 mit Preislimit 98 auf der Brief-Seite in der Liste der ausstehenden Verkaufsaufträge eingetragen. Ist das angegebene Limit nun größer als das der besten Kauforder, wird die Verkaufsorder auf der Brief-Seite neu eingereiht, wobei die aufsteigende Ordnung der Limitpreise beibehalten wird.
Analoges gilt in umgekehrter Weise für ankommende Kaufaufträge. Wird dort ein Limit gesetzt, welches größer als das des besten Verkaufsauftrages ist, kommt es zu einer direkten Transaktion. So würde ein Kaufauftrag über 5 000 Stück mit Preislimit 105 direkt ausgeführt werden; ein solcher mit Preislimit 95 würde zu der vorhandenen Auftragsmenge von 5 500 hinzugerechnet werden.
Zusammenfassend werden Aufträge also ausgeführt wenn einem Auftrag ein solcher auf der gegenüberliegenden Seite in Menge und Limit entspricht („Matching"). Ist dies der Fall, so verschwinden die zusammenpassenden Aufträge gemäß [BF10] aus dem Buch. Bei der beschriebenen Funktionsweise ist außerdem zu betonen, dass der aktuell zuletzt ausgeführte Auftrag dem aktuellen Kurs der zu Grunde liegenenden Aktie entspricht. Auf diese Erkenntnis greifen wir in Kapitel 2 bei der Ausführung der Orderbuch-Simulation zurück. Folgende Grafik veranschaulicht die Funktionsweise eines Orderbuches:
Figur 1.2
Abbildung in dieser Leseprobe nicht enthalten
Input:Auftrag Orderbuch
Zur mathematischen Beschreibung des Orderbuches ist es von Nutzen, Dichten für die LimitAufträge einzuführen. Sei in diesem Sinne ds(P) die Dichte der Verkaufsaufträge und dB(P) die Dichte der Kaufaufträge zum Preis P, wobei S> B die jeweils besten Preislimits der Verkaufs- bzw. Kaufaufträge sind. Die Menge an Kaufaufträgen in einem Intervall [P, P+dP) sei gegeben durch dB(P)(P+dP). Es gilt nach [OW05]:
Abbildung in dieser Leseprobe nicht enthalten
Weiter definieren [OW05] V = (S+B)/2 sowie s = S-B, wobei V der Gleichgewichtspreis (im
Beispiel aus Abschnitt 1.1 beträgt dieser 100.5) und s die sogenannte „bid-ask spread", die
Spanne zwischen besten Verkaufs- und Kaufpreis, ist. Greifen wir auf unser Beispiel aus
vorigem Paragraphen zurück, haben wir s = 3 und es gilt:
dB(98) = 14 000, die Menge der Kaufaufträge mit Preislimit 98,
dB(95)(100) = 29 500, die Menge der Kaufaufträge im Intervall [95,100),
dB(96) = dB(100) = 0, d.h. es gibt keinen Kaufauftrag zu den Limits 96 bzw. 100.
Analoges gilt für die Verkaufsaufträge.
Setzt man im Gegensatz zu dem Orderbuch - Beispiel voraus, dass die Dichten stetig sind, kannmanfolgendermaßen dieKosten C einer Transaktion bestimmen:
Es beschreibe x die jeweilige Auftragsmenge und xt die Auftragsmenge zum Zeitpunkt t. Dann gilt für die Kosten einerTransaktion nach [OW05]:
Abbildung in dieser Leseprobe nicht enthalten
ds(P)dP für einen Verkaufsauftrag P( )dß(P)dP bei einem Kaufauftrag
d.h. als obere bzw. untere Grenze des Integrals (welches eine bestimmte Auftragsmenge x beschreibt) über die Dichte der Verkaufs- bzw. Kaufaufträge. Die Lösung der Preisfunktion geht über das Thema dieser Arbeit hinaus und wird deshalb hier nicht genauer behandelt.
Das der Arbeit zu Grunde liegende Java-Programm zur Modellierung eines Orderbuches nutzt einen zufällig erzeugten Ausgangszustand mit randomisierten Auftragsmengen zu randomisierten Limitpreisen. Beim Starten der Simulation erscheint ein Grafikfenster, welches diesen Zustand anzeigt. Durch Betätigen der Buttons Buy bzw. Seil können Aufträge eingegeben werden, wobei jeweils Aktienmenge und gewünschtes Kurslimit abgefragt werden. Darüber hinaus können bereits abgegebene Aufträge - falls noch nicht ausgeführt, d.h. noch im Orderbuch stehend - über die Buttons Remove Buy bzw. Remove Seil wieder storniert werden. Nach Eingabe des gewünschten (positiven wie auch negativen) Kauf- bzw. Verkaufsauftrages wird (wie in der Realität auch) um Bestätigung gebeten, wobei der potentielle Auftrag über den im Orderbuch stehenden Kauf- bzw. Verkaufsauftragslisten angezeigt wird. Bei Abbruch des Auftrages verschwindet diese Vorschau wieder, bei Bestätigung wird sie zum zuletzt geäußerten Auftrag, bleibt unter „Your latest Order" stehen und wird je nach eingelesenem Limit entweder direkt ausgeführt oder in die jeweilige Liste eingeordnet. Einzelheiten zur Visualisierung des Orderbuches folgen in Abschnitt 2.2.
Das Simulationsprogramm wird hier in Pseudo-Code, angelehnt an den originalen Java-Code, vorgestellt. Kommentare, die die Algorithmen erklärend begleiten, sind in grüner Farbe dargestellt und werden mittels „//" eingeleitet.
Die hauptsächliche Klasse des Programms, d.h. der Kern der Demoversion des Orderbuches, ist die Klasse Orderbook. Sie erbt von ihrer Superklasse GUI, die dann für die grafische Ausgabe des sich mit eingegebenen Aufträgen ändernden Orderbuches sorgt.
In Java kann über die vorgefertigte und importierte Klasse JOptionPane die gewünschte Menge und das eventuell gewünschte Limit abgefragt werden. Kernmethoden sind buy und seil, die die eingegebenen Aufträge abwickeln und weitere Methoden zum Entfernen bzw. Eintragen der Aufträge aufrufen. buyRemove und sellRemove, die in Abschnitt 2.1.3 näher beleuchtet werden, stehen für das Entfernen von bereits abgegebenen, aber noch nicht ausgeführten Aufträgen zur Verfügung. Nach Eingabe eines Auftrages wird durch Aufruf eines Kommandofensters um Bestätigung gebeten.
Die Verwaltung der Aufträge geschieht im Java-Programm durch die Klasse Entry, die die Parameter Menge, Preislimit und Transaktionsnummer besitzt. Neu eingetragene Aufträge sind Objekte dieser Klasse und werden wie später beschrieben je nach Typ des Auftrags in Kauf- bzw. Verkaufsauftragsliste eingeordnet.
Folgende Figur veranschaulicht die Realisierung des Orderbuches und macht zusätzlich zu Figur 1.1 die Tiefe des Orderbuches (Definition s.u.), d.h. die Anzahl der Aufträge zu einem bestimmten Limit, deutlich.
Figur 2
Abbildung in dieser Leseprobe nicht enthalten
Erläuterung: Bi0 (hier i = 1, , 5) sowie Si0 (hier i = 1, , 4) beschreiben die Preislimits der Kauf- bzw. Verkaufsaufträge, die horizontal sich anschließenden By bzw. Sy mit j > 0 geben die Mengen der verschiedenen Aufträge zum Limit Bi0 bzw. Si0 an. Jedem dieser By bzw. Sy wird eine Transaktionsnummer zugewiesen, um einen eventuell später gewünschten Zugriff zu gewährleisten.
Definition 2.1: In der Folge sei b> 0 die Länge der Preislimit-Folge Bi0, d.h. i = 1, , b, und s > 0 solche der Preislimit-Folge Sk0, d.h. k = 1,, s.
Definition 2.2: Für festes i sei Anzahl der Kaufaufträge zum Limit Bi0 x(i), die Anzahl der Verkaufsaufträge zum Limit Sk0 sei y(k), kfest.
Definition 2.3: T(B) i = 1, , b, j = 1, , x(i) bezeichne die Transaktionsnummer der Kaufauftragsmenge Bj zum Limit Bi0. T(S¡¡) ist analog definiert (hier nurj = 1,, y(i)).
In obiger Figur können wir, wenn wir uns die fehlenden Felder als Nullen vorstellen, eine Matrixform erkennen. Zur Umsetzung empfiehlt es sich jedoch in vielen Programmsprachen, Listen einzusetzen, da diese besser auf das sich ständig ändernde Orderbuch reagieren und ihre Länge dynamisch anpassen können. So benutzt verwendet das der Arbeit zu Grunde liegende Java-Programm 2 (doppelt-verkettete) Listen zum Eintragen der Orderbuchaufträge des Typs Entry; Elemente der beiden Listen sind wiederum Listen, die alle Aufträge zu einem betrachteten Preislimit beinhalten.
Wir bezeichnen weiter
barMax
als die im Laufe des Programms je nach größter vorhandener Auftragsmenge anzupassende maximale Balkenlänge,
orderAmount, (zu Anfang gleich Null)
der Zähler für die gesamte Anzahl der eingetragenen Aufträge, welcher als Transaktionsnummer in der Klasse Entry (s.o.) benutzt wird,
latestOrder,
der Speicher für letzte eingegebene Order mit Auftragsmenge, Limitpreis und Typ (Buy/Remove Buy bzw. Sell/Remove Sell) sowie
lastTrans,
der Preis der aktuell zuletzt ausgeführten Transaktion; Anfangswert ist der Gleichgewichtspreis des Orderbuches (vgl. Abschnitt 1.1).
Der Ausgangszustand des Orderbuches wird in der Simulation mittels createlnitialState zufällig erzeugt und in Kaufauftragsliste (Buy Orders) bzw. Verkaufsauftragsliste (Sell Orders) gespeichert. Sei hierzu Uint eine ganzzahlig und Umeine reell-wertig gleichverteilte Zufallsvariable.
Algorithmus createlnitialState
Abbildung in dieser Leseprobe nicht enthalten
Bemerkung: Die hier vorgestellten Algorithmen sind namensgleich zu denen ihrer Umsetzung im Simulationsprogramm.
Die in diesem Abschnitt dargelegten Erläuterungen des Java-Programm-Codes aus der Orderbook-Klasse setzen das um, was in der Einleitung in Abschnitt 1.1 zur Funktionsweise eines Orderbuches erläutert wurde. Dazu werden wir in den weiteren Ausführungen folgendes Orderbuch - Beispiel der Figur 2.1 verwenden:
Beispiel 2.1
Abbildung in dieser Leseprobe nicht enthalten
Zunächst stellen wir die beiden Methoden zum Einfügen von Kauf - bzw. Verkaufsaufträgen vor, welche in den weiter oben bereits angesprochenen Methoden buy und seil aufgerufen werden. Im betrachteten Fall können die eingehenden Aufträge nicht direkt ausgeführt werden und ein Eintrag ins Orderbuch ist notwendig.
1) Einfügen der Kaufaufträge gemäß des angegebenen Limits
Wir betrachten Figur 1.2 mit Limit 58.5 und Auftragsmenge 300 sowie die Geld-Seite des Orderbuches.
Beispiel 2.2
Abbildung in dieser Leseprobe nicht enthalten
[...]
Ingenieurwissenschaften - Wirtschaftsingenieurwesen
Masterarbeit, 126 Seiten
Diplomarbeit, 95 Seiten
Diplomarbeit, 81 Seiten
Philosophie - Philosophie des 20. Jahrhunderts
Magisterarbeit, 80 Seiten
Bachelorarbeit, 67 Seiten
Ingenieurwissenschaften - Wirtschaftsingenieurwesen
Masterarbeit, 126 Seiten
Diplomarbeit, 95 Seiten
Diplomarbeit, 81 Seiten
Philosophie - Philosophie des 20. Jahrhunderts
Magisterarbeit, 80 Seiten
Bachelorarbeit, 67 Seiten
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!
Kommentare