R
布朗運動模擬 - 縮放問題
我正在嘗試為 500 次觀察模擬一些 BM。
我根據需要得到了相關的增量,它們並不完全是 N(0,1),所以我將它們標準化 (x-mean(x))/sd(x)。但隨後產生的布朗運動正在做一個奇怪的橢圓形狀並最終回到 x 軸上。所以我模擬了新的 N(0,1) 並再次對它們使用了標準化函式(不應該做任何事情,應該嗎?),但得到了相同的結果。
知道為什麼嗎?為什麼它們(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) 需要隨時間累積。