0
CVXPYを使用して株式ポートフォリオのシャープレシオを最大化しようとしています。CVXPYを使用してスロープを最大化
変数wはポートフォリオ重みベクトル、Sigmaはnxn相関行列、mu-は各ポートフォリオストックの平均収益率、rf-リスクフリー率(スカラー値)です。
最初は、次のように問題を構築しようとしました。TypeErrorを発生させたMaximize((ret-rf)/(sqrt(risk))):スカラー定数でしか割り切れません。私は最大化しようとしている値のログを取ってこの問題を回避しようとしましたが、今は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