如何通过yfinance获取10秒间隔的历史逐笔股票数据?
如何用yfinance获取高频(10秒间隔)股票数据
首先明确:yfinance本身不提供逐笔(tick)级历史数据,它能获取的最高频历史数据是1分钟级,且该数据的可获取时间范围有限(通常仅能拿到最近几天到几十天的1分钟数据,不同标的略有差异)。针对你的10秒间隔分析需求,有两种可行思路:
1. 用yfinance的1分钟数据聚合为10秒间隔
这是最直接的变通方案,先获取1分钟级数据,再通过重采样生成10秒粒度的数据。示例代码:
import yfinance as yf import pandas as pd # 目标标的,以AAPL为例 ticker = yf.Ticker("AAPL") # 获取最近5天的1分钟级数据,period和interval可按需调整 min_data = ticker.history(period="5d", interval="1m") # 重采样为10秒间隔,根据分析需求选择聚合规则 ten_sec_data = min_data.resample('10S').agg({ 'Open': 'first', # 10秒窗口内首个开盘价 'High': 'max', # 10秒窗口内最高价 'Low': 'min', # 10秒窗口内最低价 'Close': 'last', # 10秒窗口内最后收盘价 'Volume': 'sum' # 10秒窗口内成交量总和 }).dropna() # 剔除非交易时间的空数据行
注意:若需要更早期的高频数据,yfinance无法满足,需更换其他数据源。
2. 换用支持逐笔数据的数据源
如果必须基于真实逐笔数据生成10秒间隔分析,yfinance无法实现,可选择以下类型的服务:
- 经纪商API:比如IBKR的TWS API,可获取实时和历史逐笔数据,适合拥有经纪账户的用户。
- 第三方数据API:比如Polygon.io、Alpha Vantage,部分服务提供免费额度的逐笔/高频历史数据。
- 离线数据集:部分金融数据服务商提供历史逐笔数据的离线包,下载后可本地处理为10秒间隔数据。
额外注意事项
- 高频数据量远大于日度数据,美股一个交易日(6.5小时)的10秒间隔数据就有2340条记录,处理时需注意内存占用和计算效率。
- 重采样或基于逐笔数据生成10秒窗口时,要注意时间戳对齐(比如按交易时间而非自然时间),以及数据清洗(去重、补全缺失值等)。
内容的提问来源于stack exchange,提问作者quant
相关产品推荐
相关产品推荐

