【问题标题】:Some ETF Tickers Not Working in Yahoo Finance DataReader一些 ETF 代码在 Yahoo Finance DataReader 中不起作用
【发布时间】:2018-01-11 21:04:19
【问题描述】:

我正在使用 Pandas-Datareader 通过 Yahoo Finance 从一堆 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 工作正常。 Datareader 会生成像 url for GDVD 这样的 URL,即使网站上提供了 historical data for GDVD。我使用 GDVD url 在 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']

【问题讨论】:

  • 是的。我是雅虎缺乏支持不是问题,但它可能。我有点绝望了,因为 Google 的 API 也不再受支持,而且我的 API 也快用完了与 datareader 一起使用。
  • 相对于什么时候的历史价格?
  • 我正在寻找那些有这么多历史可用的股票代码的大约 5-7 年的每周或每月价格。

标签: python pandas finance yahoo-finance pandas-datareader


【解决方案1】:

使用 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())

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多