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!!
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