Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Rückwärtsschleife Binomial
#1
Hallo Leute,

ich habe folgenden Binomial-Code. Sobald der Baum entwickelt ist muss denr Weg/Baum von hinten anfangend, zum ersten Wert zurück gehen (rekursion) und jeweils diskontiert werden.

Ich habe schon ein wenig versucht aber leider hat er nach kurzer Zeit beim rückwärtsgehen immer einen Bugg. Ich bekomme das mit den For schleifen nicht passend hin.

Kann mir einer von euch da weiterhelfen?

Vielen Dank im Vorraus!!
Code:
 'Baum aufbauen
 
 ReDim a(1 To (2 ^ (n + 1)) - 1, 0 To n)
 fL = 1 / fU
 gamma = -Log(1 - pd) * p0
 a(UBound(a, 1) \ 2 + 1, 0) = p0
 For j = 0 To UBound(a, 2) - 1
     k = 2 ^ (n - j - 1)
     For i = 1 To UBound(a, 1)
         If Not IsEmpty(a(i, j)) Then
            lambda = gamma / a(i, j)
            a(i - k, j + 1) = a(i, j) * fU * Exp(lambda)
            a(i + k, j + 1) = a(i, j) * fL * Exp(lambda)
         End If
     Next i
 Next j
 
'Hier beginnt die rekursion
Redim CCValue(i+1,j+1) as double

For j = 1 To i - 1
 For i = 1 To j

 If j = n Then
 CCValue(i, j) = WorksheetFunction.Max(FV, cr * S(i, j))
 Else
NOCall(i, j) = Exp(-r * dt) * (Exp(-lambda(i, j) * dt)) * (p * CCValue(i, j + 1) + (1 - p) * CCValue(i + 1, j + 1)) + (1 - Exp(-lambda(i, j) * dt)) * (1 - L) * FV
 
 coupon = Exp(-(r + lambda(i, j)) * dt) * c * FV * (ttm / n)
 End If
 

Next i
     Next j
Antworten Top
#2
Hallo Maxel,

Ich bezweifle, dass Du jemanden findest, der Deinen Code nachvollziehen und korrigieren mag.
Ein paar getestete Excel Algorithmen zu Binomialbäumen kannst Du hier herunterladen und dann als Beispiel verwenden:
http://sulprobil.com/Get_it_done/Control...tions.html

Viele Grüße,
Bernd P
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste