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
相关产品推荐
相关产品推荐

