我想建立一个scipy优化,通过改变股票的权重来最小化股票组合的方差,但要受到权重总和等于1的约束。我很难考虑如何设置优化的参数,因为参数的数量(权重)取决于用户输入的股票数量
我天真的想法是,我可能需要从用户创建的列表中动态创建权重变量,但很多人认为这是有问题的
这将从未优化的等权重投资组合中生成我想要的值
weightlist = []
for stock in stocksymbols:
weight = (1/len(stocksymbols))
weightlist.append(weight)
weightdict = {'Ticker': stocksymbols}
dfweight = pd.DataFrame(weightdict)
dfweight['Weight'] = weightlist
portfolioreturns = (dfbig2["Returns"] * dfweight["Weight"])
print("Portfolio Return: ", sum(portfolioreturns))
correlationmatrix = correlationmatrix.drop(columns='Ticker')
weightlistlist = []
for x in weightlist:
weightlistlist.append([x])
weightarray = (np.array(weightlistlist).T)
standdevarray = (np.array([standdevlist]).T)
weightedstd = np.dot(weightarray, standdevarray)
portfoliovariance = np.dot((weightarray),(np.dot(correlationmatrix, weightarray.T)))
print("Portfolio variance: ", portfoliovariance)
最小方差投资组合的打印投资组合收益和方差
目前没有回答
相关问题 更多 >
编程相关推荐