You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Yahoo Finance API获取含股息再投资的股票假设增长率?

核心结论

  • 你当前使用的Yahoo Finance Adj Close 字段本身已计入拆股、现金股息调整,调整逻辑就是模拟股息再投资后的等效股价,理论上你现有代码算出的回报率已经包含股息再投资收益。如果实际核对有偏差,大概率是yfinance的参数设置问题导致调用的调整价口径不对。
  • 不需要你手动逐季度梳理派息金额,yfinance支持直接拉取标的全量历史派息、拆股数据,你可以自行复现总回报计算逻辑做校验。

常见偏差原因

yf.download 默认参数auto_adjust=False 时返回的Adj Close 是Yahoo官方的总回报调整口径,和实际股息再投资收益一致;如果手动设置了auto_adjust=True,返回的调整价是yfinance自行计算的仅股价复权口径,不含股息再投资收益,就会出现你说的计算结果偏低的情况。

手动校验计算方法

如果需要自己实现股息再投资的逻辑做核对,可以参考以下代码:

import yfinance as yf

# 初始化标的对象
msft = yf.Ticker("MSFT")
# 拉取指定时间段的行情、派息、拆股数据
hist_data = msft.history(start="2015-01-01", end="2021-09-10", auto_adjust=False)

# 模拟期初买入1股,跟踪持仓股数变化(分红再买入)
hold_shares = 1
initial_price = hist_data["Close"].iloc[0]

for date, row in hist_data.iterrows():
    # 当日有派息时,用分红全额买入股票
    if row["Dividends"] > 0:
        add_shares = (row["Dividends"] * hold_shares) / row["Close"]
        hold_shares += add_shares

# 计算最终含股息再投资的回报率
final_value = hold_shares * hist_data["Close"].iloc[-1]
roi_with_div = (final_value - initial_price) / initial_price
print("含股息再投资的ROI:", roi_with_div)

补充说明

如果只需要单独获取标的的历史派息数据,直接调用yf.Ticker("MSFT").dividends 即可拿到所有派息日和对应每股派息金额,不需要额外整理公开数据。


内容的提问来源于stack exchange,提问作者user2417339

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:54:04