Lade Inhalt...

Simulation eines Orderbuches

A java program

Bachelorarbeit 2011 30 Seiten

Informatik - Wirtschaftsinformatik

Leseprobe

Inhaltsverzeichnis

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

1 Einleitung

Orderbücher sind im Börsenalltag unabdingbar, sie zeigen aktuelle Kauf- und Verkaufs­aufträ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.

1.1 Funktionsweise eines Orderbuches

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

1.2 Mathematische Beschreibung

Zur mathematischen Beschreibung des Orderbuches ist es von Nutzen, Dichten für die Limit­Aufträ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.

2 Demoversion Orderbuch

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.

2.1 Umsetzung des Orderbuches

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 Gleichgewichts­preis 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.

2.1.1 Einträgen und Entfernen von Aufträgen

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

[...]

Details

Seiten
30
Jahr
2011
ISBN (eBook)
9783640947546
ISBN (Buch)
9783640947706
Dateigröße
817 KB
Sprache
Deutsch
Katalognummer
v174255
Institution / Hochschule
Universität zu Köln – Mathematical Institute
Note
1.3
Schlagworte
simulation orderbuches

Autor

Teilen

Zurück

Titel: Simulation eines Orderbuches