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

Preis einer Option mit Monte Carlo + Brownsche Brücke

 

yannis98
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2020, 11:35     Titel: Preis einer Option mit Monte Carlo + Brownsche Brücke
  Antworten mit Zitat      
Hallo. ich versuche in Matlab einen Code für eine Monte Carlo Simulation zu schreiben, die den exakten Wert einer europäischen Call-Option approximiert. Zur Simulation des Aktienkurses möchte ich die Brownsche Brücke (aus Effizienzgründen) benutzen, die ich auch in meinem Code implementiert habe. Der exakte Wert der Option mit Black-Scholes ist 6.89, mit meinem Code komme ich aber auf Werte die deutlich höher sind (ca. 120). Kann sich jemand den Code anschauen und eventuell erklären was ich falsch mache? Das sind die Inputs mit denen ich arbeite:

S0 (Aktienpreis bei t = 0) = 100
K (Strike Preis) = 100
r (Risikoloser Zins) = 0.05
T (Laufzeit) = 0.5
sigma (Volatilität) = 0.2
Pfade (Anzahl der simulierten Pfade des Aktienpreises mit Brownscher Brücke) = 9000


Vielen Dank für eure Hilfe!

Code:
function P=eurocallprice_QMC_BBD(S0,K,r,T,sigma,n,Pfade)
dt=T/n;
timestep=[0:dt:T]';
Wt=zeros(n+1,Pfade);
%Simulate the Brownian motion at T:
eY = randn(1,Pfade);
Wt(n+1,:)= sqrt(T).*eY;
%Simulate the Brownian motion W(t):
for j=2:n
deltat1=(n+1-j)/(n+1-j+1);
eYt = randn(1,Pfade);
Wt(j,:)=deltat1*Wt(j-1,:)+(1-deltat1)*Wt(n+1,:)+sqrt(deltat1*dt)*eYt;
end
BB=Wt;
plot(BB)
SPaths = zeros(n+1, Pfade);
SPaths(1, :) = S0;
for i = 1:n+1
    SPaths(i + 1, :) = SPaths(i,:) .* (1 + r * dt + sigma * BB(i,:));
end
Payoff = zeros(Pfade,1);
Payoff = max(0, SPaths(n+1,:) - K);
P = exp(-r*T) * mean(Payoff);
end
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.01.2020, 13:42     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht genau, was du implementieren willst / sollst, insofern ist das schwierig.
Sollte SPaths nicht mit S0 initialisiert werden statt mit 50?
Was mich aber verwundert ist, dass du die letzte Zeile von Wt initialisierst. Normalerweise verwendet man dafür die erste.
Soll in der for-Schleife wirklich darauf zurückgegriffen werden oder nicht vielleicht eher auf ein Wt(j-2, :) ?

Generelle Empfehlung: schrittweise im Debugging-Modus durchgehen und schauen, was sinnvoll ist oder auch nicht.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
yannis98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2020, 13:59     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort. Ich möchte mithilfe der Brownschen Brücke einen Aktienkurs während der Laufzeit T einer Option simulieren. Mithilfe dieses simulierten Aktienkurses möchte ich eine Monte Carlo Simulation durchführen um den Preis der Option zu approximieren und den erhaltenen Wert mit dem exakten Wert des Black-Scholes Modell zu vergleichen. Der Output der obigen Funktion ist also ein approximierter Preis für die Option wobei es n = 32 Zeitschritte gibt, und 9000 Aktienkurspfade, die durch die Brownsche Brücke simuliert werden.

Nun zu deinen Fragen: Spaths ist mit S0 initialisiert und nicht mit 50.
DIe Brownsche Brücke W(t) ist mir so bekannt, dass W(0) = 0 und der Endwert der Brownschen Brücke W(T) = sqrt(dt) * Z gesetzt wird (Z standardnormalverteilt). Mit diesen beiden Werten werden dann alle restlichen Werte berechnet. Darum habe ich W(t) in der letzten Zeile so initialisiert.

Ich würde mich sehr freuen wenn du mir helfen könntest! Vielen Dank im Voraus!

Mfg

Yannis
Private Nachricht senden Benutzer-Profile anzeigen
 
yannis98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2020, 14:02     Titel:
  Antworten mit Zitat      
Im Anhang findest du die Definition die ich für die berechnung der Werte der Brownschen Brücke benutze.

brownsche brücke definition.PNG
 Beschreibung:

Download
 Dateiname:  brownsche brücke definition.PNG
 Dateigröße:  7.09 KB
 Heruntergeladen:  198 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

sorry wegen S0 und 50, da habe ich nicht genau genug hingesehen.
Aus dem Bild wird für mich nicht klar, wie j, i und k miteinander in Verbindung stehen sollen. Vielleicht liegt hier das Problem.

Ansonsten wie gesagt:
Zitat:
schrittweise im Debugging-Modus durchgehen und schauen, was sinnvoll ist oder auch nicht.


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
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.