我正在尝试使用CVXPY来最大化股票投资组合的夏普比率。
变量w是投资组合权重向量,Sigma是nxn相关矩阵,mu是每个投资组合股票的平均收益率,rf是无风险利率(标量值)。
首先,我尝试将问题构造为:Maximize((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
答案 0 :(得分:2)
我相信这不是凸起的。根据我的理解,有几种方法可以解决这个问题