Full Ito Script

import random import numpy as np def generate(iterations, time=0, vol=0.1, init=0, generator=None): def gen(): return random.normalvariate(0,1) if generator == None:generator = gen if not callable(time): _time = time def func(ans): return _time time = func if not callable(vol): _vol = vol def func2(ans):return _vol vol = func2 ans = [init] for i in range(iterations): dt = time(ans) cvol = vol(ans) ans.append(ans[len(ans)-1]+dt + generator()*cvol) pass return ans def generate_multiple(iterations, time, vol, init): rng = np.random.default_rng(seed=42) if not callable(time): _time = time def func(ans): return _time time = func if not callable(vol): _vol = vol def func2(ans):return _vol vol = func2 means = [0 for p in init] ans = [init] for i in range(iterations): dt = time(ans) cvol = vol(ans) samples = rng.multivariate_normal(mean=means, cov=cvol, size=1) for item in samples: last = ans[-1] next = [] for index,val in enumerate(item): next.append(last[index]+dt[index]+val.item()) pass ans.append(next) pass pass return ans def brownian_bridge(iterations): series = generate(iterations) result = [] #return series for i in range(len(series)): result.append(series[i]-(i/iterations)*series[-1]) return result test = generate_multiple(10, [0,0], [[1,0],[0,1]], [0,0]) '''from davinci.python import val test = [{"value":p} for p in brownian_bridge(100)] val.set('data', test)'''