Attribute VB_Name = "Module2" Public Function mccirbp(rt, a, b, sigma, lamda, t, n, m) Dim r() ReDim r(n - 1) r(0) = rt dt = t / n bpsum = 0 For j = 1 To m cum = rt * dt For i = 1 To n - 1 r(i) = r(i - 1) + (a * (b - r(i - 1)) - lamda * sigma * Sqr(r(i - 1))) * dt + (sigma * Sqr(r(i - 1)) * Application.WorksheetFunction.NormInv(Rnd(), 0, 1) * Sqr(dt)) cum = cum + r(i) * dt Next i bpsum = bpsum + Exp(-cum) Next j mccirbp = bpsum / m End Function Public Function vasicektree(r0, a, b, sg, t, n) dt = t / n Dim p() ReDim p(n) u = sg * Sqr(dt) d = -u For i = 0 To n p(i) = 1 Next For j = n - 1 To 0 Step -1 For i = 0 To j node_r = r0 + (j - 2 * i) * u pb = (a * (b - node_r) * Sqr(dt) - d) / (u - d) If pb > 1 Then pb = 1 End If If pb < 0 Then pb = 0 End If p(i) = (pb * p(i) + (1 - pb) * p(i + 1)) / Exp(node_r * dt) Next i Next j vasicektree = p(0) End Function Public Function cirtree(r0, a, b, sg, t, n) dt = t / n Dim p() ReDim p(n) u = sg * Sqr(dt) x = 2 * Sqr(r0) For i = 0 To n p(i) = 1 Next For j = n - 1 To 0 Step -1 For i = 0 To j node_x = x + (j - 2 * i) * u node_r = node_x ^ 2 / 4 node_rp = (node_x + u) ^ 2 / 4 node_rm = (node_x - u) ^ 2 / 4 pb = (node_r + a * (b - node_r) * dt - node_rm) / (node_rp - node_rm) If pb > 1 Then pb = 1 End If If pb < 0 Then pb = 0 End If p(i) = (pb * p(i) + (1 - pb) * p(i + 1)) / Exp(node_r * dt) Next i Next j cirtree = p(0) End Function