Verfasst am: 13.03.2011, 02:38
Titel: Nichtlineare Optimierung mit fmincon
Schönen guten Abend,
ich hoffe jemand könnte eine Idee zu folgendem Problem haben. Es hat zwar einen finanzmathematischen Hintergrund, läuft jedoch auf ein Optimierungsproblem hinaus.
Ich habe eine Exchange Option (das ist eine Option, die einem das Recht gibt, eine Aktie gegen eine andere zu tauschen). Der Wert dieser Option hängt von verschiedenen Parametern ab. Nun gilt es für einen gegebenen Wert diese Parameter zu ermitteln.
Hier die Formel zur Ermittlung des Preises:
Code:
%abgepeichert unter m-file exchangecallQ3
function[CallEX] = exchangecallQ3(S1,S2,x,T)
S1 und S2 sind Aktienpreise, T ist die Laufzeit und x ist ein Vector der die zu ermittelnden Parameter enthält (3 Stück). Nun ist ein Preis von $10.7 gegeben. Daher würde ich versuchen, folgende Funktion zu minmieren:
Code:
%abgespeichert in m-file objfun
function fval = objfun(x)
fhandle1 = @(x) exchangecallQ3(93.4,112.5,x,1);
fval = (fhandle1(x) - 10.7)^2;
Für x(1) und x(2) habe ich lower bounds of 0 und upper bounds of Inf gesetzt, da volatilität nicht kleiner als 0 aber (theoretisch) unendlich hoch sein kann.
451.2125 erhält man durch 10.7^2. Also eigentlich wurde maximiert anstatt minimiert. Was mach ich falsch? Für Tips bin ich sehr dankbar!
woraus schließt du, dass maximiert wurde? Ich würde eher vermuten, dass dein Startwert ein lokales Minimum war und du von diesem daher nicht weggekommen bist. Es könnte helfen, einen Startwert zu wählen, der näher an der tatsächlichen Lösung liegt.
Zudem sind die nichtlinearen Nebenbedingungen meines Erachtens unnötig, da du sie schon über die Schrankennebenbedingungen abgedeckt hast.
Grüße,
Harald
wiesbi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.03.2011, 18:40
Titel:
Hallo,
vielen Dank Harald. Ich komme dem gewünschten Ergebnis näher. Ich will nun folgende Funktion minimieren:
Dieses Ergebnis sieht auf den ersten Blick ganz vernünftig aus. Jedoch reagieren die Werte extrem sensible auf die Auswahl der Startwerte in x0. Ein Bsp.:
Meine theoretischen Kenntnisse in Optimierung sind eher mau. Programmiere ich falsch? Habe ich die falsche Optimierungsmethode benutzt?
Wenn mir hier noch jemand einen Ratschlag geben kann, wäre das super.
VG
wiesbi
wiesbi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.03.2011, 23:17
Titel:
problem ist gelöst. die präsentierte antwort ist richtig, es gibt allerdings multiple solutions, da x(2) and x(3) so verändert werden können, dass mit verschieden inputs die objective function den selben wert annimmt. so viel dazu...
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
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.