In pricing models (black-scholes, local vol, libor market model) the source of uncertainty is Brownian motion. how to simulate it in python? python download
first, lets simulate dWt , we know it’s a gaussian variable with mean 0 and deviation $$ \sqrt {dt} $$
google “python gaussian” and we get to numpy gaussian
so dWt is just np.random.randn()*math.sqrt(dt)
knowing dWt how to we get to Wt at time t? $$ W_T=\int_0^T {dW_t} $$ and integral is just a sum , so $$ W_T = \sum {dW_t}$$ , so final function to calculate W_T is:
import numpy as np dt=0.01 def W(T): sum=0 N=T/dt for i in xrange(int(N)): sum+=np.random.randn()*np.sqrt(dt) return sum
now check calculate properties of brownian motion:
1) mean should be zero
T=1.0 nSim=10000 mean=0 for i in xrange(nSim): mean+=W(T) mean/=nSim print mean
2) variance should be T
T=3.0 nSim=10000 mean=0 for i in xrange(nSim): wt=W(T) mean+=wt*wt mean/=nSim print mean
now lets calculate probability $$ P( W(1)<0 and W(2) < 0) $$
nSim=100000 proba=0 for i in xrange(nSim): w1=W(1) w2=w1+W(1) if w1<0 and w2<0: proba+=1. proba/=nSim print proba