delta_t=(T-t)/n;
d=exp(-sigma*delta_t^0.5);
u=1/d;
a=ceil(log(L/(S*d^n))/(log(u/d)));
b=floor(log(U/(S*d^n))/(log(u/d)));
p=(exp(r*delta_t)-d)/(u-d);
q=1-p;
m=m1+m2;
DKOUTSUM=0;
for j=a:b
B(1)=chooser_imp(n,j-m1);
A(1)=chooser_imp(n,j+m2);
for i=1:ceil(n/m)
B(2*i)=chooser_imp(n,j+i*m);
A(2*i)=chooser_imp(n,j-i*m);
B(2*i+1)=chooser_imp(n,j-i*m-m1);
A(2*i+1)=chooser_imp(n,j+i*m+m2);
end
Nt=0;
for i=1:ceil(n/m)
Nt=Nt+(-1)^(i+1)*(A(i)+B(i));
end
Nnt=chooser_imp(n,j)-Nt;
DKOUT=Nnt*p^j*q^(n-j)*max(S*u^j*d^(n-j)-X,0);
DKOUTSUM=DKOUTSUM+DKOUT;
end
DKOUTfinal=exp(-r*(T-t))*DKOUTSUM
ich würde jetzt ganz gerne anhand von veränderungen von i und j (ansteigend bis 40) mir die resultate ausgeben lassen. Die Matrix A zu Beginn kann ruhig quadratisch bleiben, also i und j gemeinsam steigen. Eine einfache for Schleife funktioniert irgendwie nicht.
Das Programm erstellt eine Differenzenmatrix und berechnet aus der kleinsten Differenz einen Preis. Wenn ich die Differenzenmatrix ausweite (über i und j) kommt eventuell eine kleinere Differenz hinzu und die Preisgüte ändert sich. Aber wie verändere ich i und j am anfang um die Preise hinterher aufgelistet zu bekommen?
Ziemlich komplex ich weiß ...
Kann trotzdem jemand helfen?
Die for Schleife hat nicht funktioniert, weil Matlab an der Stelle [M] bzw. mm gemeckert hat. Dimensions! Da müsste ich vielleicht noch einen Index einfügen.
DKOUTfinal soll gespeichert werden. Das bedeutet jede Matrix Kombination oben soll zu einem DKOUTfinal Preis führen. Teilweise können das auch dieselben sein, wenn für eine Matrix Erweiterung oben kein neuer niedrigerer Differenzwert raus kommt.
Könnten Sie mir vielleicht einen ersten Anstoß schicken? Bin grad echt bissle verzweifelt.
Vielen Dank
ich kann das leider nicht testen, da ich chooser_imp nicht habe.
Ansonsten müsste es gehen. Geändert wurden nur die oberen Zeilen und die letzten drei.
Schau dir vielleicht noch die orange unterringelten Stellen an, dort sollte wenn möglich vorbelegt werden.
delta_t=(T-t)/n;
d=exp(-sigma*delta_t^0.5);
u=1/d;
a=ceil(log(L/(S*d^n))/(log(u/d)));
b=floor(log(U/(S*d^n))/(log(u/d)));
p=(exp(r*delta_t)-d)/(u-d);
q=1-p;
m=m1+m2;
DKOUTSUM=0;
for j=a:b
B(1)=chooser_imp(n,j-m1);
A(1)=chooser_imp(n,j+m2);
for i=1:ceil(n/m)
B(2*i)=chooser_imp(n,j+i*m);
A(2*i)=chooser_imp(n,j-i*m);
B(2*i+1)=chooser_imp(n,j-i*m-m1);
A(2*i+1)=chooser_imp(n,j+i*m+m2);
end
Nt=0;
for i=1:ceil(n/m)
Nt=Nt+(-1)^(i+1)*(A(i)+B(i));
end
Nnt=chooser_imp(n,j)-Nt;
DKOUT=Nnt*p^j*q^(n-j)*max(S*u^j*d^(n-j)-X,0);
DKOUTSUM=DKOUTSUM+DKOUT;
end
DKOUTfinal(ind_i, ind_j)=exp(-r*(T-t))*DKOUTSUM;
end end
Ok, rühr dich bei weiteren Problemen. Falls es nicht direkt hiermit zu tun hat, vielleicht am besten in einem neuen Thread.
Grüße,
Harald
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.