pandas_datareader拉取雅虎BTC-USD数据与官网数值不符问题咨询
雅虎财经API拉取BTC价格和网页端不一致的原因及解决方法
核心原因
- 时区差异(首要因素)
BTC属于7*24小时交易的加密货币品类,日线价格的统计结果完全依赖时区选择:
pandas_datareader调用的雅虎非公开API默认返回UTC时区的日线数据,统计区间为UTC时间当日00:00至次日00:00;而雅虎财经网页端会根据访问地区适配默认时区,国内访问通常默认使用美东夏令时/冬令时(2021年9月为夏令时,UTC-4),UTC时间9月1日的统计区间对应美东时间8月31日12点至9月1日12点,和网页端显示的美东时间9月1日的统计区间完全错位,因此会出现数百美元的价格偏差。 - 统计口径差异
雅虎网页端的历史数据和非公开API的数据源未完全对齐,网页端会定期对历史数据做回溯修正,比如剔除异常成交、调整采样权重,而API返回的是未做二次修正的原始交易数据。 - 精度处理差异
网页端显示的价格默认四舍五入保留两位小数,而API返回的是完整的浮点精度数据,这类差异只会带来小额误差,不会造成你遇到的大幅偏差。
解决方法
- 拉取数据后先做时区转换,将API返回的UTC时间转换为和网页端一致的美东时间,再按目标时区的日期重新聚合日线数据,就能和网页端显示的价格对齐。
- 改用
yfinance库拉取雅虎财经数据,这是目前对雅虎接口适配最完善的第三方库,返回数据和网页端的一致性远高于pandas_datareader内置的雅虎接口。 - 对比价格前先核对两边日期对应的交易时段,确认统计区间一致后再做数值对比。
内容的提问来源于stack exchange,提问作者thatthing
相关产品推荐
相关产品推荐

