TypeError для numpy.float64, который я пытаюсь вызвать с помощью функции минимизации scipy (оптимизация финансового портфеля) - PullRequest
0 голосов
/ 29 декабря 2018

Я создаю программу для нахождения оптимального веса отдельных акций в портфеле, чтобы найти портфели с наибольшей доходностью / stdev и наименьшим взвешенным stdev, после использования вызова минимизации scipy, который возвращает Type Error.Использование Python 3.3 и numpy до этого момента в программе

Первоначально у меня не было настройки 'stdev' как функции, и при просмотре других вопросов stackoverflow определил, что для минимизации работы он должен быть вызванфункция, поэтому я превратил свою переменную stdev в функцию, которая исправила ошибку NoneType, но теперь я получаю TypeError, поскольку мои веса хранятся в формате с плавающей точкой в ​​массиве.

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

...

Вход

returns = data.pct_change() # Convert Daily Stock Price into Daily Returns

mean_daily_returns = returns.mean() # Calc Mean and Covar of Daily Returns
cov_matrix = returns.cov()

results = np.zeros((4+len(stocks)-1,252)) # Set-up array to hold results


weights = np.array(np.random.random(len(stocks)))
weights /= np.sum(weights) # Select Random Portfolio Weights

def stdev(weights):
    stdev = np.sqrt(np.dot(weights.T, np.dot(cov_matrix,weights))) * 
np.sqrt(252)
    return stdev

stdev(weights)
print(stdev(weights))
minimized = minimize(stdev(weights),0) # <---- error is occuring on this line

Выход

There are 3 stocks in this portfolio
(3, 3)

Symbols      AAPL      GOOG      MSFT
Symbols                              
AAPL     0.000229  0.000105  0.000114
GOOG     0.000105  0.000218  0.000138
MSFT     0.000114  0.000138  0.000213
(3,)
<class 'numpy.ndarray'>
[0.12400823 0.45597011 0.42002166]
0.2026925801003433
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-52-621996e19fcf> in <module>()
     46 stdev()
     47 print(stdev())
---> 48 minimized = minimize(stdev(),0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...