雅虎财务API缺少特定日期的数据

时间:2016-10-18 14:55:52

标签: python api yahoo-finance

我正在编写一个从Yahoo finance API获取信息的脚本,即使API非常慢,它也适用于我将要使用它的内容。在测试脚本的过程中,我发现我得到了一个IndexOutOfBounds异常并且正在调查中我看到Yahoo Finance正在返回我所拥有的股票的股票报价信息,除了它缺少一天股票的一天,我怀疑当使用更长的时间段会因为我在使用更长的时间段之前遇到异常而错过了更多的日子,但我认为我的代码中有些东西我可以稍后解决。

雅虎财经API缺少整天的股票报价信息,这使得API无法使用。有没有其他人经历过这个,有什么解决方案吗?我猜我需要用另一种方法来获取数据。

现在我正在使用这个python模块https://pypi.python.org/pypi/yahoo-finance

雅虎财务是我目前发现的唯一包含我需要的信息的API,并支持我查询数据所需的证券交易所。

更新: 是的,我可以重新解决问题。以下是重新制作的代码:

>>> import datetime as dt
>>> import yahoo_finance as yf
>>>
>>> quote = yf.Share('GJF.OL')
>>> date_from = str(dt.date.today() - dt.timedelta(days=5))
>>> date_to = str(dt.date.today())
>>> quote_his = quote.get_historical(date_from, date_to)
>>> import pprint
>>> pprint.pprint(quote_his)
[{'Adj_Close': '156.50',
  'Close': '156.50',
  'Date': '2016-10-14',
  'High': '156.50',
  'Low': '153.10',
  'Open': '153.50',
  'Symbol': 'GJF.OL',
  'Volume': '487600'},
 {'Adj_Close': '153.60',
  'Close': '153.60',
  'Date': '2016-10-13',
  'High': '153.60',
  'Low': '152.50',
  'Open': '153.30',
  'Symbol': 'GJF.OL',
  'Volume': '508800'}]
>>>

此代码应打印周一(2016-10-17)的股票信息,但事实并非如此。如果我选择其他股票,我也会在字典中获得星期一的股票信息。

更新2: 我尝试了另一个名为ystockquote的模块并获得了相同的结果。我得到星期四和星期五的信息,但不是星期一。如果我要求不同的报价,我会从这三天获得信息。当我到达雅虎金融网站时,它会从星期一的图表中获取股票信息等。

更新3: 现在可以找到GJF.OL的数据,这可能与API中历史表的股票价格延迟有关,如下面答案中所述。但是,我仍然能够从我没有收到GJF.OL股票的股票价格信息的日期收到其他股票的股票价格信息。

虽然我现在收到GJF.OL股票的股票价格信息,但我试图从股票中获取最近165天的股票价格信息,但NAS.OL股票有1天缺失意味着返回的字典不包含当天的任何数据,而其他股票具有该信息。该股票为NAS.OL,日期为2016年8月3日,数据缺失。有没有想过这个数据丢失的想法?

1 个答案:

答案 0 :(得分:0)

这可能与Python绑定无关,而且它完全是Yahoo数据。如果您通读绑定,则运行的命令基本上是

curl -G 'https://query.yahooapis.com/v1/public/yql' \
    --data-urlencode 'env=store://datatables.org/alltableswithkeys' \
    --data-urlencode 'format=json' \
    --data-urlencode 'q=select * from yahoo.finance.historicaldata where symbol = "GJF.OL" and startDate = "2016-10-13" and endDate = "2016-10-18"'

当我为自己咆哮时,我获得了13,14,17和18的数据。您正在访问的表称为历史数据,因此24小时显示数据并非没有道理。

如果您发现该端点与Python绑定之间存在差异,您可能会遇到某些问题,但这些绑定的code非常简单,而且它似乎只是传递了日期范围。