[英]Some ETF Tickers Not Working in Yahoo Finance DataReader
我正在使用Yahoo Finance使用Pandas-Datareader从一堆ETF收集数据,即使数据似乎可用,我也收到了一些股票的奇怪错误。 代码很简单:
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2017,1,1)
for ticker in TICKERS:
f = dr.DataReader(ticker, 'yahoo', start, end)
并适用于我的大部分股票,但并非全部:
EMLP GDVD (Failed to get data for GDVD) AMZA RFDI ARKK ARKW SECT (Failed to get data for SECT)
EMLP正常工作。 即使可以在网站上获得GDVD的历史数据,Datareader也会为GDVD生成此类URL 。 我在使用GDVD网址的Chrome中看到以下错误:
{"finance": {"error": {"code": "Unauthorized","description": "Invalid cookie"}}}
有没有办法获得这些股票的历史价格? 如果任何人都可以看到模式,则失败行情自动收录器的完整列表:
['GDVD', 'SECT', 'DWLD', 'CCOR', 'DFNL', 'DUSA', 'AIEQ', 'CACG', 'QSY', 'ACT', 'TAXR', 'TTAI', 'FLIO', 'FMDG', 'VGFO', 'FFSG', 'LRGE', 'YLDE', 'VESH', 'DEMS', 'SQZZ']
使用yahoo_fin程序包,我能够获取您列出的报价器的数据。 检查此链接: http : //theautomatic.net/yahoo_fin-documentation/ 。
我的代码如下所示:
from yahoo_fin.stock_info import get_data
tickers = ['GDVD', 'SECT', 'DWLD', 'CCOR', 'DFNL', 'DUSA', 'AIEQ', 'CACG',
'QSY', 'ACT', 'TAXR', 'TTAI', 'FLIO', 'FMDG', 'VGFO', 'FFSG',
'LRGE', 'YLDE', 'VESH', 'DEMS', 'SQZZ']
stocks = {}
for ticker in tickers:
stocks[ticker] = get_data(ticker)
因此,数据被存储到字典中,其中的键是股票行情指示器,值是包含每个股票数据的数据框。
另外,您可以使用字典理解,如下所示:
stocks = {ticker : get_data(ticker) for ticker in tickers}
如果要将所有数据集折叠到单个数据框中,则可以使用functools包,如下所示:
from functools import reduce
combined = reduce(lambda x,y: x.append(y), stocks.values())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.