如何从动态lis设置scipy参数

2024-10-01 00:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想建立一个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)

最小方差投资组合的打印投资组合收益和方差


Tags: 用户for参数数量npdot权重股票