【问题标题】:Maximise the Slope using CVXPY使用 CVXPY 最大化斜率
【发布时间】:2016-08-09 12:18:59
【问题描述】:

我正在尝试使用 CVXPY 来最大化股票投资组合的夏普比率。

变量 w 是投资组合权重向量,Sigma 是 nxn 相关矩阵,mu - 是每个投资组合股票的平均收益,rf - 无风险利率(标量值)。

起初,我尝试将问题构造为:Maximise((ret-rf)/(sqrt(risk))),这引发了 TypeError: Can only 除以标量常数。我尝试通过记录我试图最大化的值来绕过这个问题,但是现在我得到了由“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

【问题讨论】:

    标签: python optimization cvxpy


    【解决方案1】:

    我相信这不是凸的。据我了解,有几种方法可以解决这个问题

    1. 使用通用 NLP 求解器(这是我使用的方法)
    2. 跟踪有效边界以找到该边界上具有最佳夏普比率的点
    3. 在某些情况下,此问题可以转化为凸 QP(参见 Gerard Cornuejols、Reha Tütüncü、财务优化方法,2007)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 2017-02-26
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多