zF5QF.png

看来X=(mu-0.5*sigma**2)*t+(sigma*W) ###geometric brownian motion####

而不是X=(mu-0.5*sigma**2)*dt+(sigma*sqrt(dt)*W)

因为T代表时间范围,我认为t应该是t = np.linspace(0, T, N)

现在,根据这些Matlab示例(here和here),它出现了W = np.random.standard_normal(size = N)

W = np.cumsum(W)*np.sqrt(dt) ### standard brownian motion ###

不是W=(standard_normal(size=Steps)+mu*t)

请检查一下数学,不过,我可能错了。

所以,把它们放在一起:import matplotlib.pyplot as plt

import numpy as np

T = 2

mu = 0.1

sigma = 0.01

S0 = 20

dt = 0.01

N = round(T/dt)

t = np.linspace(0, T, N)

W = np.random.standard_normal(size = N)

W = np.cumsum(W)*np.sqrt(dt) ### standard brownian motion ###

X = (mu-0.5*sigma**2)*t + sigma*W

S = S0*np.exp(X) ### geometric brownian motion ###

plt.plot(t, S)

plt.show()

收益率

xnYW3.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐