def compute_scale(signal_level, ewma_level): current_scaling = compute_scale_globals['current_scaling'] new_position_scaling = get_position_scaling(signal_level, current_scaling, ewma_level, threshold) # updating for next step compute_scale_globals['current_scaling'] = new_position_scaling result = { 'band_inf': ewma_level + ((new_position_scaling - 1) * threshold), 'band_mid': ewma_level + (new_position_scaling * threshold), 'band_sup': ewma_level + ((new_position_scaling + 1) * threshold), 'scaling': -new_position_scaling } return result
def scale(row, cumul=cumul): current_scaling = cumul['current_scaling'] price = row['price'] mu = row['mu'] sigma = 0.8 * row['sigma'] new_position_scaling = get_position_scaling(price, current_scaling, mu, sigma) # updating for next step cumul['current_scaling'] = new_position_scaling result = { 'position_scaling': new_position_scaling, 'band_inf': mu + ((new_position_scaling + 1) * sigma), 'band_mid': mu + (new_position_scaling * sigma), 'band_sup': mu + ((new_position_scaling - 1) * sigma) } return pandas.Series(result)