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
![[<<] PriceDerivatives blog](https://www.pricederivatives.com/en/wp-content/uploads/2014/03/cropped-pricederivatives-blog-logo-Copy3.png)