【问题标题】:Plotting Average Length of Brownian Motion Realization绘制布朗运动实现的平均长度
【发布时间】:2020-04-01 02:12:38
【问题描述】:

我有一个布朗运动的函数:

mu , sig = 0 , 1 # normal dist 
mu_s = 0 # mu in SDE
sig_s = 1 #sig in SDE
S0 = 10 # starting price of stock
n , m = 1000, 20 # paths = n = how many simulations, m  for discritization
T = 1 # year
dt = 1 # each dt is one day


def ABM(n,m,S0,mu,sigma,dt):
    np.random.seed(999) 
    mu_s = mu # mu in SDE
    sig_s = sigma #sig in SDE
    S0 = S0 # starting price of stock
    n , m = n, m # paths = n = how many simulations, m  for discritization


    sig_db = sig_s*np.sqrt(dt)*np.random.normal(mu, sigma, (n,m+1))
    mu_dt = mu_s*dt*np.ones([n,m+1])

    sig_db[:,0] = 0 # set first column to zero
    mu_dt[:,0] = 0

    dS = mu_dt + sig_db
    S = S0 + np.cumsum(dS,axis=1)


    return n,m,S   
n,m,S = ABM(1000,20,10,0,1,1)

这适用于在一个绘图上绘制单独的实现:

index  = np.arange(0,m+1)*np.ones([n,m+1]) # create indices as S_0, S_1, S_2
plt.plot(index.T,S.T)

但现在我想为每个时间步绘制这些实现的平均路径长度,但我不知道如何去做。算术布朗运动的期望是 E(S)=S_0 + \mu*t 这使我认为我应该以某种方式使用np.mean(),但我似乎无法理解。

TIA

【问题讨论】:

    标签: python-3.x numpy


    【解决方案1】:

    矩阵 S 由 n 个实现组成,您可以通过对实现进行平均得到 E(S(t)),即

    EE = np.mean(S, axis = 0)
    

    同样,您可以通过

    获得方差,也是时间的函数
    np.mean((S - EE)**2, axis = 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多