首页 > 解决方案 > 布朗运动的桥采样

问题描述

我正在为布朗运动生成桥采样代码以模拟样本路径,但我的答案一直都是零。我在下面有我的代码和图片算法。

#Brownian bridge for GBM
 Z<-rnorm(1, mean=0,sd=1)
 T=1
 W_[0]=0
 W_[T]=sqrt(T)*Z
 k=5
 j<-2^(k-1)
 W_=rep(NA,nt-1)
 for(k in 1:K){
 h=h/2
 for(j in 1:j){
  Z<-rnorm(1,mean=0,sd=1)
  W_[2*(j-1)*h]=0.5*(W_[2*(j-1)*h]+W_[2*j*h])+sqrt(h)*Z
 print(W_[2*(j-1)*h])
 }
 }

算法如下: 在此处输入图像描述

标签: r

解决方案


如果我没记错公式,在 Python 中应该是这样的:

import numpy as np
import pandas as pd

# Samples a Brownian bridge in the [a,b] interval, see https://en.wikipedia.org/wiki/Brownian_bridge#General_case
def BB(
    T: int = 252,
    a: float = 0,
    b: float = 0,
    alpha: float = 0,
    sigma: float = 1
) -> pd.Series:
    X0 = a
    X = pd.Series([X0])
    t1 = 0
    t2 = T
    for i in np.arange(1, T):
        t = i
        mu = (a + (t - t1)/(t2 - t1)*(b - a))
        s = ((t2 - t)*(t - t1)/(t2 - t1))
        ei = np.random.normal(alpha+mu, sigma+s)
        X.loc[i] = ((T - t)/T**0.5)*ei*((t/(T-t))**0.5)
    XT = b
    X[T] = XT
    return X

展示下:

from matplotlib import pyplot as plt
plt.plot(BB(a=0,b=0, T=100))

推荐阅读