我有一个for循环,它处理900多万个组合(为此,我使用了itertools库),必须更快地执行下面的代码,在所有组合上循环太长时间。谢谢你的建议
wb = xw.books('FX VEGA BT.xlsm')
sht = wb.sheets['Sheet1']
#retrieving data from excel
df = pd.DataFrame(sht.range('PY_PNL').value, columns=['10','20','25','40','50','60','70','75','80','90'])
#df has shape of 3115 rows × 10 columns
def sharpe(x):
s = round(np.average(x)/np.std(x)*np.sqrt(252),2)
return s
shrps = []
outlist = []
mult = (-1,-2.5,0,1,2.5)
perm = itertools.product(mult,repeat = 10)
for p in perm:
c = df*p
c = c.sum(axis='columns')
outlist.append(p)
shrps.append(sharpe(c))
您可以使用列表理解,它会更快一些:
如果确实需要名为
outlist
的perm
副本,可以使用copy
包中的deepcopy
:为了进一步加快进程,您可以在
sharpe()
函数中更改某些内容(我不知道它是什么样子)相关问题 更多 >
编程相关推荐