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

Lsqr Methode und das CRR Modell

 

knuck1es
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2011, 11:42     Titel: Lsqr Methode und das CRR Modell
  Antworten mit Zitat      
Hallo erstmal an alle. Ich bin neu in diesem Forum und hoffe jemand von euch kann mir helfen.
Also ich soll ein CRR Modell kalibrieren. Ich habe bis dato die Rückwärtsinduktion zur Berechnung des fairen Preises einer amerikanischen Calloption implementiert. Diese Funktion nennt sich bei mir ac(u,d,n,S,K,r) und gibt mir als Return den fairen Preis des Wertpapiers.

Jetzt ist meine Aufgabe anhand von echten Werten aus dem Finanzmarkt ein Modell zu kalibrieren mithilfe der Least Square Methode. Diese ist schon in Matlab integriert (lsqr). Jetzt ist das Problem, dass ich nicht weiß, ob/wie es geht das ich jetzt aufrufe
LSQR von (ac(u,d,30,1800,2500,1/100)=5.3 und ac(u,d,30,1500,2700,1/100)=1

Ich weiß, dass ich LSQR Ax=b löst. Kann das ganze aber auch mit der Funktion aufrufen und Parameter übergeben. Aber wie ich das jetzt mache weiß ich leider nicht.

Würde mich über Hilfe sehr freuen.
Danke im voraus.
mfg Stefan
Private Nachricht senden Benutzer-Profile anzeigen


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 08.05.2011, 14:44     Titel:
  Antworten mit Zitat      
Hi, du brauchst glaube ich den Befehl polyfit:
Code:


Gruß,

lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
knuck1es
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2011, 15:31     Titel:
  Antworten mit Zitat      
Polyfit ist eine Funktion zum Koeffizienten ausrechnen. Aber meine Fkt ac ist ja kein Polynom oder liege ich hier falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2011, 15:45     Titel:
  Antworten mit Zitat      
Hallo,

für mich sieht das nach zwei nichtlin. (also nichts mit Ax = b) Gleichungen in zwei Unbekannten aus. Das wird z.B. von FSOLVE (Optimization Toolbox) gelöst.

Code:
loesung = fsolve(@fun, startvektor)


mit

Code:
function y = fun(x)

u = x(1);
d = x(2);
y = zeros(2,1);
y(1) = ac(u,d,30,1800,2500,1/100) - 5.3;
y(2) = ac(u,d,30,1500,2700,1/100) - 1;


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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2011, 20:07     Titel:
  Antworten mit Zitat      
Lieber Harald,

so wie du mir das empfohlen hast geht das leider nicht.
Aber nach weiterer Recherche, habe ich die lsqnonlin Funktion gefunden.
Eben zur Annäherung nicht linearer Gleichungen mithilfe der Least Square Methode.
Kann ich die besagte Funktion verwenden? Und wenn ja, wie muss ich das implementieren? Leider ist der besagte Hilfetext noch verwirrender.



Code:

So habe ich fun definiert wie du gesagt hast.
function y = fun(x)

u =x(1);
d = x(2);

y = zeros(2,1);
y(1) = ac(u,d,30,1800,2500,1/100);
y(2) = ac(u,d,30,1500,2700,1/100);
end

und dann habe ich aufgerufen:

 fsolve(@fun,[0,0])
??? Error using ==> ac
Too many output arguments.

Error in ==> fun at 8
y(1) = ac(u,d,30,1800,2500,1/100);

Error in ==> fsolve at 254
            fuser = feval(funfcn{3},x,varargin{:});

Caused by:
    Failure in initial user-supplied objective function evaluation. FSOLVE cannot
    continue.
 



mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2011, 21:35     Titel:
  Antworten mit Zitat      
Hallo,

was gibt deine Funktion ac denn zurück?
An dieser Funktion scheint es zu liegen, also bitte mal die Deklarationszeile posten.

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2011, 22:03     Titel:
  Antworten mit Zitat      
Oh mein Gott. Ich habe echt den Preis Wert nicht zurück geben lassen.....Was für ein Anfängerfehler...
Naja wenn ich jetzt mehr Gleichungen habe, kann ich die einfach zu der Funktion fun hinzufügen?
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2011, 22:17     Titel:
  Antworten mit Zitat      
Ja, es sollten allerdings für fsolve soviele Gleichungen wie Unbekannte sein.

Edit: Muss nicht sein. Siehe "Number of Equations" in
Code:


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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2011, 22:27     Titel:
  Antworten mit Zitat      
So jetzt hab ich das gelöst aber die Werte spielen total verrückt.... Also mit einem richtigen Modell hat das ganze nichts zu tun. Sad

Code:

AmerikanPrice =

 -426.0561


Solver stopped prematurely.

lsqnonlin stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 200 (the default value).


ans =

    1.0477
    1.0276
 


Wenn ich das mit meiner ac funktion ausrechnen lasse sind wir weit weg von realen Beträgen. :/
Meine Hilflosigkeit nervt mich wirklich.
Tut mir Leid.
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.05.2011, 21:27     Titel:
  Antworten mit Zitat      
Hallo,

ich habs mir nochmal angeschaut: nach deinem Post von gestern, 20:07 suchst du nach Nullstellen der Funktion. Du willst das ja aber anderen Werten gleichsetzen, siehe mein Beitrag von gestern, 15:45.

Im Zweifelsfall helfen auch bessere Startwerte.

Grüße,
Harald
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.