Source code for rpylib.process.coupling.helper

"""
Factorisation of code common to the both the 1d and Lévy copula case for coupling processes
"""

import numpy as np


[docs]def create_build_finer_grid_fun(epsilon: float, maturity: float): def _build_finer_grid_default( self, jump_times, fines_states_values, coarse_states_values ): return jump_times, fines_states_values, coarse_states_values def _build_finer_grid(self, jump_times, fines_states_values, coarse_states_values): dts = np.concatenate(([jump_times[0]], np.diff(jump_times))) if not any(dts > epsilon): return jump_times, fines_states_values, coarse_states_values else: positions = np.nonzero(dts > epsilon)[0] aug_fine_js = fines_states_values aug_coarse_js = coarse_states_values aug_dts = dts while positions.size > 0: aug_dts[positions] -= epsilon aug_dts = np.insert(aug_dts, positions, epsilon) aug_fine_js = np.insert( aug_fine_js, positions, np.where(positions == 0, 0, aug_fine_js[..., positions - 1]), axis=-1, ) aug_coarse_js = np.insert( aug_coarse_js, positions, np.where(positions == 0, 0, aug_coarse_js[..., positions - 1]), axis=-1, ) positions = np.nonzero(aug_dts > epsilon)[0] aug_jump_times = np.cumsum(aug_dts) return aug_jump_times, aug_fine_js, aug_coarse_js return _build_finer_grid_default if epsilon >= maturity else _build_finer_grid