Estoy buscando una biblioteca de Python que me permita calcular material de cálculo estocástico, como la expectativa (condicional) de un proceso aleatorio Definiría la difusión. Eché un vistazo a simpy (simpy.sourceforge.net), pero no parece cubrir mis necesidades.Biblioteca de cálculo estocástico en python
Esto es para prototipos rápidos y experimentación. En java, utilicé con cierto éxito la biblioteca http://martingale.berlios.de/Martingale.html (ahora inactiva).
El problema no es difícil en sí mismo, pero hay cosas mucho más triviales, repetitivas (uso eficiente de la memoria, técnicas de reducción variable, etc.).
Idealmente, sería capaz de escribir algo como esto (únicamente ilustrativo):
def my_diffusion(t, dt, past_values, world, **kwargs): W1, W2 = world.correlated_brownians_pair(correlation=kwargs['rho']) X = past_values[-1] sigma_1 = kwargs['sigma1'] sigma_2 = kwargs['sigma2'] dX = kwargs['mu'] * X * dt + sigma_1 * W1 * X * math.sqrt(dt) + sigma_2 * W2 * X * X * math.sqrt(dt) return X + dX X = RandomProcess(diffusion=my_diffusion, x0 = 1.0) print X.expectancy(T=252, dt = 1./252., N_simul= 50000, world=World(random_generator='sobol'), sigma1 = 0.3, sigma2 = 0.01, rho=-0.1)
¿Alguien sabe de algo más que reimplementar en numpy por ejemplo?
Nota: Este es un material muy interesante, pero por desgracia, no parece incluir los procesos dependientes de la trayectoria/hora: http: // pymc .googlecode.com/svn/doc/index.html) – LeMiz
Haciendo cosas como esta para ganarse la vida, puedo asegurarle que puede llevarse bien con un código trivial (es decir, sin técnicas de reducción de varianza) si usa números cuasialeatorios (p. ej. Secuencias de Sobol). –
¡También hago eso para vivir (y en París también)! Ser capaz de reutilizar los mismos dibujos cuando se simulan sus subyacentes puede ser muy útil además de reducir la varianza del estimador. Y las secuencias de Sobol tienen sus inconvenientes, también. Pero, por supuesto, la pregunta era sobre la experimentación, no el código de producción. – LeMiz