파이썬으로 실시간 주식 시세 가져와서 엑셀 저장하기 (yfinance 활용)

주식 투자자에게 데이터 정리는 필수적이다. 하지만 매번 포털 사이트에서 가격을 확인하고 엑셀에 옮겨 적는 일은 번거롭다. 파이썬의 yfinance 라이브러리를 활용하면 전 세계 주식 시세를 무료로 가져와 엑셀로 자동 저장할 수 있다.

환경 설정 및 라이브러리 설치

데이터 수집을 위해 yfinance, 데이터 처리를 위해 pandas, 엑셀 저장을 위해 openpyxl 라이브러리가 필요하다. 터미널에서 아래 명령어를 실행하여 설치한다.

pip install yfinance pandas openpyxl

코드 구현

아래 코드는 삼성전자, 애플, 테슬라, 엔비디아의 현재가를 가져와 엑셀 파일로 저장하는 로직이다.

import yfinance as yf
import pandas as pd
from datetime import datetime

def get_stock_data():
    # 수집할 종목 리스트 (한국 주식은 .KS 또는 .KQ 접미사 필요)
    tickers = ['005930.KS', 'AAPL', 'TSLA', 'NVDA']
    stock_list = []

    for symbol in tickers:
        try:
            ticker_obj = yf.Ticker(symbol)
            # 최신 1일치 데이터 중 마지막 종가 추출
            data = ticker_obj.history(period='1d')
            current_price = data['Close'].iloc[-1]
            
            stock_list.append({
                '종목코드': symbol,
                '현재가': round(current_price, 2),
                '기준시간': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
            print(f"{symbol} 데이터 수집 완료")
        except Exception as e:
            print(f"{symbol} 오류 발생: {e}")

    # 데이터프레임 생성 및 엑셀 저장
    df = pd.DataFrame(stock_list)
    df.to_excel("current_stock_prices.xlsx", index=False)
    print("엑셀 파일 저장 성공")

if __name__ == "__main__":
    get_stock_data()
  • yfinance : 야후 파이낸스 API를 사용하는 라이브러리로, 별도의 키 발급 없이 무료로 데이터를 가져온다.

  • Ticker 설정 : 한국 주식의 경우 코스피는 .KS, 코스닥은 .KQ를 종목 코드 뒤에 붙여야 인식이 가능하다.

  • history(period='1d') : 가장 최근 거래일의 데이터를 호출한다. iloc[-1]을 통해 마지막에 찍힌 현재가를 가져온다.

  • to_excel : 판다스(Pandas)의 데이터프레임을 활용해 수집된 리스트를 즉시 엑셀 파일로 변환한다.

활용 및 확장 팁

윈도우 작업 스케줄러나 리눅스의 crontab을 활용하면 매 정각마다 시세를 자동 업데이트할 수 있다. 또한 본인이 보유한 매수 단가를 코드에 추가하면, 현재가와 비교하여 실시간 수익률을 계산하는 기능을 구현할 수 있다. 주의할 점은 너무 짧은 간격(예: 1초 미만)으로 과도하게 요청할 경우 야후 파이낸스 측에서 IP를 차단할 수 있으므로 적절한 시간 간격을 둔다.


더 보면 좋을 글들