繁体   English   中英

使用VBA绘制GBM的轨迹

[英]Plotting Trajectories of GBM with VBA

早上好。 我是新来的。 发布之前,我搜索了类似的问题,但是我发现只有使用不同的编程语言才有类似的问题,但是发现的问题并不完整。

好的,我的问题是找到一个VBA代码,一旦在Excel中调用它,它只需要我几何布朗运动(GBM)参数(初始股票价值s,到期时间t,波动率z,无风险利率r,股利q ,步数n),我需要重现的轨迹数m。 作为输出,我不想看到没有数字,只有m个重叠轨迹的一个图。

问题在于,我不能逐个单元格地直接写它(然后携带),因为从计算能力的角度来看,这样会太复杂。 它将允许做出大约15条轨迹的东西,仅此而已。 因此,解决方案是在VBA中工作。

我的第一步是

Function GBMSimulation(s As Double, t As Double, z As Double, r As Double, q As Double, n As Double) As Variant
Dim dt, e, dlns, SimVar() As Double
ReDim SimVar(n + 1)
dt = t / n
SimVar(0) = s
For i = 1 To n
Randomize
    e = WorksheetFunction.NormSInv(Rnd())
    dlns = (r - q - z ^ 2 / 2) * dt + z * e * dt ^ 0.5
        SimVar(i) = SimVar(i - 1) * Exp(dlns)
Next i
GBMSimulation = SimVar(n)
End Function

该代码有效; 我的意思是,它给出一个数字,这是ONE GBM的第n步。

改变中

GBMSimulation = SimVar(n)

GBMSimulation = SimVar(i)

我将获得该特定 gbm的第i步。

因此,所有步骤都存储在内存中,这很好。

我的问题是:如何创建GBM的m种不同的实现(即,将m重复我的上一步,将m作为输入),并为每个实现自动创建一个图?

我认为应该考虑一些周期问题,但是我是一个初学者,我不知道该怎么做。

我以为我可以创建一个n维数组,在其中存储GBM步骤,对其进行绘制并重复m次; 问题是我想念语言,正在学习,但是需要时间,有些帮助可能会有用。

仅从图形角度来看,最终结果应该是这样的 (我指定了图形pov,因为在链接中有数字,并且所有工作都是逐个单元进行的,正如我之前所说的,我需要避免这种情况)。

非常感谢。


更新:感谢Tehscript,我的问题已部分解决。 他/她提供的代码允许将m个GBM中的每一个的n个步骤存储在一个数组中。 因此,仍然是解决我的问题的最后一步:如何绘制这些数据?

在函数的最后,将函数定义为数组

GBMSimulation = SimVar()

然后,使用以下代码并使您的函数创建另一个数组。

编辑:您可以从单元格A1,B1,C1,..中输入变量,如果您在下面取消注释,则将在Excel中获得这些结果,就像在Excel中一样。 您也可以制作图表。 另外,如果您想将0到1循环0.01(共计100(101?)次),则可以使用step 0.01 ,例如: for i = 0 To 1 step 0.01 (我应该是double-ps:尝试将其声明为long和走着瞧吧:)

Sub ArrayofArrays()
Dim i As Long, j As Long, m As Long, n As Double, s As Double, t As Double, z As Double, r As Double, q As Double
With Sheets("Sheet1")
    m = .Range("A1").Value
    n = .Range("B1").Value
    s = .Range("C1").Value
    t = .Range("D1").Value
    z = .Range("E1").Value
    r = .Range("F1").Value
    q = .Range("G1").Value
End With
ReDim Arr(m)
For i = 0 To m
    Arr(i) = GBMSimulation(s, t, z, r, q, n)
Next i
For i = 0 To m
    For j = 0 To n
        Debug.Print Arr(i)(j)
        'Cells(i + 2, j + 1) = Arr(i)(j)
    Next j
Next i
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM