【问题标题】:yfinance API incorrect historical datayfinance API 历史数据不正确
【发布时间】: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(对于这个日期)

有人知道这里发生了什么吗?

【问题讨论】:

    标签: python yfinance


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-24
      • 2021-09-30
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2020-08-06
      • 2016-06-05
      相关资源
      最近更新 更多