Я новичок в VBA и пытаюсь создать триномиальное дерево ценообразования опционов с параметрами от -n
до n
.Как я могу переписать свою функцию VBA с двойным циклом, чтобы обеспечить весь вывод, так как кажется, что он показывает только значение S
.В конце я хочу суммировать все значения и обесценить их, но я не могу пройти мой двойной цикл, предоставляя только один выход.Если я поместил MsgBox между k
и i
, он ничего не возвращает.Пожалуйста, кто-нибудь может помочь заставить это работать, поскольку у меня еще нет опыта работы с VBA.
Public Function LoopTest(S As Double, u As Double, n As Integer)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim St() As Double
ReDim St(2 * n + 1)
For k = 0 To n Step 1
For i = -k To k Step 1
St(i, k) = S * u ^ i
Debug.Print St(i, k)
MsgBox ("DebugToPrint")
' Payoff(i,k) = Application.WorksheetFunction.Max((St(i,k) - 20), 0)
Next i
Next k
' For i from n to 2 step -1
' For j from 1 to n - 2
' Payoff(i - 1, j) = Payoff(i, j) + Payoff(i, j + 1) + Payoff(i, j + 2)
' Next i
' Next k
LoopTest = St()
End Function
Как мне получить вывод
k=0 St = S*u^0
k=1 St = S*u^-1 , St = S*u^0 , St = S*u^1
k=2 St = S*u^-2 , St = S*u^-1 , St = S*u^0 , St = S*u^1 , St = S*u^2
и т. Д., А затем суммировать все впоследствии каквыход