yfinance获取USOI行情数据与纳斯达克官网结果不一致问题咨询
问题
使用yfinance库获取USOI的历史数据,执行以下代码:
tickerSymbol = 'USOI' # get data on this ticker tickerData = yf.Ticker(tickerSymbol) # get the historical prices for this ticker db = tickerData.history(period='1d',start = '2020-10-14', end = '2024-10-17') db['Close'][0:10], db.index[0:10]
得到的前10条收盘价结果为:
Date 2020-10-14 00:00:00-04:00 32.161522 2020-10-15 00:00:00-04:00 32.234608 2020-10-16 00:00:00-04:00 32.088417 2020-10-19 00:00:00-04:00 32.088417 2020-10-20 00:00:00-04:00 32.324036 2020-10-21 00:00:00-04:00 31.587734 2020-10-22 00:00:00-04:00 32.324036 2020-10-23 00:00:00-04:00 31.808615 2020-10-26 00:00:00-04:00 31.219574 2020-10-27 00:00:00-04:00 31.514090
但在纳斯达克官网查询到的对应日期数据与上述结果存在差异,请问原因是什么?
可能的原因
- 数据复权处理差异:yfinance返回的收盘价大概率是后复权价,会回溯调整分红、拆股等事件对历史价格的影响;而纳斯达克官网展示的可能是原始收盘价,即当日实际成交的未调整价格。USOI作为ETF存在定期分红或份额调整机制,复权后价格会和原始数据产生明显偏差。
- 时区与日期匹配偏差:yfinance返回的时间戳带时区标识(-04:00),若纳斯达克官网的日期统计逻辑与时区转换规则不同,可能导致日期对应的数据错位。比如跨时区的日期截断会让某一天的数据归属不同的日期标签。
- 数据源口径差异:yfinance的数据并非直接取自纳斯达克官网,它聚合了第三方数据源(如雅虎财经自有数据渠道),不同数据源在数据采集时间、统计标准上可能存在细微差别,最终导致价格数值不一致。
- 精度与四舍五入差异:yfinance返回的价格保留了更多小数位,而纳斯达克官网可能对价格做了四舍五入或精度截断处理,看起来数值不同,但实际差异可能在合理的统计误差范围内。
内容的提问来源于stack exchange,提问作者Valentyn
相关产品推荐
相关产品推荐

