Function binomialtreeputoption (S, K, T, r, vol, N): dt = T / N u = T / N d = 1 / u p = (Math.Exp(r * dt) - d) / (u - d) f = {} for j in range (0 , N+1) : f [(N, j) = max (K - S * (u **( j ) )*( d**(N-j)), 0) for i in range ( N-1; -1;-1): for j in range (0, i+1) : f [( i, j) ] = max(K-S* (u ** (j)) *(d** (i-j)), math.exp( -r *dt)* (p*f[(i+1 , j+1)] + (1-p) * f[( i +1,j)])) return f [ ( 0,0) ] priceput = [None] * 24 Stepput = [None] * 24 i = 0 for N in range(2,70,3): priceput [i] = binomial_tree_put_option(50, 50, 0, 4167, 0, 1, 0, 4, N) Stepput [i] = N Msgbox ("Option put price is {:2f} for {:2d} (N) Steps") (format(price_put[i], Step_put[i])) i = 1 + i End Function End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFunction binomial_tree_put_option(S As Integer, K As Integer, r As Single, vol As Single, T As Single, q As Single, N As Integer) Dim dt As Single Dim u As Single Dim d As Single Dim p As Single dt = T / N u = Exp(vol * sqrt(dt)) d = 1 / u p = (Exp(r - q) * dt - d) / (u - d) Dim i As Integer Dim j As Integer Dim f(0 To N, 0 To N) As Single For j = 0 To N f(N,j)= max((K-(S*u^j*d^(N-j)),0) For i = N - 1 To 0 For j = 0 To i f(i,j)=max(K-S*u^j*d^(i-j),exp(-r*dt)*(p*f(i+1,j+1)+(1-p)*f(i+1,j)) End Function
Function binomial_tree_put_option(S As Integer, K As Integer, r As Single, vol As Single, T As Single, q As Single, N As Integer) Dim dt As Single Dim u As Single Dim d As Single Dim p As Single dt = T / N u = Exp(vol * sqrt(dt)) d = 1 / u p = (Exp(r - q) * dt - d) / (u - d) Dim i As Integer Dim j As Integer Dim f(0 To N, 0 To N) As Single Set f = CreateObject("Scripting.Dictionary") For j = 0 To N f.addjoin(Array(N, j)) = WorksheetFunction.Max(K - (S * (u^(j)) * (d^(N - j))), 0) Next j For i = N - 1 To 0 For j = 0 To i f(join(array(i,j),",")=WorksheetFunction.Max(K-(S*(u^(j))*(d^(i-j))),Exp(-r*dt)*((p*f(join(array(i+1,j+1),","))))+(1-p)*f(join(array(i+1,j),","))) Next j Next i End Function
Dim f() As Single ReDim f(0 To N, 0 To N)
f = {} for j in range(0, N+1): f[(N, j)] = max(K - S * (u * (j)) * (d * (N-j)), 0)
Dim f() As Single ReDim f(0 To N, 0 To N) For j = 0 To N f(N, j) = WorksheetFunction.Max(K - (S * (u ^ (j)) * (d ^ (N - j))), 0) Next j
Function binomial_tree_put_option(S As Long, K As Long, r As Long, vol As Long, T As Long, N As Long) Dim dt, u, d, p As Long dt = T / N u = Exp(vol * Sqr(dt)) d = 1 / u p = (Exp(r - q) * dt - d) / (u - d) For j = 0 To N WorksheetFunction.Combin(N, j) = WorksheetFunction.Max(0, K - (S * (u^(j)) * (d^(N - j)))) Next j For i = N - 1 To 0 WorksheetFunction.Combin(i, j) = WorksheetFunction.Max(K - (S * (u^(j)) * (d^(i - j))), Exp(-r * dt) * (p * WorksheetFunction.Combin(i + 1, j + 1) + (1 - p) * WorksheetFunction.Combin(i + 1, j))) Next i binomial_tree_put_option = WorksheetFunction.Combin(0, 0) End Function
WorksheetFunction.Combinvient faire là?
15 déc. 2020 à 12:48