Я пытаюсь создать одинаково взвешенный портфель с 2 акциями, которые перебалансируются каждый месяц. У меня есть столбец True / False, если портфель необходимо перебалансировать, т.е. это начало нового месяца. Я попытался использовать функцию сдвига, чтобы мои веса равнялись предыдущему значению весов, если только это не начало нового месяца, и в этом случае я вычисляю новые веса. Однако веса являются числами с плавающей точкой, и поэтому функция сдвига не работает.
Приведенный ниже код правильно вычисляет новые веса, если столбец перебалансировки = True, но на следующий день вместо того же веса он возвращается к последнему весу, в котором в качестве значения использовалось целое число, а не число с плавающей точкой.
Пожалуйста, дайте мне знать, где я иду не так? Спасибо!
prices['w1_new'] = (1-prices['Rebalance Date']) * prices['w1'].shift(1) + prices['Rebalance Date'] * prices['w1_daily']