|
|
Simulation von Aktienkursen mittels des Hestonmodells |
|
Roberzen |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.09.2009, 15:13
Titel: Simulation von Aktienkursen mittels des Hestonmodells
|
|
|
|
|
Hallo liebes Forum,
im Rahmen meiner Diplomarbeit muss ich mittels Matlab unter anderem Aktienkurse simulieren. Das funktioniert aktuell auch wie gewünscht mit unten anstehendem Code. Das Aktienkursmodell liefert mir eine Simulation von "imax = 1000" verschiedenen Kursentwicklungen mit jeweils "nmax = T/dt (100)" einzelnen Schritten pro Preispfad an dennen der Wert der Aktie neu errechnet wird.
Da die Simulation den Wert eines Up-and-Out Calls ermitteln soll, speichere ich in der Schleife immer dann einen Wert, wenn der Aktienkurs am Ende der Laufzeit über 100 liegt (strike price) und während der gesamten Laufzeit nicht die barrier von 120 überschritten hat (dann ist der Wert der Option = 0).
Um die Simulation präzisere Ergebnisse liefern zu lassen möchte ich imax möglichst hoch ansetzen (10.000, 100.000 etc.), der Wert bei den aktuellen Parametern sollte mit imax gegen unendlich gegen 1.604 laufen. Allerdings hängt sich mein Code dann häufig auf (schon bei 3000) und wenn ich die Berechung abbreche kommt folgende Fehlermeldung:
Error in ==> pricepath at 51
if max(S) > B
Ich denke der Fehler entsteht durch eine spezielle Ausprägung der Pfadentwicklung, die natürlich wahrscheinlicher auftritt wenn ich mehr Pfade simuliere.. Doch ich kann den Fehler nicht finden..
Ich wäre für jede Hilfe sehr dankbar! Vorschläge zur Beschleunigung der Laufzeit des Codes werden auch sehr dankbar entgegengenommen =)
Wenn ihr eine nähere Erklärung zur gewünschten Funktionsweise des Codes haben wollt schreibt bitte zurück!
Vielen Dank für alle Postings im voraus!!
Viele Grüße
Roberzen
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.450
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.09.2009, 18:37
Titel:
|
|
Hallo,
Zum einen wäre es auch interessant, WAS die Fehlermeldung ist, nicht nur, in welcher Zeile sie entsteht. Ich gehe zumindest davon aus, dass die Fehlermeldung unvollständig widergegeben wurde.
Zum anderen könnte es helfen, im Debug - Menü "Stop If Errors / Warnings" zu aktivieren. Das wird zwar zunächst die Simulation verlangsamen, aber dann landet man automatisch in dem Moment, wo das Problem entsteht, im Debug - Modus.
Viele Grüße,
Harald
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.09.2009, 19:14
Titel:
|
|
Hallo Harald,
dank dir für dein Posting. Ich habe den Degbug mode nun mit der Option aktiviert und nun folgt eine umfangreichere Fehlermeldung:
51 if max(S) > B
Error in ==> normrnd at 31
[err, sizeOut] = statsizechk(2,mu,sigma,varargin{:});
31 [err, sizeOut] = statsizechk(2,mu,sigma,varargin{:});
Das sagt mir allerdings nun auf Anhieb auch nichts =)
Anscheinend besteht ein Problem mit der Matlab internen Funktion normrnd?!
Gruß & Dank
Robert
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.09.2009, 21:46
Titel:
|
|
Hallo nochmal an das ganze Forum,
könnte vielleicht einer von euch mit Matlab Zugang den von mir zuvor geposteten Code bei sich laufen lassen mit diversen Werten für imax (1000,2000,5000,10000) und mir berichten ob er durchgelaufen ist? 1000 & 2000 lief soweit meist problemlos aber wie zuvor berichtet erhängt er sich bei mir bei höheren Werten für imax und dies ist mein zu lösendes Problem...
Dank & Gruß
Robert
|
|
|
Andy386 |
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 02.09.2009, 00:14
Titel:
|
|
für imax=1000 läufts bei mir fix durch, für 5000 hab ich jetzt ein paar Minuten gewartet... kam kein Ergebnis. Wie lange dauert ne Berechnung etwa für imax=5000?
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 02.09.2009, 09:39
Titel:
|
|
Ich habe mal einen Laufzeittest begonnen. Dazu einen Wrapper geschrieben und IMAX übergeben. Eigentlich wollte ich prüfen ob die überproportional ansteigende Laufzeit etwas mit Speicherproblemen zu run hat. Aber PATH wir nicht so sehr gross, dass es eine Rolle spielt. Nun erhalte ich aber mir R2009a auf Windows XP folgende Ergbnisse:
Interesant, nicht? Komplexe Ergebnisse mit imax=4000! Könnte das was erklären?
Andreas
Beschreibung: |
|
Download |
Dateiname: |
pricepath.m |
Dateigröße: |
1.41 KB |
Heruntergeladen: |
492 mal |
Beschreibung: |
|
Download |
Dateiname: |
control_pricepath.m |
Dateigröße: |
107 Bytes |
Heruntergeladen: |
397 mal |
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 02.09.2009, 09:43
Titel:
|
|
Wenn ich die Laufvariable i durch ii ersetze läuft alles viel schneller.
Niemals komplexe Zahlen, i, j, I, J als Laufvariablen benutzen!
Andreas
|
|
|
Roberzen |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.09.2009, 21:45
Titel:
|
|
Hallo Andreas,
vielen Dank für dein Posting. Auch unter Berücksichtigung der Änderung der Laufvariablen i zu ii läuft der Code bei mir unglaublich lang. (siehe unten - imax = 5000 läuft gerade noch..)
Interessant das die Ergebnisse z.T. komplexe Zahlen werden (Bei mir bei imax = 2000, 4000). Trotz allem wird der Mittelwert anscheinend korrekt ermittelt.. Ich verstehe nur nicht warum das so unglaublich lange dauert, bzw. die Berechnungszeit so stark variiert..
Ich bin für weitere Vorschläge und Hilfen sehr dankbar!
Gruß
Robert
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 03.09.2009, 08:44
Titel:
|
|
In der Tat merkwürdig. Merkwürdig auch, dass der Code bei mir gerade langsamer gelaufen ist als gestern und auch überhaupt bei mehrfachem ausführen immer anders. Trotzdem hat das was mit den komplexen Werten irgendwie zu tun. Ich schaue gleich noch mal tiefer rein.
Bitte noch MATLAB Version und Betriebssystem angben.
Andreas
|
|
|
Roberzen |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.09.2009, 09:17
Titel:
|
|
Guten Morgen Andreas,
ich hatte heute Nacht noch einen Einfall. Die imaginären Zahlen kommen durch das Wurzel ziehen von negativen Zahlen in der Simulation der Volatilität. Wenn man eine Überprüfung der Volatilität einbaut die Null gesetzt wird, wenn sie kleiner Null wird läuft der Code fix durch!
Ich weiß allerdings nur nicht, ob die Simulation dann noch inhaltlich korrekt ist. Da müßte ich in der Fachliteratur nochmal recherchieren.. Aber dank dir vielmals! Ohne deinen Hinweis auf das komplexe Attribut wäre ich nicht weitergekommen!
Version 7.4.0.287 (R2007a), Windows XP
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 03.09.2009, 09:50
Titel:
|
|
Richtig! Genau jetzt hätte ich gefragt warum die Dinger negativ sind. Das ist aber wirklich Therorie. Dürfen Volatilitäten negativ sein? Ist es OK eine 0 zu setzen oder kleistert das nur en anderes Problem zu?
|
|
|
Roberzen |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.09.2009, 10:15
Titel:
|
|
Hallo Andreas,
Negative Volatilitäten machen keinen Sinn. Die Volatilität beschreibt die Schwankung von Aktienkursen. Aktienkurse wären konstant, wenn die Volatilität Null ist und schwanken je mehr desto höher die Volatilität ist. Wo ich mir allerdings nicht sicher bin ist, ob man die Entwicklung der Volatilität quasi bei Null begrenzen kann. Ich werde das mal mit meinem Betreuer absprechen, bzw. schauen ob ich in der Literatur was dazu finde.
Dank & Gruß
Robert
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|