Cuando simulo la trayectoria del precio de una acción utilizando el movimiento browniano geométrico, a veces consigo una previsión bastante buena que se ajusta muy bien a los valores reales. Pero si vuelvo a realizar la simulación, los resultados son diferentes. Esto se debe probablemente al proceso aleatorio del movimiento browniano.
¿Existe una forma de ejecutar la misma simulación (la que se ajusta bien a los valores reales) una y otra vez sin obtener resultados diferentes?
Esto es bueno cuando se negocia realmente. Por ejemplo, puede realizar una prueba con algunos datos pasados y compararlos con los valores reales para ver si el modelo funcionó bien o no. Si lo hizo, entonces puede utilizar el mismo modelo para una previsión futura en la que va a comprar y/o vender. Pero si los resultados son diferentes en cada simulación, entonces si desea hacer una previsión futura, no podrá probarlo con datos reales, ya que está previendo el futuro para el que no hay datos.
Aquí está mi código. La mitad de las veces se ajusta a los datos bastante, la otra mitad no tanto.
#from __future__ import division
from random import gauss
from math import exp, sqrt
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
def generate_asset_price(S,v,r,T):
return S * exp((mu - 0.5 * v**2) * T + v * sqrt(T) * gauss(0,1.0))
#or dt instead of T
# return S * exp((mu - 0.5 * v**2) * T + v * sqrt(T) * gauss(0,1.0))
S0 = 12.2 # underlying price
v = 0.114764067
mu = -0.002773523
dt = 0.01 # 1 day
T = 20
n = int(20) # number of steps
S_path=[]
S=S0 # starting price
for i in xrange(1,n+1):
S_t = generate_asset_price(S,v,mu,dt)
S= S_t
S_path.append(S_t)