我目前是新的StackOverflow,我需要你的专业知识,就以下事项。我目前正试图创建一个函数,加载数据,并将其转换为 Dataframe 使用Pandas,但雅虎金融的问题是,不是所有的股票代码(符号)对于所有的股票都可以加载数据,所以需要通过100、000的股票,丢弃不起作用的股票,使用起作用的股票。我想找到一种方法来优化这个函数,但目前,我无法处理超过1,000股票每小时只使用我的CPU。我试图改变功能和优化最好的,因为我可以,但这是我能做的最多,也使用GPU来处理它(这是一个失败的尝试,因为使用GPU在这是不可能的。)
def findAllCorrWithSelectStock(selectStock,listOfStock,start,end,newList):
list_withCorr = []
working_List = []
chosenAsset = web.DataReader([selectStock],'yahoo',start,end)['Adj Close']
for stock in listOfStock:
# Set DataFrame as the Stock Ticker
try:
temp = web.DataReader(stock,'yahoo',start,end)['Adj Close']
closing_df = pd.merge(temp, chosenAsset, left_index=True, right_index=True).rename(columns={'Adj Close': stock})
x = closing_df.corr().iloc[0][selectStock]
if math.isnan(x) :
pass
else:
list_withCorr.append((stock,closing_df.corr().iloc[0][selectStock]))
newList.append(stock)
except:
pass
srt = sorted(list_withCorr,key=lambda x: x[1], reverse=True)
return srt
这个问题对于重复加载和比较数据的循环来说是重复的。该函数将生成一个最佳相关股票的排名。任何帮助都将不胜感激,如果有任何问题或担心,我引起了你们,我很抱歉提前。
1条答案
按热度按时间siv3szwd1#
它只处理一只股票与其他股票的比较,对吗?
您正在从Yahoo检索所有股票价格,* 每只股票一次 *。缓存和重用数据将运行时间缩短100,000倍。
如果你稍微搜索一下,我也有信心你会找到一些历史股票数据的种子或其他存储库,开放数据栈交换可能有指针,或同名的subreddit。
再补充一些建议:你不可能通过寻找股票价格的模式而致富。成千上万的人在研究这样的模型,他们拥有更多的数据、处理能力和博士学位。当他们到达你身边时,所有的“信号”都已经从价格中剥离出来,留给你的是噪音。