r - 布朗运动的桥采样
问题描述
我正在为布朗运动生成桥采样代码以模拟样本路径,但我的答案一直都是零。我在下面有我的代码和图片算法。
#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])
}
}
解决方案
如果我没记错公式,在 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))
推荐阅读
- c++ - 当我不使用 invalid_argument 时,throw 语句显示错误
- opencv -
.traineddata 未找到(即使它位于正确的文件夹中) - c# - 删除文本文件中的重复记录
- react-native - 仪表板导航器屏幕中的 2 个标题
- mysql - 如何在具有大量连接的查询中使用索引以使其更快?
- javascript - XMLHttpRequest 状态 0 并返回空响应文本
- android - 使用android studio向android应用添加UPI支付,UPI(统一支付接口)集成android
- angular - 预计间谍已被调用
- reactjs - TypeScript 无法识别属性的类型是否正确
- css - 悬停时问题链接文本抖动(改变大小/重量)