Instantly share code, notes, and snippets.

Embed
What would you like to do?
Ornstein Uhlenbeck Stochastic Process
import math
import numpy
import random
import decimal
import scipy.linalg
import numpy.random as nrand
import matplotlib.pyplot as plt
"""
Note that this Gist uses the Model Parameters class found here - https://gist.github.com/StuartGordonReid/f01f479c783dd40cc21e
"""
def ornstein_uhlenbeck_levels(param):
"""
This method returns the rate levels of a mean-reverting ornstein uhlenbeck process.
:param param: the model parameters object
:return: the interest rate levels for the Ornstein Uhlenbeck process
"""
ou_levels = [param.all_r0]
brownian_motion_returns = brownian_motion_log_returns(param)
for i in range(1, param.all_time):
drift = param.ou_a * (param.ou_mu - ou_levels[i-1]) * param.all_delta
randomness = brownian_motion_returns[i - 1]
ou_levels.append(ou_levels[i - 1] + drift + randomness)
return ou_levels
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment