[알고리즘 트레이딩] yfinance의 auto_adjust와 Adj Close 정확히 이해하기

 

🔍 yfinance의 auto_adjustAdj Close 정확히 이해하기

yfinance는 Python에서 주식 데이터를 쉽게 가져올 수 있는 매우 인기 있는 라이브러리입니다. 이 중에서도 조정 종가(Adjusted Close)는 많은 분석에서 핵심이 됩니다. 하지만 데이터를 받아올 때 'Adj Close'가 생길 때도 있고, 안 생길 때도 있어서 혼란스럽죠?

이번 글에서는 그 원인과 올바른 사용법을 정리해 드립니다.


✅ 조정 종가(Adjusted Close)란?

Adj Close배당금이나 액면 분할(stock split) 등 기업의 행위를 반영한 종가입니다. 과거 가격을 일관되게 비교하려면 이 값이 필요합니다.

예를 들어:

  • 어떤 회사가 액면 분할을 하면 주가가 인위적으로 낮아지지만 가치는 동일합니다.

  • 이때 과거 주가들도 동일한 기준으로 조정해야 분석이 가능합니다.


🎛️ auto_adjust 옵션의 의미

yfinance.download() 함수는 auto_adjust라는 중요한 옵션을 제공합니다.

yf.download(tickers, auto_adjust=True or False)
설정값'Close' 열'Adj Close' 열의미
auto_adjust=True (기본값)조정된 종가❌ 없음모든 가격이 자동 조정됨
auto_adjust=False원래 종가Adj Close 생성됨'Close'는 원래 값, 'Adj Close'는 보정값

📌 예제 코드

🔹 1. auto_adjust=False: Adj Close 직접 사용

import yfinance as yf stocks = ['AAPL', 'WMT'] data = yf.download(stocks, start='2000-01-01', end='2023-12-31', auto_adjust=False) adj_close = data['Adj Close'] print(adj_close.head())

➡️ 'Adj Close' 열이 존재하며, 보정된 종가만 따로 사용할 수 있습니다.


🔹 2. auto_adjust=True: Close가 이미 조정됨

data = yf.download(stocks, start='2000-01-01', end='2023-12-31', auto_adjust=True) adjusted_close = data['Close'] print(adjusted_close.head())

➡️ 'Adj Close'는 존재하지 않지만, 'Close' 값이 이미 보정된 상태입니다.


⚠️ 자주 발생하는 오류: KeyError: 'Adj Close'

data = yf.download(stocks, auto_adjust=True) adj_close = data['Adj Close'] # ❌ 오류 발생

'auto_adjust=True'이면 'Adj Close'가 생성되지 않기 때문에 이 코드에서는 오류가 납니다.


✅ 결론

  • auto_adjust=False를 써야 'Adj Close' 열이 생성됩니다.

  • auto_adjust=True를 쓰면 'Close'가 이미 조정된 값이므로 'Adj Close'는 필요 없습니다.

  • 분석 목적(예: 배당 포함 수익률 분석 등)에 따라 적절히 선택하세요!

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

NPN, PNP 트랜지스터 차이점

[PLC] 센서 NPN, PNP 출력 타입별 결선방법 (OMRON E2E-X 시리즈 3선식 배선)

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

[PLC] PLC 아날로그 입출력 기본

[투자] ETF 투자 가이드 : 카테고리별 ETF 선택 전략

[PLC] 릴레이와 전자 접촉기 (MC)

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[농사] 천연 식물성 살충제 종류 및 제조법

[PLC] 릴레이 자기유지 (Realy Latch or Sealing)