Introducción a Movimiento Browniano:

Definición :

El movimiento browniano es el movimiento aleatorio que se observa en las partículas de un medio fluido (líquido o gas), como resultado de choques contra las moléculas de dicho fluido.

Ejemplo de choque de particulas

Definición Matemática:

El movimiento browniano o tambie conocido como proceso Wiener, es un proceso estocástico de tiempo continuo valorado en honor al matemático estadounidense Norbert Wiener por sus investigaciones sobre las propiedades matemáticas del movimiento browniano unidimensional. A menudo también se le llama movimiento browniano debido a su conexión histórica con el proceso físico del mismo nombre observado originalmente por el botánico escocés Robert Brown . Es uno de los procesos de Lévy más conocidos (procesos estocásticos càdlàg con incrementos independientes estacionarios ) y ocurre con frecuencia en matemática aplicada , economía , finanzas cuantitativas , biología evolutiva y física .

Propiedades del Proceso Wiener unidimensional

La funcion de distribución no codicionada, es una distribucion normal \(\mu = 1\) y varianza \(\sigma ^{2} = t\)

La esperanza de \(W_{t}\) es cero \(E(W_{t}) = 0\)

La varianza de \(W_{t}\) es t \(Var(W_{t}) = t\)

De lo anterior se tiene que \(W_{t} = W_{t}-W_{0} \sim N(0,t)\)

Simulaciones Basicas de Movimiento Browniano estandar (Unidimensional)

1 : Generamos tiempos

N = 150

2 : Simulación de desviaciones con \(\sigma ^{2}=1\)

x = rnorm(N, 0 ,1);
x = append(0,x)

3 : Suma acumulada de desviaciones (Parte de \(B_{0} = 0\))

x = cumsum(x);

4 : Gráfica

plot(x, type = "l",xlab = "tiempo", ylab="f(x)",col = "darkblue")

Movimiento Browniano estandar (Bidimensional)

1 : Generamos tiempos

N = 15

2 : Simulación de desviaciones ejes X e Y (\(\sigma_{x}^{2} = \sigma _{y}^{2} = 1\))

xdis = rnorm(N, 0 ,1);
ydis = rnorm(N, 0 ,1);

3 : Suma acumulada de desviaciones (Parte de \(B_{0} = 0\) en ambos ejes)

xdis = cumsum(xdis);
xdis = append(0,xdis);

ydis = cumsum(ydis);
ydis = append(0,ydis);

4 : Gráfica

plot(xdis, ydis, type="l",xlab = "f(y)", ylab="f(x)",col = "darkblue")

Movimiento Browniano estandar (Tres dimensiones)

1 : Generamos tiempos

N = 50

2 : Simulación de desviaciones ejes X, Y y Z (\(\sigma _{x}^{2} = \sigma_{y}^{2} = \sigma _{z}^{2} = 1\))

xdist = rnorm(N, 0 ,1);
ydist = rnorm(N, 0 ,1);
zdist = rnorm(N, 0 ,1);

3 : Suma acumulada de desviaciones (Parte en \(B_{0} = 0\) cada eje)

xdist = cumsum(xdist);
xdist = append(0,xdist);

ydist = cumsum(ydist);
ydist = append(0,ydist);

zdist = cumsum(zdist);
zdist = append(0,zdist);

4 : Gráfica

scatterplot3d(xdist,ydist,zdist,type = "l",xlab="f(x)",ylab="f(y)",zlab="f(z)", col.axis="darkgray")

Movimiento browniano geométrico(GBM)

El Movimiento Browniano geométrico se define como un proceso estocástico continuo tal que

\(x(t) = z_{0}exp(\mu t + \sigma W(t) )\) donde “\(W(t)\)” es un proceso Wiener.

Algunas de sus propiedades son:

Satisface la siguiente ecuación diferencial estocástica (EDE): \(dx_{t} = \mu x_{t} dt + \sigma x_{t} d W_{t}\)

Valor esperado \(E(x(t)) = z_{0}exp(\mu t + \frac{1}{2} \sigma^{2}t)\)

Varianza \(Var(x(t)) = z_{0}^2 exp(2 \mu t + \sigma^{2}t)(exp(\sigma^2t)-1)\)

Simulación de GBM

m <- 10
n <- 1000
mu <- 0.15
sigma <- 0.3
s0 <- 10
T1 <- 5
set.seed(70967993)
MotiBr <- matrix(rnorm(m*n, 0, sqrt(T1/n)), n, m)
MotiBr <- apply(MotiBr, 2, diffinv)
temp <- (0:n)/n*T1
MotiBr <- (mu - sigma^2/2)*temp + sigma*MotiBr
MotiBr <- t(s0*exp(MotiBr))
#Creo data.frame para usar ggplot 2
dat <- data.frame(X = as.vector(MotiBr),
                  idx = seq(nrow(MotiBr)),
                  tiempo = rep(seq(ncol(MotiBr)), each = nrow(MotiBr)))
ggplot(dat, aes(x = tiempo, y = X, group = idx)) + 
geom_point(alpha = 0.5,color = "#6684A1")+  geom_line()

Es posible usar la libreria “sde” para generar distintos tipos de movimiento browniano de manera automática, a diferencia del código anterior.

set.seed(2019)
a = BBridge(x=0, y=0, t0=0, T=1, N=100)
b = BM(x=0, t0=0, T=1, N=100)
c = GBM(x=1, r=0, sigma=1, T=1, N=100)
par(mfrow=c(2,2))
plot(BM(a),xlab = "tiempo", main="Movimiento Browniano")
plot(BBridge(b),xlab = "tiempo", main="Brownian Bridge")
plot(GBM(c),xlab = "tiempo", main="Movimiento Browniano Geometrico")