[알고리즘 트레이딩] yfinance의 auto_adjust와 Adj Close 정확히 이해하기
🔍 yfinance의 auto_adjust와 Adj Close 정확히 이해하기
yfinance는 Python에서 주식 데이터를 쉽게 가져올 수 있는 매우 인기 있는 라이브러리입니다. 이 중에서도 조정 종가(Adjusted Close)는 많은 분석에서 핵심이 됩니다. 하지만 데이터를 받아올 때 'Adj Close'가 생길 때도 있고, 안 생길 때도 있어서 혼란스럽죠?
이번 글에서는 그 원인과 올바른 사용법을 정리해 드립니다.
✅ 조정 종가(Adjusted Close)란?
Adj Close는 배당금이나 액면 분할(stock split) 등 기업의 행위를 반영한 종가입니다. 과거 가격을 일관되게 비교하려면 이 값이 필요합니다.
예를 들어:
-
어떤 회사가 액면 분할을 하면 주가가 인위적으로 낮아지지만 가치는 동일합니다.
-
이때 과거 주가들도 동일한 기준으로 조정해야 분석이 가능합니다.
🎛️ auto_adjust 옵션의 의미
yfinance.download() 함수는 auto_adjust라는 중요한 옵션을 제공합니다.
| 설정값 | 'Close' 열 | 'Adj Close' 열 | 의미 |
|---|---|---|---|
auto_adjust=True (기본값) | 조정된 종가 | ❌ 없음 | 모든 가격이 자동 조정됨 |
auto_adjust=False | 원래 종가 | ✅ Adj Close 생성됨 | 'Close'는 원래 값, 'Adj Close'는 보정값 |
📌 예제 코드
🔹 1. auto_adjust=False: Adj Close 직접 사용
➡️ 'Adj Close' 열이 존재하며, 보정된 종가만 따로 사용할 수 있습니다.
🔹 2. auto_adjust=True: Close가 이미 조정됨
➡️ 'Adj Close'는 존재하지 않지만, 'Close' 값이 이미 보정된 상태입니다.
⚠️ 자주 발생하는 오류: KeyError: 'Adj Close'
'auto_adjust=True'이면'Adj Close'가 생성되지 않기 때문에 이 코드에서는 오류가 납니다.
✅ 결론
-
auto_adjust=False를 써야'Adj Close'열이 생성됩니다. -
auto_adjust=True를 쓰면'Close'가 이미 조정된 값이므로'Adj Close'는 필요 없습니다. -
분석 목적(예: 배당 포함 수익률 분석 등)에 따라 적절히 선택하세요!
댓글
댓글 쓰기