파이썬 yfinance 및 ccxt 활용: 글로벌 주식·해외 선물·코인 OHLCV 데이터 자동 수집 시스템 구축 방법
안녕하세요! 블로그 운영하시면서 주가나 코인 데이터 자동으로 싹 긁어오고 싶었던 적 있으시죠? 오늘은 파이썬 라이브러리 두 개로 글로벌 주식부터 해외 선물, 암호화폐 OHLCV(시가·고가·저가·종가·거래량) 데이터를 자동으로 수집하는 시스템을 아주 깔끔하게 정리해 드릴게요. 바로 쓰실 수 있게 준비했으니 천천히 따라와 보세요!
1. 들어가며: 왜 데이터 자동 수집 시스템이 필수일까?
개인 투자 분석, 퀀트 투자, 혹은 블로그에 유용한 투자 인사이트를 공유하기 위해서는 정확한 데이터가 생명입니다. 매번 수동으로 차트를 캡처하거나 엑셀에 가격을 입력하는 것은 시간낭비일 뿐만 아니라 휴먼 에러를 유발하기 쉽습니다.
특히 글로벌 주식(미국 주식, ETF 등)과 해외 선물, 그리고 변동성이 큰 암호화폐 데이터까지 한 번에 연동하여 자동 수집할 수 있다면 분석의 폭이 넓어지고 블로그 콘텐츠의 질도 확연히 높아집니다. 오늘 포스팅에서는 파이썬의 대표적인 금융 데이터 라이브러리인 yfinance와 ccxt를 활용해 누구나 쉽게 구축할 수 있는 OHLCV 자동 수집 파이프라인을 소개합니다.
2. 필수 라이브러리 소개 및 설치
파이썬 환경에서 글로벌 마켓과 코인 데이터를 가져오기 위해 가장 널리 쓰이는 두 가지 도구입니다.
yfinance (Yahoo Finance): 야후 파이낸스의 방대한 금융 데이터를 파이썬으로 손쉽게 가져올 수 있는 라이브러리입니다. 미국 주식, 지수, 환율, 해외 선물 데이터(지수 선물 등)의 일봉/분봉 조회에 최적화되어 있습니다.
ccxt (Crypto Currency eXchange Trading Library): 바이낸스, 바이비트, OKX 등 전 세계 수십 개 암호화폐 거래소의 API를 통합 표준화하여 제공하는 라이브러리입니다. 암호화폐뿐만 아니라 주요 거래소에서 지원하는 파생상품(선물) OHLCV 데이터 수집에도 강력합니다.
패키지 설치 명령어
터미널이나 명령 프롬프트에서 아래 명령어를 입력해 패키지를 설치해 주세요.
pip install yfinance ccxt pandas
3. yfinance를 활용한 글로벌 주식 및 해외 선물 OHLCV 데이터 수집
먼저 yfinance를 사용해 애플(AAPL) 같은 글로벌 주식이나 S&P 500 같은 지수 및 선물 프록시 데이터를 수집하는 예제 코드입니다.
import yfinance as ticker_module
import pandas as pd
def get_stock_ohlcv(symbol, period="1mo", interval="1d"):
"""
yfinance를 이용한 주식 및 지수 OHLCV 데이터 수집 함수
"""
ticker = ticker_module.Ticker(symbol)
df = ticker.history(period=period, interval=interval)
# 필요한 컬럼만 추출 및 정제
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]
df.columns = ['Open', 'High', 'Low', 'Close', 'Volume']
return df
# 사용 예시: 애플(AAPL) 일봉 데이터 1개월치 수집
apple_data = get_stock_ohlcv("AAPL", period="1mo", interval="1d")
print("=== 애플(AAPL) 최근 OHLCV 데이터 ===")
print(apple_data.tail())
팁: 야후 파이낸스 티커 심볼 규칙만 알면 테슬라(
TSLA), 마이크로소프트(MSFT)뿐만 아니라 주요 해외 지수 및 선물 프록시 상품도 동일한 방식으로 코 한 줄 변경 없이 가져올 수 있습니다.
4. ccxt를 활용한 암호화폐 및 글로벌 선물 OHLCV 데이터 수집
다음으로 크립토 시장 및 주요 거래소의 파생상품(선물) 데이터를 수집하는 ccxt 활용법입니다. 바이낸스(Binance) 거래소를 예시로 살펴보겠습니다.
import ccxt
import pandas as pd
def get_crypto_ohlcv(symbol='BTC/USDT', timeframe='1d', limit=30):
"""
ccxt를 이용한 암호화폐 및 선물 OHLCV 데이터 수집 함수
"""
exchange = ccxt.binance()
# OHLCV 데이터 가져오기 (Open, High, Low, Close, Volume)
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=limit)
# 데이터프레임 변환
df = pd.DataFrame(ohlcv, columns=['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume'])
df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
df.set_index('Timestamp', inplace=True)
return df
# 사용 예시: 비트코인 일봉 데이터 30개 수집
btc_data = get_crypto_ohlcv('BTC/USDT', timeframe='1d', limit=30)
print("\n=== 비트코인(BTC/USDT) 최근 OHLCV 데이터 ===")
print(btc_data.tail())
import ccxt
import pandas as pd
def get_crypto_ohlcv(symbol='BTC/USDT', timeframe='1d', limit=30):
"""
ccxt를 이용한 암호화폐 및 선물 OHLCV 데이터 수집 함수
"""
exchange = ccxt.binance()
# OHLCV 데이터 가져오기 (Open, High, Low, Close, Volume)
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=limit)
# 데이터프레임 변환
df = pd.DataFrame(ohlcv, columns=['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume'])
df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
df.set_index('Timestamp', inplace=True)
return df
# 사용 예시: 비트코인 일봉 데이터 30개 수집
btc_data = get_crypto_ohlcv('BTC/USDT', timeframe='1d', limit=30)
print("\n=== 비트코인(BTC/USDT) 최근 OHLCV 데이터 ===")
print(btc_data.tail())
5. 자동 수집 시스템 확장 및 블로그 자동화 연동 팁
수집한 데이터를 단순히 콘솔에 띄우는 것에서 그치지 않고, 시스템으로 완성하려면 다음과 같은 단계를 추가할 수 있습니다.
자동화 스케줄링 (
schedule또는cron): 매일 장 마감 후 또는 특정 시간에 스크립트가 실행되어 데이터베이스(SQLite, MySQL 등)에 자동으로 적재되도록 설정합니다.시각화 및 리포트 생성:
matplotlib이나plotly를 활용해 캔들스틱 차트를 이미지로 자동 저장한 뒤, 블로그 발행 툴(예: 티스토리 API, WordPress API)과 연동해 자동으로 포스팅 초안을 생성하도록 구성합니다.에러 핸들링: 네트워크 지연이나 거래소 API 점검 시간에 대비해
try-except구문을 견고하게 작성하여 시스템이 멈추지 않도록 예외 처리를 반드시 포함해야 합니다.
6. 마치며
오늘은 파이썬의 강력한 두 라이브러리인 yfinance와 ccxt를 활용해 글로벌 주식, 해외 선물, 그리고 암호화폐의 OHLCV 데이터를 자동으로 수집하는 시스템의 뼈대를 만들어 보았습니다.
처음에는 코드가 낯설 수 있지만, 반복해서 실행해보고 본인만의 데이터베이스나 블로그 자동화 파이프라인에 녹여내다 보면 훨씬 더 효율적인 투자 분석 환경을 구축하실 수 있을 거예요. 늘 성공적인 투자와 즐거운 코딩 되시기를 바랍니다!
댓글
댓글 쓰기