2016-08-09 12 views
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 

答えて

1

。私が理解から

  1. は汎用NLPソルバーを使用し、この問題を攻撃するには、いくつかの方法がある(これは私が使用した方法である)
  2. トレース最高のシャープとこのフロンティア上の点を見つけるための効率的フロンティア比率:
  3. いくつかの条件下では、この問題は凸QPに変換することができます(例えば、Gerard Cornuejols、RehaTütüncü、Financeの最適化メソッド、2007を参照)。
関連する問題