0
を返さずに終了するループのためにI以下のこのコードでは確率過程VBA:値
Function varswap1(s0, r0, sigma0, t) As Double
Rnd (-10)
Randomize (999)
Dim i As Integer, j As Integer, r As Double
Dim stock() As Double, dt As Double
Dim per As Integer
per = WorksheetFunction.Round(t * 252, 0)
ReDim stock(per)
stock(1) = s0
dt = 1/252
For i = 1 To per
stock(i + 1) = stock(i) * Exp((r0 - 0.5 * sigma0^2) * dt + sigma0 * Sqr(dt) * WorksheetFunction.NormSInv(Rnd()))
Next
varswap1 = WorksheetFunction.Average(stock)
End Function
を使用して株価をシミュレートするためのコードのための作品、私は次のと全体にブレークポイントを配置することにより、デバッグを実行していForループは絶対にうまく動作しています。問題は、関数が終了し、#VALUE!
エラーがセルに表示されるループを完了した後です。
このコードで何が問題なのかわかりません。 誰かが私を助けてくれれば感謝します。
'stock'は' per'要素しか持たない(そしてゼロに基づいている)ため、2番目から最後までのループの反復では、 'stock(i + 1)'を評価しようとするときに添字エラーを与える必要があります。 – Comintern
@Cominternはそれを釘付けにしました - また 'Average()'は計算するために最大255の値しか受け付けません。 –
はい。どうもありがとうございます。 – Chinmay