首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中来自yahoo_finance的不正确的关闭数据

python中来自yahoo_finance的不正确的关闭数据
EN

Stack Overflow用户
提问于 2016-05-13 20:15:38
回答 2查看 2.1K关注 0票数 6

我在python中使用金融来提取股票数据,出于某种原因,get_prev_close()方法并不是每次调用都返回相同的数据。

下面是一个简单的例子:

代码语言:javascript
复制
from yahoo_finance import Share
from time import sleep

while True:
    stock = Share('XLV')
    prevClose = float(stock.get_prev_close())
    print prevClose

    sleep(1)

由于某种原因,这将打印两个不同的数字,似乎是随机的。今天我要把69.369.71打印出来。但由于这是昨日的收盘数据,应该只有一个值。

这是已知的bug吗?有没有办法解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-23 14:46:37

看来,yahoo_finance包使用的实时YQL数据已经过时。69.71是5月11日的尾声,正确的数值应该是69.3。

简单的解决方案是访问同一包的历史数据表,如

代码语言:javascript
复制
>>> from yahoo_finance import Share
>>> stock = Share('XLV')
>>> data, = stock.get_historical('2016-05-12','2016-05-12')
>>> data['Close']
69.300003

或者,直接从Yahoo/Finance网站获取接近的数据。(速度更快、更灵活)当我试图复制你的情况时,我不会看到你报告的价值观的闪烁,但我确实得到了一个陈腐的接近(5月20日而不是5月23日)。可能您看到的闪烁是由于YQL有时使用陈旧的数据转到服务器,有时不是。下面的代码是从yahoo_finance (a)的历史数据、yahoo_finance (b)的实时数据、雅虎财务实时报价(c)和雅虎财务历史数据(d)中直接获得的。

代码语言:javascript
复制
import csv
import time
import datetime

import requests
import pytz

from yahoo_finance import Share

hist_url = 'http://real-chart.finance.yahoo.com/table.csv?s=XLV&a=4&b=23&c=2016&g=d&ignore.csv'
realtime_url = 'http://download.finance.yahoo.com/d/quotes.csv?s=XLV&f=p&e=.csv'

eastern = pytz.timezone('US/Eastern')

while True:
    stock = Share('XLV')
    a = stock.get_historical('2016-05-23','2016-05-23')[0]['Close']
    b = stock.get_prev_close()
    r = requests.get(hist_url)
    reader = csv.DictReader(r.iter_lines())
    c = float(next(reader)['Close'])
    d = float(requests.get(realtime_url).text)
    print datetime.datetime.now(eastern).time(), a, b, c, d
    time.sleep(120)

第3列中从stock.get_prev_close()开始的闭包总是过时的,而其他数字是正确的,如下所示:

代码语言:javascript
复制
09:24:51.582532 69.410004 69.69 69.410004 69.41
09:26:52.749902 69.410004 69.69 69.410004 69.41
09:28:54.589506 69.410004 69.69 69.410004 69.41
09:30:56.681914 69.410004 69.69 69.410004 69.41
09:32:58.255181 69.410004 69.69 69.410004 69.41
票数 2
EN

Stack Overflow用户

发布于 2016-05-18 20:37:49

此问题与金融 python库无关。许多用户都观察到雅虎财务的结果不一致。你可以在这里找到抱怨,forums.developer.yahoo不同结果。我今天运行了几个查询,得到了不同的结果。也许你最好找到另一个财务数据的来源。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37218685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档