Function AmericanPut(S, K, r, u, d, n)
Const S=30
Const K=30
Const u=1.0062
Const d=0.003
Const r=0.003
Const n=252
delta_t = T / n
up = S * (1 + u)
down = S * (1 - d)
rf = r * delta_t
q_up = (rf - down) / (up - down)
q_down = 1 / q_up
Dim OptionReturnEnd() As Double
Dim OptionReturnMiddle() As Double
ReDim OptionReturnEnd(n + 1)
For State = 0 To n (循环变量state从0到n)
OptionReturnEnd(State) = Application.Max(K - S * up ^ State * down ^ (n - State), 0)
Next State
For Index = n - 1 To 0 Step -1 (循环变量index从n-1到0,步长为-1)
ReDim OptionReturnMiddle(Index)
For State = 0 To Index
OptionReturnMiddle(State) = Application.Max(K - S * up ^ State * _
down ^ (Index - State), q_down * OptionReturnEnd(State) + q_up * _
OptionReturnEnd(State + 1))
Next State
ReDim OptionReturnEnd(Index)
For State = 0 To Index
OptionReturnEnd(State) = OptionReturnMiddle(State)
Next State
Next Index
AmericanPut = OptionReturnMiddle(0)
End Function
这个是我编的 ,有哪些错误 ,敬请大家给予指教,不胜感激