1

今日、自分のソフトウェアでテストを実行していたところ、生成された値の一部が正しくないことがわかりました。

コードをステップ実行することにしましたが、割り当てられたテキストボックスにカーソルを合わせると、ユーザーが入力した値が表示されたにもかかわらず、ユーザーフォームのテキストボックスの値に割り当てた変数が空であることに気付きました。

例えば、

n = BiTimeSteps_TextBox.Value

ホバーしたとき

n = empty

それでも

BiTimeSteps_TextBox.Value = 2

ホバーしたとき。

だから、その直後に数式があるとしましょう

d = n*2 ,

n にカーソルを合わせると空になり、d が 0 になってはならないときに 0 になります。

誰かが私に言った

BiTimeSteps_TextBox.Value = n

認識されるはずですが、まだ認識されていません。

これを引き起こしている可能性があるのは何ですか?

以下の完全なコードを参照してください: (二項ツリーの価格設定方法を使用してオプションの価格を設定することを目的としています)

S = BiCurrentStockPrice_TextBox.Value
X = BiStrikePrice_TextBox.Value
r = BiRisk_Free_Rate_TextBox.Value
T = BiexpTime_TextBox.Value
Sigma = BiVolatility_TextBox.Value
n = BiTimeSteps_TextBox.Value

Dim i, j, k As Integer
Dim p, V, u, d, dt As Double


dt = T / n ' This finds the value of dt
u = Exp(Sigma * Sqr(dt)) 'formula for the up factor
d = 1 - u 'formula for the down factor

'V value of option

'array having the values
Dim bin() As Double 'is a binomial arrays, it stores the value of each node, there is a loop

'work out the risk free probability

p = (1 + r - d) / (u - d)

'probability of going up

ReDim bin(n + 1) As Double

'it redims the array, and n+1 is used because it starts from zero
'------------------------------------------------------------------------------------------------------------------------------
''European Call

If BiCall_CheckBox = True Then

    For i = 0 To n 'payoffs = value of option at final time

        bin(i + 1) = Application.WorksheetFunction.Max(0, (u ^ (n - i)) * (d ^ i) * S - X) 

       'It takes the max payoff or 0

       Cells(i + 20, n + 2) = bin(i + 1) 'to view payoffs on the isolated column on the right

    Next i


End If

'european put

If BiPut_CheckBox = True Then

    For i = 0 To n 'payoffs = value of option at final time

        bin(i + 1) = Application.WorksheetFunction.Max(0, X - (S * (u * (n - i)) * (d * i))) 

        ' European Put- It takes the max payoff or 0

        Cells(i + 20, n + 2) = bin(i + 1) 'to view payoffs on the isolated column on the right

    Next i

End If

For k = 1 To n 'backward column loop

    For j = 1 To (n - k + 1) 'loop down the column loop

        bin(j) = (p * bin(j) + (1 - p) * bin(j + 1)) / (1 + r)

        Cells(j + 19, n - k + 2) = bin(j) 
        '' print the values along the column, view of tree

    Next j

Next k

Worksheets("Binomial").Cells(17, 2) = bin(1) ' print of the value V
BiOptionPrice_TextBox = bin(1)
4

0 に答える 0