R

布朗運動模擬 - 縮放問題

  • July 13, 2016

我正在嘗試為 500 次觀察模擬一些 BM。

我根據需要得到了相關的增量,它們並不完全是 N(0,1),所以我將它們標準化 (x-mean(x))/sd(x)。但隨後產生的布朗運動正在做一個奇怪的橢圓形狀並最終回到 x 軸上。所以我模擬了新的 N(0,1) 並再次對它們使用了標準化函式(不應該做任何事情,應該嗎?),但得到了相同的結果。正規化後的模擬BM

知道為什麼嗎?為什麼它們(100 條路徑)都精確地收斂到零?我想它一定是正規化函式,但我不知道為什麼它們會因此而歸零?

我在 R 中的程式碼:

simGBM<-function(cov=TRUE,secs=100,Tau=500,sigma=0.05,neg.cor=0.3){
if(cov==TRUE){
#  s<-apply(simSeries(simCov(secs,neg.cor),Tau),2,normalise)
m<-simCov(secs,neg.cor)
s<-simSeries(m,Tau)
}  else {
s<-matrix(rnorm(secs*Tau),ncol=secs)}


dt<-1/(Tau)
BM<-apply(s,2,function(x) cumsum(sqrt(dt)*x))
GBM<-apply(BM,2,function(x) 100*exp((-0.5*sigma*sigma*dt+sigma*x)))
if(cov==TRUE) {return(list(GBM=matrix(GBM,ncol=secs),cov=m))}
else{return(matrix(GBM(ncol=secs)))}
 }


normalise<-function(x){
 ( (x-mean(x))/sd(x) )
}

s 要麼是我用某種共變異數結構模擬的序列,要麼是純白雜訊。只是為了澄清一下,如果我不使用縮放功能,一切都很好,看起來它工作正常 - 檢查“證明正確”的例子。

好像你在一個正規化向量上執行 cumsum - 這會給你零作為每條路徑的最終值。

此外,在 GBM 中,漂移項 (-sigma^2*dT) 需要隨時間累積。

引用自:https://quant.stackexchange.com/questions/28045