yfinance API 历史数据不正确
Posted
技术标签:
【中文标题】yfinance API 历史数据不正确【英文标题】:yfinance API incorrect historical data 【发布时间】:2021-04-06 08:47:18 【问题描述】:我想用 yfinace 建立一个历史股票数据库来测试一些策略。不,我在使用 api 时遇到了一些历史数据的问题。它主要发生在非美国市场以外的股票。
例如,如果我使用以下方法获取“BOE.L”的历史数据:
boel = yf.Ticker("BOE.L")
boelHist = boel.history(period='max')
返回的最早收盘价是 2001-06-11,即:2.191053e-06 而在 yahoo 网站上,这个值是:2,347.00(对于这个日期)
有人知道这里发生了什么吗?
【问题讨论】:
【参考方案1】:观察到共享“SAP.DE”的类似行为。
ticker = yf.Ticker("SAP.DE")
hist = ticker.history(start="2019-04-16", end="2021-04-16")
返回例如从现在起的最后 2 年(2021-04-16),在支付股息之前,价格似乎是正确的。 在这种情况下,股息已于 2020-05-22 (1,58)、2020-05-21 (1,58) 和 2019-05-15 (1,50) 支付。 差异几乎(但不是 100%)与股息金额相关。
以下屏幕截图显示了与“开盘”价格的差异:
comparison yfinance - yahoo - SAP.DE
https://finance.yahoo.com/quote/SAP.DE/history?period1=1514764800&period2=1618617600&interval=1d&filter=history&frequency=1d&includeAdjustedClose=true
您可以观察到“Open”、“High”、“Low”和“Close*”的区别,但“Adj Close**”似乎是正确的。
comparsion 2 - SAP.DE
如果使用参数interval="1h",“开盘”价格(108,36)是正确的(2020-05-21):
hist = ticker.history(interval="1h", start="2020-05-19", end="2020-05-25")
2020-05-21 108.360001 108.360001 107.599998 107.739998 175957 2020-05-21 107.900002 108.040001 107.300003 107.680000 416473 2020-05-21 107.459999 107.839996 107.300003 107.400002 433919 2020-05-21 107.580002 107.639999 107.120003 107.300003 158440 2020-05-21 107.480003 107.559998 107.059998 107.320000 227438 2020-05-21 107.379997 108.019997 107.199997 107.739998 189142 2020-05-21 107.500000 108.339996 107.500000 107.879997 336406 2020-05-21 108.059998 108.339996 107.120003 107.279999 454079 2020-05-21 107.779999 107.779999 106.400002 106.720001 542355
也许以下可以解释差异:
1.) 调整收盘价的计算: https://help.yahoo.com/kb/SLN28256.html
2.) 来源:https://finance.zacks.com/adjusted-closing-price-vs-closing-price-9991.html
“虽然股息对股东有利,但实际上会降低每只公司股票的价值。 减少的原因是支付股息降低了公司的价值,因为他们将资金或股票转移到股东手中,而不是将其投资回公司。与收盘价不同,调整后的收盘价反映了派息造成的贬值。”
关于这个的进一步讨论:
How does Yahoo Finance calculate Adjusted Close stock prices?
似乎有一个参数“back_adjust=True”,它应该提供调整后的值,但无法获得调整值?
hist = ticker.history(interval="1d", start="2020-05-19", end="2020-05-23", back_adjust=True)
https://github.com/ranaroussi/yfinance/issues/687
【讨论】:
以上是关于yfinance API 历史数据不正确的主要内容,如果未能解决你的问题,请参考以下文章