Simulación – Proceso de Wiener

Frecuentemente este tipo de procesos se denominan “movimiento browniano estándar” son procesos con incrementos estadísticamente independientes y estacionarios.

Propiedades

En un proceso de Wiener w(t):

  1. Si los intervalos de tiempo [s, t] y [s', t'] no intersecan, entonces los incrementos w(t) - w(s) y w(t') - w(s') son variables aleatorias independientes.
  2. Incrementos w(t) - w(s) son variables aleatorias normales con E{w(t) - w(s)} = 0 y Var{w(t) - w(s)} = t - s

De manera que se tiene w(ti+1) - w(ti) ~ N(0, ti+1 - ti) para la simulación

Simulación

Se tiene una variable aleatoria normal w(ti+1) = w(ti) + √(ti+1 - ti) y respecto a los instantes de tiempo ti podemos escoger instantes arbitrarios, como el momento entre dos instantes -suficientemente cortos- cómo para corresponder a otros procesos simulando el sistema.

Movimiento Browniano

Esta dado por la ecuación:

Para la simulación utilizaremos

Movimiento Browniano Geométrico

Esta definido por la ecuación diferencial estocástica

Cuya solución se puede escribir de la siguiente forma

Resultados

Implementación

Random random = new Random();
const int miu = 1;
const double k = 0.1; //0.02

int days = (int) inputDays.Value;
double price = (double) inputPrice.Value;

chart1.Series[0].Points.AddXY(0, price);

for (int i = 1; i <= days; i++)
{
    //price = price * (1 + k * (random.NextDouble() - 0.5));
    // e^((miu - (price*price/2)) * k + price * random)
    double w = miu + Math.Sqrt(k) * (random.NextDouble() - 0.5);
    price = Math.Exp((miu - (price*price/2)) * k + (price * w));
    chart1.Series[0].Points.AddXY(i, price);
}

Descargar Proyecto