Я пытаюсь использовать CVXPY, чтобы максимизировать коэффициент Sharpe портфеля акций.Максимизируйте наклон с помощью CVXPY
Переменная w представляет собой вектор веса портфеля, Sigma - корреляционная матрица nxn, mu - средняя доходность каждого портфеля портфеля, а rf - безрисковая ставка (скалярное значение).
Сначала я попытался создать проблему как: Максимизировать ((ret-rf)/(sqrt (risk))), который поднял TypeError: может делить только на скалярную константу. Я пробовал обходить эту проблему, беря журнал значения, которое я пытаюсь максимизировать, однако теперь я получаю «недопустимый синтаксис», созданный «prob.solve()». Я уверен, что проблема связана с формулой максимизации, но я не уверен, что это такое.
(Я пробовал обе формулы журнала CVXPY, а именно log_det() и log_sum_exp())
Вот код ниже:
from cvxpy import *
def portfolio(mu, Sigma, rf):
n = len(mu)
w = Variable(n)
ret = mu.T*w
risk = quad_form(w, Sigma)
prob = Problem(Maximize(log_det(ret-rf)-log_det(sqrt(risk)),
[sum_entries(w) == 1])
prob.solve()
return w.value