leider scheint der Code immer noch keine Aktienkurse zu simulieren.
Code: Alles auswählen
#Aktienkurs entwickeln und Ausfallwahrscheinlichkeit
S <- lambda <- matrix(0, n, n)
S[1,1] <- S0
lambda[1,1] <- gamma/S[1,1]
for (j in 2:n) {
S[j,j] <- S[j-1,j-1]*d* exp(lambda[j-1,j-1]*dt)
lambda[j,j] <- gamma/S[j,j]
if (j<3) break
i <- 2:(j-1)
S[i,j] <- S[i-1,j-1]*u* exp(lambda[i,j-1]*dt)
lambda[i,j] <- gamma/S[i,j]
Ok, gedachte habe ich wenn Call == 1 also True dann soll Call[i,j] nicht am Anfang sonder am Ende beginnen bzw. wenn das erstemal k * der Aktienkurs größer als der Callprice ist. Also wenn der Callpreis 100,- ist und Call ==1 ist bei einem Wandelverhältniss von k =10 wird ab einen Kurs von 10,- die Aktie der Kurs zurückgerechnet, auch wenn die Laufzeit noch nicht abgelaufen ist.Bei if (...) kann nur ein Element geprüft werden - if nimmt einfach das erste Element auch wenn Dein Vergleich Call==0 eine ganze Matrix mit
logischen Werten erzeugt. So wie es jetzt im Code steht ist if (Call == 1) ... identisch mit if (Call[1,1] == 1) ...
Beste Grüße
Maxel