WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab-Funktion cashbybls

 

AnnaMatlab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2015, 09:33     Titel: Matlab-Funktion cashbybls
  Antworten mit Zitat      
Hallo,

ich stoße gerade mal wieder an meine Matlab-Kenntnisse und hoffe auf Eure Hilfe. Ich soll eine Cash-or-Nothing Option (Black-Scholes Modell) mit Matlab bewerten und komme mit der Funktion cashbybls() einfach nicht klar.

Meine Parameter sind wie folgt: S0=100, K = 120; r = 0.05; q = 0; T = 0.1; Sigma = 0.2;

Hierfür bräuchte ich den genauen Wert, denn in meinem Paper steht als Referenwert nur "0.273306496..." und genau die hinteren Kommastellen bräuchte ich.

Könnt ihr mir helfen?

Vielen Dank,
lg Anna


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2015, 10:04     Titel:
  Antworten mit Zitat      
Hallo,

was hast du denn bisher versucht?
In der Hilfe sind ja die Eingabeargumente erklärt und es gibt auch ein Beispiel. Das musst du dann übertragen.
Mir fehlen da auch noch Informationen, z.B. ob es um Put oder Call geht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AnnaMatlab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2015, 10:41     Titel:
  Antworten mit Zitat      
Hallo Harald,

es sollte um eine Call-Option gehen. Aber ich bekomme es einfach nicht zu übertragen...daher schreibe ich ja verzweifelt hier meine Frage und bin um jeden Ratschlag dankbar Wink

Ich habe auch schon versucht, es über die analytischen Formeln zu berechnen, aber auch da komme ich nicht auf den richtigen Wert.

Vermutlich kenne ich mich mit den Cash-or-Nothing-Optionen auch einfach viel zu wenig aus...

Kommst Du auf den richtigen Wert und kannst mir helfen?

Viele Grüße,
Anna
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2015, 18:20     Titel:
  Antworten mit Zitat      
Hallo,
Zitat:

Ich habe auch schon versucht, es über die analytischen Formeln zu berechnen, aber auch da komme ich nicht auf den richtigen Wert.

Dann zeig doch bitte mal, was du da gerechnet hast. Vielleicht lässt sich der Grund für die Abweichung ja finden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AnnaMatlab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2015, 07:30     Titel:
  Antworten mit Zitat      
Ich hab es mit dem Code so probiert, aber damit bekomme ich für den Call und Put den selben Wert heraus. Vielen Dank schonmal für Deine Hilfe Harald!

Code:
clc; clear all;
close all;

S0 = 100;
K = 120;
r = 0.05;
q = 0;
T = 0.1;
sigma = 0.2

d1 = (log(S0/K) + (r - q + 0.5 * sigma * sigma) * T)/(sigma + sqrt(T));
d2 = d1 - sigma * sqrt(T);

Call = exp(-r * T) * normpdf(d2,0,1);
Put = exp (-r * T) * normpdf(-d2,0,1);


Damit bekomme ich einen Call und Put von "0.366012028649172".

Viele Grüße
edit winkow: bitte code umgebung benutzen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.10.2015, 08:17     Titel:
  Antworten mit Zitat      
Hallo,

bei d1 muss es im Nenner * statt + heißen, oder?
Die Normalverteilung ist symmetrisch, also kein Wunder, dass bei der PDF das gleiche herauskommt. Hast du vielleicht die CDF gemeint?

Ich habe jedenfalls mal direkt die Formeln von
https://en.wikipedia.org/wiki/Binary_option#Cash-or-nothing_callgenommen.

Code:
d1 = (log(S0/K) + (r - q + 0.5 * sigma * sigma) * T)/(sigma * sqrt(T));
d2 = d1 - sigma * sqrt(T);

Call = exp(-r * T) * normcdf(d2)
Put = exp (-r * T) * normcdf(-d2)

Da bekomme ich 0.0023.

Der Größenordnung nach könnte ich mir vorstellen, dass Asset-or-nothing gemeint war.
Code:
Call = S0 * exp(-q * T) * normcdf(d1)
Put = S0 * exp (-q * T) * normcdf(-d1)

Auf die Weise bekomme ich 0.2785.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AnnaMatlab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2015, 08:44     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für Deine schnelle Antwort und Hilfe. Mir war tatsächlich nicht bewusst, dass ich "normcdf" benutzen muss, da lag vermutlich der erste Fehler...

Also in dem Paper ist von "Cash-or-nothing Option" die Ree, aber es ist sonst eben leider absolut nichts angegeben. Ich habe es nun so versucht:

CallCoN = K * exp(-r * T) * normcdf(d2,0,1)

und damit bekomme ich tatsächlich auch den Referenzwert: 0.273306496496870.

Wenn ich ehrlich bin, ist mir aber nicht klar, wieso ich das mit K multiplizieren muss. Die Payoff-Funktion einer Cash-or-Nothing-Option sieht ja einen vorab definierten Betrag A vor, sofern ein zuvor definiertes Ereignis am Ende der Laufzeit eintritt. In dem Paper wurde speziell für A, der Wert K gewählt. Gehen wir also von einer Spekulation auf einen steigenden Aktienkurs aus und tritt die am Ende der Laufzeit ein, so hat die Payoff-Funktion eine Auszahlung von V_Call(T)=K. Mir ist aber nicht klar, wieso ich den Referenzwert von 0.2733 erhalte, wenn ich die analytische Formel noch mit K multipliziere.

Hast Du eine Idee?

Lieber Harald, vielen Dank aber für Deine Hilfe - das hat mir sehr weitergeholfen!

Liebe Grüße,
Anna
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.10.2015, 09:00     Titel:
  Antworten mit Zitat      
Hallo,

ich hatte ehrlich gesagt zuvor noch nichts von dieser Cash-Or-Nothing - Option gehört, insofern tue ich mir da auch schwer.
Auf der Wiki-Seite steht "This pays out one unit of cash [...]". Wenn also K ausgezahlt werden soll, wäre es naheliegend, mit K zu multiplizieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AnnaMatlab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2015, 09:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja genau so ging es mir auch, das wurde in meinem Paper auch nur am Rande erwähnt. Trotzdem wollte ich es einfach verstehen...

Aber jetzt macht das alles Sinn und ich kann wieder weiterarbeiten.

Vielen vielen Dank für Deine Hilfe!
Lg
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.