Python yfinance的auto_adjust=True参数功能存疑:全OHLC还是仅收盘价?
yfinance中auto_adjust=True的具体作用
结论:auto_adjust=True会调整所有OHLC(开盘价、最高价、最低价、收盘价)价格,同时会移除原本的Adj Close列——因为此时收盘价已经是复权后的数值。
可以通过实际测试验证这一点:
import yfinance as yf # 下载未复权数据 data_raw = yf.download("AAPL", start="2023-01-01", end="2023-01-05", auto_adjust=False) print("未复权数据列:", data_raw.columns.tolist()) print("未复权收盘价:", round(data_raw['Close'].iloc[-1], 2)) print("官方复权收盘价:", round(data_raw['Adj Close'].iloc[-1], 2)) # 下载自动复权数据 data_adj = yf.download("AAPL", start="2023-01-01", end="2023-01-05", auto_adjust=True) print("\n自动复权数据数据列:", data_adj.columns.tolist()) print("复权后收盘价:", round(data_adj['Close'].iloc[-1], 2)) print("复权后开盘价:", round(data_adj['Open'].iloc[-1], 2))
运行后会发现:
- 自动复权后的Close值和未复权数据里的Adj Close完全一致;
- 复权后的Open、High、Low也都按照相同的复权比例进行了调整,并非只修改收盘价。
yfinance的这个参数逻辑是基于分红、拆股等事件对所有价格维度做统一复权,确保整个价格序列能准确反映股票的实际收益情况。StackOverflow那篇帖子的说法不准确,大概率是测试时的疏漏或者基于旧版本的yfinance(早期版本可能存在差异)。
内容的提问来源于stack exchange,提问作者amp1590
相关产品推荐
相关产品推荐

