/
Brownian.py
53 lines (36 loc) · 1.13 KB
/
Brownian.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#Weiner process is generated by adding gaussians consecutively.
#W_t-W_S ==> N(0,t-s)
#We are generating a sequential Wiener Process
import numpy as np
import matplotlib.pyplot as plt
import densityfunctions as df
def genrand_seq(n_dims,N_samples):
seq = np.empty((n_dims,N_samples));
mean = 0;
std = 1;
seq = np.random.normal(mean,std,(n_dims,N_samples))
return(seq)
def gen_proc(seq):
proc = np.cumsum(seq,axis=1);
return proc
if __name__ == "__main__":
n_dims = 1;
N_samples = 1000;
seq1 = genrand_seq(n_dims,N_samples);
seq1 = gen_proc(seq1);
seq2 = genrand_seq(n_dims,N_samples);
seq2 = gen_proc(seq2);
plt.plot(np.transpose(seq1))
cdf = df.gen_cdf(seq1[0],100,1)
pdf = df.gen_pdf(seq1[0],100,1)
rho = [-0.95,-0.5, 0, 0.5 ,0.95]
rho = np.array(rho);
rho2 = np.sqrt(1-np.power(rho,2))
for i in range(5):
corr_seq = rho[i]*seq1 + rho2[i]*seq2;
#corr_seq = np.transpose(corr_seq);
q = plt.figure()
plt.plot(corr_seq,seq1,'o');
title = 'Correlation Coefficient - ' + str(rho[i])
q.suptitle(title)
plt.show()