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

Python中yfinance的fiveYearAverageReturn返回None问题求助

问题原因及解决思路

核心原因

  • Yahoo Finance数据源调整:Yahoo Finance已修改公开股票数据接口的返回字段,fiveYearAverageReturn不再包含在默认的股票信息响应里,yfinance库无法抓取到对应值,因此返回None。
  • yfinance字段映射未同步:即便Yahoo Finance仍留存相关数据,yfinance的字段解析逻辑未及时更新,导致无法正确映射到fiveYearAverageReturn这个键。

替代解决方案

如果需要获取五年回报率数据,可以通过计算历史股价自行推导(以下代码包含总回报率和年均复合回报率的计算):

import yfinance as yf
from datetime import datetime, timedelta

# 初始化股票实例
ticker = yf.Ticker("MSFT")
# 定义时间范围:五年前至今
end_date = datetime.now()
start_date = end_date - timedelta(days=5*365)
# 获取历史股价数据(调整后收盘价已处理分红拆股)
hist_data = ticker.history(start=start_date, end=end_date)

# 计算回报率
if len(hist_data) >= 2:
    first_close = hist_data['Close'].iloc[0]
    last_close = hist_data['Close'].iloc[-1]
    # 总回报率
    total_return = (last_close - first_close) / first_close * 100
    # 年均复合回报率
    annualized_return = ((1 + total_return/100) ** (1/5) - 1) * 100
    
    print(f"MSFT 五年总回报率: {total_return:.2f}%")
    print(f"MSFT 五年年均复合回报率: {annualized_return:.2f}%")
else:
    print("无法获取足够的历史股价数据")

注意:上述计算仅基于股价变动,若要匹配Yahoo Finance原字段可能包含的股息再投收益,可以额外加入股息数据的计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:10:19