早上好。我是新来的。在发布之前,我搜索了类似的问题,但我发现仅使用不同的编程语言类似的问题,但是发现的问题不完整。
好的,我的问题是找到一个 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 步存储在一个数组数组中。因此仍然是解决我的问题的最后一步:如何绘制这些数据?