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 财务数据非常不同的主要内容,如果未能解决你的问题,请参考以下文章
如何理解 Yahoo! 的原始 HTML使用 Python 检索数据时的财务?