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.

Binomial Baum in VBA
#11
Hallo zusammen,

wie ich Anfangs schon geschrieben habe, hatte ich einige Modelle im Internet gefunden, an denen ich mich orientiert habe. Das Bewertungsmodell welches ich verwende ist jedoch deutlich komplexer. 

Ich habe aber einen R-Code gefunden der ziemlich ähnlich mit meinem Model in der Thesis ist und habe versucht das soweit nachzubauen.

.xlsx   R-Code.xlsx (Größe: 100,39 KB / Downloads: 2) Das ist der R-Code. Da er wie gesagt sehr Ähnlich ist, ist mein primäres Ziel wenigstens diesen erstmal zu haben und dann so anzupassen, dass es wie in meiner Thesis ist.  

Viele Grüße
Maxel
Antworten Top
#12
Hallo,

hier eine TEILWEISE Anpassung an VBA: Prüfe alle "End If". Dass sollte mithilfe des R-Editors relativ einfach sein.

CValue ist ein Array, auch das konnte ich nicht anpassen.

Code:
Function CRRCBV(S0 As Double, FV As Double, ttm As Double, r As Double, _
    sigma As Double, L As Double, k As Double, Callprice As Double, rho As Double, _
    C As Double, PD As Double, CallNY As Double) As Double
    
' Definieren der Variablen
Dim dt, n, u, d, p, gamma As Double

dt = 1 / 12
n = ttm / dt + 1
'>>>>>>>>>>>> n = cieling (n)
n = Round(n + 1, 0) '?????????
'Definieren der Parameter

u = Exp((r - (sigma ^ 2) / 2) * dt + sigma * Sqr(dt))
d = Exp((r - (sigma ^ 2) / 2) * dt - sigma * Sqr(dt))
p = 1 / 2


gamma = -Log(1 - PD) * S0

'Definieren der Aktie und Aktienkurse, sowie die Ausfallwahrscheinlichkeit

Dim lambda() As Integer
Dim S() As Double
ReDim S(n + 1, n + 1) As Double

S(1, 1) = S0
lambda(1, 1) = gamma / S(1, 1)

For j = 2 To n
    For i = 1 To j

        If i = j Then

            S(i, j) = S(i - 1, j - 1) * d * Exp(lambda(i - 1, j - 1) * dt)
        Else
            If i < j Then
                S(i, j) = S(i, j - 1) * u * Exp(lambda(i, j - 1) * dt)
                lambda(i, j) = gamma / S(i, j)
            Else
                S(i, j) = 0
                lambda(i, j) = 0
    
            End If
        End If
Next i
Next j


'Wert der Anleihe Berechnen (Rückwärtsschleife):

Dim CCValue As Double
Dim NoCall As Double
Dim Y As Double
Dim Call2 As Double


For j = n To 1 Step -1
    For i = 1 To j


        If j = n Then
            CCValue = WorksheetFunction.Max(FV, k * 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)

            If CALLYN = 1 Then

                Call2(i, j) = Max(k * S(i, j), Callprice)
                Y(i, j) = (NoCall(i, j) / Call2(i, j) - 1)
            Else
                If Y(i, j) < 0 Then
                   Y(i, j) = 0
                Else

            If Call2(i, j) = 0 Then
                Y(i, j) = 0

        End If


CCValue(i, j) = Coupon + Exp(-(rho * Y(i, j) * dt) * NoCall(i, j) + (1 - Exp(-rho * Y(i, j) * dt))) * Call22(i, j)


CCValue = CCValue(1, 1)

End Function

mfg
Antworten Top
#13
Vielen Dank!

Das hilft mir wirklich weiter. 

Der CCValue soll auch eigentlich kein Array sein, sondern es soll in jedem Knoten verglichen werden was größer ist. Also der Nennwert (FV) oder der Aktienkurs (s) mal Wandelverhältnis (k). Der größere soll dann in jedem Knoten jeweils in die Formel eingesetzt werden. 

Und der Wert CCValue (1, 1)  ist dann der Wert der Wandelanleihe zum jetzigen Zeitpunkt.

Beste Grüße
Maxel
Antworten Top


Gehe zu:


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