optimization - 关于 Scipy 的问题 - 最小化。添加额外的约束
问题描述
我正在尝试使用scipy
minimize
函数进行以下优化:
V = np.matrix(pd.read_csv('V.csv'))`
R = np.matrix(pd.read_csv('R.csv', index_col = 'Ticker'))`
w0= list()
for i in range(0, 84):
w0.append(1/84)
def calculate_portfolio_var(w,V):
w = np.matrix(w)
return (w*V*w.T)[0,0]
cons = ({'type': 'eq', 'fun': lambda x: np.sum(x)-1.0})
myBound = [(0, 1) for i in range(0, 84)]
res= minimize(calculate_portfolio_var, w0, args=V, method='SLSQP',constraints=cons, bounds = myBound)
其中V
是方差-协方差矩阵,R
是股票年化收益率的序列。
除了 2 个约束 (cons
和myBound
) 之外,我还想要一个额外的约束,即结果投资组合收益(结果权重和股票收益的加权平均值)等于某个数量并且股票数量小于等于一定数。。
例如,它应该如下所示:
cons = ({'type': 'eq', 'fun': lambda x: np.sum(x)-1.0},
{'type': 'eq', PortfolioReturn = 10%,
{'type': 'ineq', number of result stocks <= 40)
我对 Scipy 最小化不太熟悉,如果有人可以帮助我,我将不胜感激。
解决方案
关于什么
constraints=({'type': 'eq', 'fun': lambda x: np.sum(x) - 1.0},
{'type': 'eq', 'fun': calculate_portfolio_var(x, V) - 0.1, 'args':V})
投资组合回报?对于结果股票的数量,您介意解释它与哪个变量相关吗?我的意思是,它看起来像是 R,但在最小化问题的任何地方都没有使用 R。
推荐阅读
- sql - 查询以获取所有不同的行,添加一列指示每个重复项的总和
- jquery - ajax jquery中的标题
- javascript - 何时在 Chrome 清单中使用方括号?
- r - 将 XTS 导出为 CSV,使用单独的列
- node.js - 使用 Nodemailer 在 React 和 Express 中发出发布请求时出现问题
- python - 石头剪刀布游戏。定义术语的麻烦
- android - onDraw 和无效方法
- c++ - PrintStub() 函数的输出问题
- c# - 如何对要用于 AspNetUserClaims 的声明进行分组?
- java - java.sql.SQLException:列索引超出范围,2 > 1 即使我计算了列