Как настроить параметры scipy из динамического списка - PullRequest
0 голосов
/ 26 апреля 2019

Я бы хотел настроить оптимизацию scipy, которая минимизирует дисперсию портфеля акций путем изменения весов акций, с учетом ограничения, что сумма весов равна единице.У меня возникают проблемы с размышлениями о том, как настроить параметры для оптимизации, поскольку количество параметров (весов) зависит от количества акций, введенных пользователем.

Моя наивная идея заключалась в том, что мне может понадобиться динамически создавать весовые переменные из списка, созданного пользователем, но, похоже, многим это проблематично.

Это приводит к получению желаемых значений изНеоптимизированный портфель с равным весом.

weightlist = []
for stock in stocksymbols:
    weight = (1/len(stocksymbols))
    weightlist.append(weight)

weightdict = {'Ticker': stocksymbols}
dfweight = pd.DataFrame(weightdict)
dfweight['Weight'] = weightlist

portfolioreturns = (dfbig2["Returns"] * dfweight["Weight"])
print("Portfolio Return: ", sum(portfolioreturns))

correlationmatrix = correlationmatrix.drop(columns='Ticker')

weightlistlist = []
for x in weightlist:
    weightlistlist.append([x])
weightarray = (np.array(weightlistlist).T)
standdevarray = (np.array([standdevlist]).T)

weightedstd = np.dot(weightarray, standdevarray)

portfoliovariance = np.dot((weightarray),(np.dot(correlationmatrix, weightarray.T)))
print("Portfolio variance: ", portfoliovariance)

Печатная доходность портфеля и дисперсия минимизированного портфеля отклонений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...