2016-04-06 15 views
1

Ich verwendete zwei verschiedene Methoden, um das GBM zu simulieren. eine mit der SDE und eine mit der analytischen Lösung für f (t). Aber ich bekomme ein anderes Ergebnis. Ich habe meinen Zufallssamen bereits gesetzt. Ich kann nicht herausfinden, was der Unterschied ist. Danke vielmals!Geometrische Brownsche Bewegungssimulation in R

set.seed(12345) 
f0 <-102 
mu <-(0.05) 
sigma <-0.08 
T <-0.5 
t <- seq(1/365,T,by=1/365) 
n <-length(t) 
#method 1 
f<-numeric(n) 
f<-sapply(t,function(t) f0*exp((mu-0.5*sigma^2)*t+sigma*rnorm(1,mean=0,sd=sqrt(t)))) 
diff <- f- f0 
plot(t,f,type="l") 

#method 2 
dt <- 1/365 
f2<-numeric(n) 
f2[1]<- f0 
delta<-0 
for (i in 2:n) { 
    delta = mu*f2[i-1]*dt+sigma*f2[i-1]*rnorm(1,mean=0,sd=sqrt(dt)) 
    f2[i]=f2[i-1]+delta 
} 
plot(t,f2,type="l") 

enter image description here

Antwort

1

Der Grund, warum verschieden sind, ist, dass die erste Methode ist einfach falsch. Grundsätzlich ist der Prozess, den Sie simulieren, kein kontinuierlicher Prozess, da Sie bei jedem Zeitschritt eine neue Zufallsvariable generieren, während Sie nur das Inkrement und die Summe auf den alten Wert generieren sollten.

Diese Modifikation der ersten Methode wird das Problem beheben:

#method 1 
f<-numeric(n) 
f<-f0*exp(cumsum((mu-sigma*sigma/2)*T/n + sigma*sqrt(T/n)*rnorm(n))) 
diff <- f- f0 
plot(t,f,type="l")