Ежемесячная перебалансировка портфеля с оптимизированных весов - PullRequest
0 голосов
/ 07 июля 2019

У меня есть ежедневный запас, который оптимизируется, скажем, алгоритмом минимальной дисперсии.Это дает мне вывод ежедневных оптимальных весов.Если я каждый день перебалансирую портфель с новыми оптимальными весами, я просто отстаю от доходности на один период и умножаю оптимальные веса * доходности.

Однако я не совсем понимаю, как проверить ежемесячную перебалансировку.В основном я хочу сохранить оптимизацию с ежедневными доходами, но использовать только оптимальные веса, рассчитанные в конце месяца на следующие 30 дней.

Как это обычно делается?Если я установлю следующие 30-дневные веса, равные оптимальному весу из последнего дня предыдущего месяца, и умножим их на доходность, разве это не какой-то вид ежедневного перебалансирования, но только со старыми весами?

Iя совсем запутался, как это сделать.Ниже приведен пример того, как могут выглядеть данные для 1-го временного ряда запасов. Оптимальные дневные веса.

import numpy as np
import numpy.random as nrand
import pandas as pd


date = pd.date_range(start='12/31/2017', periods=60)
returns = pd.DataFrame(nrand.uniform(-0.1, 0.1, 60))
weights = pd.DataFrame(nrand.uniform(0, 1, 60))

weights_returns = pd.concat([returns,weights],axis=1)
weights_returns["date"] = date
weights_returns = weights_returns.set_index("date")
weights_returns.columns.values[0] = "weights"
weights_returns.columns.values[1] = "returns"

print(weights_returns)

1 Ответ

1 голос
/ 07 июля 2019

Я чувствую, что вы задаете здесь вопросы как о финансах, так и о пандах.Если у вас все в порядке с указанием веса за последний день до следующего месяца, то merge_asof ваш друг.

weight_month_end = (weights_returns['weights'].resample('M')
                                              .last()
                                              .rename('weight_new'))

pd.merge_asof(weights_returns, weight_month_end,left_index=True,right_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...