yfinance 和 yahoo 财务数据非常不同

Posted

技术标签:

【中文标题】yfinance 和 yahoo 财务数据非常不同【英文标题】:yfinance and yahoo finance data are very different 【发布时间】:2021-11-24 21:50:39 【问题描述】:

我使用下面 Python 代码中的 yfinance 包来获取 LGEN.L(Legal & General,一家在伦敦证券交易所上市超过 100 年的公司)的 5 年每日价格数据。结果是下面的第一张图。

然后我去雅虎财经网站查找 LGEN.L 并点击 5 yrs 按钮:见下图第二张(注意:如果你从其他资源中查找股价,你会得到一个非常相似的资料)

虽然最近的数据(两个图的右侧)在 280 左右匹配,但较旧的数据(两个图的左侧)不匹配:yfinance 数据从 150 左右开始,而yfinance 数据从 210 左右开始;差别很大

我做错了什么?

Python 代码:

import yfinance as yf
import matplotlib.pyplot as plt

isin = "LGEN.L"

# Extract 5 years of daily data
df = yf.download(tickers=isin, period="5y", interval="1d", auto_adjust=True, prepost=False)
print(df)

#Extract time index
indx = df.index.to_numpy()
indx = indx.astype(str)
indx = [elem[:16] for elem in indx]
indx = [elem.replace(" ", "T") for elem in indx]

# Extract price (as average of openPrice, highPrice, lowPrice and closePrice
openPrice = df['Open'].to_numpy()
highPrice = df['High'].to_numpy()
lowPrice = df['Low'].to_numpy()
closePrice = df['Close'].to_numpy()
price = (openPrice + highPrice + lowPrice + closePrice) / 4.0
for i in range(len(openPrice)): print(indx[i] + ' / ' + str(price[i]))

# Plot
fig = plt.scatter(indx, price)
plt.title(isin)
plt.show()

这段代码给出了这个图:

还有雅虎财经人物:

【问题讨论】:

【参考方案1】:

雅虎网站显示严格的收盘价,而您绘制的是调整后的收盘价。所以时间越往前走,它们的分歧就越大。

使用

df = yf.download(tickers=isin, period="5y", interval="1d", auto_adjust=False, prepost=False)

【讨论】:

以上是关于yfinance 和 yahoo 财务数据非常不同的主要内容,如果未能解决你的问题,请参考以下文章

YFINANCE:检索更多ETF数据

用 Python 通过雅虎财经获取股票数据

如何理解 Yahoo! 的原始 HTML使用 Python 检索数据时的财务?

雅虎!财务 CSV 文件不会返回道琼斯 (^DJI)

使用 python yfinance 多线程下载雅虎股票历史

量化交易必备的开源项目:yfinance