对于一个学校项目,我试图计算在给定历史日期由三只股票组成的最高表现投资组合(夏普比率)。你知道吗
我已经知道如何用python收集信息并计算平均收益和方差。然而,我不知道如何迭代数据并比较所有可能投资组合的结果。
例如:
result 1 = stockA + stock B + stock C
result 2 = stockB + Stock C + Stock D
result 3 = stockC + Stock D + Stock E
等等,等等
更为复杂的是,这些股票将被加权。我知道在每种组合中为3只股票做所有可能的权重计算需要几天的时间,所以我打算做一些更精简的事情:
# checks to see which stock will perform better with higher weight:
trialstockA = (stockA * .75) + (stockB * .125) + (stockC * .125)
trialstockB = (stockA * .125) + (stockB * .75) + (stockC * .125)
trialstockC = (stockA * .125) + (stockB * .125) + (stockC * .75)
# if trialstockA should be weighed higher:
if trialstockA > trialstockB and trialstockC:
trialstockA2 = (stockA * .95) + (stockB * .025) + (stockC * .025)
trialstockA3 = (stockA * .85) + (stockB * .075) + (stockC * .075)
trialstockA4 = (stockA * .80) + (stockB * .10) + (stockC * .10)
trialstockA5 = (stockA * .70) + (stockB * .15) + (stockC * .15)
trialstockA6 = (stockA * .65) + (stockB * .175) + (stockC * .175)
trialstockA7 = (stockA * .60) + (stockB * .20) + (stockC * .20)
trialstockA8 = (stockA * .55) + (stockB * .225) + (stockC * .225)
trialstockA9 = (stockA * .50) + (stockB * .25) + (stockC * .25)
然而,这一部分不那么重要。我只是不知道如何迭代每个可能的投资组合。我可以将数据导出到CSV文件中,在CSV文件中它将显示为[NAME (string) ,MEAN RETURN (INT) ,VARIANCE (INT), RISK (INT)]
,例如[AAPL, .427, .1957, .442]
,也可以将它们作为变量留在一个scrapy项目中。我有一种感觉,CSV方法可能更容易。你知道吗
我还想知道把这些股票分成三组是否有帮助?你知道吗
希望这是有意义的。不知道还能提什么。。。你知道吗
提前谢谢你的帮助!你知道吗
对于每个股票组合和每个权重组合,目标是在股票组合命名为stockA、stockB和StockC的情况下进行以下计算。为了节省时间,我将把每个股票数据导出到一个csv中,在csv中,股票均值、方差、标准差(风险)和收益列表(大约100个数字)存储在每行股票的不同列中。你知道吗
首先,需要找出两种股票组合之间的相关性:
stockAB_corr = numpy.corrcoef(stockA_returns, stockB_returns)[0, 1]
stockAC_corr = numpy.corrcoef(stockA_returns, stockC_returns)[0, 1]
stockBC_corr = numpy.corrcoef(stockB_returns, stockC_returns)[0, 1]
然后,我们可以运行以下函数:
portfolio_return = (stockA[avgret] * stockA[weight]) + (stockB)
portfolio_variance = ((stockA[weight]^2) * stockA[variance]) + ((stockB[weight]^2) * stockB[variance]) + ((stockC[weight]^2) * stockC[variance]) + (2*stockA[weight]*stockB[weight]*stockAB_corr*stockA[risk]*stockB[risk]) + (2*stockA[weight]*stockC[weight]*stockAC_corr*stockA[risk]*stockC[risk]) + (2*stockB[weight]*stockC[weight]*stockBC_corr*stockB[risk]*stockC[risk])
portfolio_risk = portfolio_variance ** 0.5
Sharpe = (porfolio_return - 0.03)/portfolio_variance
夏普比率是最终的结果。对于每种股票,已经计算出它们各自的方差和平均值。你知道吗
根据@aron的评论,您可以使用^{} 模块,特别是^{} 和^{} 。你知道吗
您可以使用
combinations
从所有可能股票的列表中创建股票集合,使用permutations
和set
对权重进行唯一排序,使用zip
和yield
从生成器函数将它们合并。你知道吗输出如下所示:
相关问题 更多 >
编程相关推荐