2009-10-18 1 views
15

Sto cercando una libreria python che mi consenta di calcolare elementi di calcolo stocastico, come l'aspettativa (condizionale) di un processo casuale che definirei la diffusione. Ho dato un'occhiata a simpy (simpy.sourceforge.net), ma non sembra coprire i miei bisogni.Libreria di calcolo stocastico in python

Questo è per la prototipazione rapida e la sperimentazione. In java, ho usato con successo la libreria (ora inattiva) http://martingale.berlios.de/Martingale.html.

Il problema non è di per sé difficile, ma ci sono molte cose da fare non banali, semplici (uso efficiente della memoria, tecniche di riduzione variabile e così via).

Idealmente, mi sarebbe in grado di scrivere qualcosa del genere (solo illustrativo):

 
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) 

Qualcuno sa di qualcosa di diverso da reimplementare in NumPy per esempio?

+0

Nota: Si tratta di materiale molto interessante, ma purtroppo non sembra includere percorso/tempo di processi dipendenti: http: // pymc .googlecode.com/svn/doc/index.html) – LeMiz

+0

Fare cose del genere per vivere, posso assicurarti che puoi andare d'accordo con il codice banale (cioè senza tecniche di riduzione della varianza) se usi numeri quasirandom (es. Sequenze di Sobol). –

+0

Lo faccio anche per vivere (e anche a Parigi)! Essere in grado di riutilizzare gli stessi disegni quando si simulano i sottostanti può essere molto utile oltre a ridurre la varianza dello stimatore. E anche le sequenze sobol hanno i loro inconvenienti. Ma ovviamente la domanda era sulla sperimentazione, non sul codice di produzione. – LeMiz

risposta

0

Conosco qualcuno che utilizza Sundials per risolvere problemi stocastici di ODE/PDE, anche se non ne so abbastanza della libreria per essere sicuro che sia appropriato nel tuo caso. Ci sono collegamenti Python per questo here.

+0

Questo è un risolutore PDE, non uno strumento MC. Vorrei poter convertire tutti i miei problemi in PDE di piccole dimensioni ... In questo momento, voglio solo esaminare l'aspetto di alcuni modelli (come ad esempio le traiettorie) – LeMiz

1

Hai guardato sage?

+0

Non ho trovato una simulazione stocastica pacchetto in Sage. – LeMiz

1

Il più vicino che ho visto in Python è PyMC - un'implementazione di vari algoritmi Markov Chain Monte Carlo.

0

Sto lavorando su una libreria python di processi stocastici (inclusi processi di diffusione e alcuni condizionamenti). Dai un'occhiata a this link nella home page di google-project. Saluti!

+0

Questo sarebbe più adatto come commento penso. – arshajii