Kod: Zaznacz cały
Sub opcja_amerykanska()
S0 = Cells(1, 2)
K = Cells(2, 2)
T = Cells(3, 2)
r = Cells(4, 2)
sigma = Cells(5, 2)
N = Cells(8, 2)
delta_t = T / N
Cells(9, 2) = delta_t
u = Exp(sigma * delta_t ^ 0.5)
Cells(10, 2) = u
d = 1 / u
Cells(11, 2) = d
p = (Exp(r * delta_t) - d) / (u - d)
Cells(12, 2) = p
Cells(13, 2) = 1 - p
For i = 0 To N
Cells(3, 4 + i) = i
Next i
Dim cena_akcji(1000, 1000) As Double
For i = 0 To N
For j = 0 To i
cena_akcji(i, j) = S0 * u ^ j * d ^ (i - j)
Cells(4 + i - j, 4 + i) = cena_akcji(i, j)
Next j
Next i
Dim cena_opcji(1000, 1000) As Double
For j = 0 To N
cena_opcji(N, j) = put_payoff(cena_akcji(N, j), K)
Cells(4 + N + 2 + N - j, 4 + N) = cena_opcji(N, j)
Next j
For i = N - 1 To 0 Step -1
For j = 0 To i
cena_opcji(i, j) = maks(Exp(-r * delta_t) * (p * cena_opcji(i + 1, j + 1) + (1 - p) * cena_opcji(i + 1, j)), K - cena_akcji(i, j))
Cells(4 + N + 2 + i - j, 4 + i) = cena_opcji(i, j)
Next j
Next i
End Sub
Kod: Zaznacz cały
if(maks(Exp(-r * delta_t) * (p * cena_opcji(i + 1, j + 1) + (1 - p) * cena_opcji(i + 1, j)) > K - cena_akcji(i, j) ),