1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Function CallBinomial(K As Double, T As Integer, S As Double, R As Double, N As Integer, sigma As Double)
Dim u As Variant, d As Variant, q As Variant, esc As Variant, dt As Variant
dt = T / N
u = Exp(sigma * Sqrt(dt))
d = Exp(-sigma * Sqrt(dt))
Dim i As Integer
Dim j As Integer
Dim Price() As Variant
ReDim Price(N)
Dim Cash() As Variant
ReDim Cash(N)
q = (Exp(R * dt) - d) / (u - d)
esc = Exp(-R * dt)
Price(0) = S * (d ^ N)
For j = 1 To N
Price(j) = Price(j - 1) * (u - d)
Next j
For j = 0 To N
Cash(j) = Application.MaxChange(0, Price(j) - K)
Next j
For i = N - 1 To 0 Step -1
For j = 0 To i
Cash(j) = esc * (q * Cash(j + 1) + (1 - q) * Cash(j))
Next j
Next i
CallBinomial = Cash(0)
End Function |
Partager