주식 데이터 수집하기
먼저, 어디서 주가 데이터를 가져올지 정하겠습니다. 한국 주식 데이터를 가져올 수 있는 곳은 여러 군데 있습니다.
이번 실습에서는 pykrx를 사용합니다. 이유는 다음과 같습니다.
한국거래소(KRX)의 공식 공개 데이터를 기반으로 하므로 정책상 가장 안전합니다.
API 키 발급 없이 간단한 설치만 하면 바로 사용할 수 있습니다.
일별 시가/고가/저가/종가/거래량(OHLCV) 데이터를 깔끔하게 가져옵니다.
네이버 금융은 2021년 1월부터 웹 크롤러 차단을 강화했습니다. robots.txt에서 대부분의 경로를 금지하고 있습니다. 직접 크롤링은 권장하지 않습니다.
01 주가 데이터 수집 환경을 만들겠습니다. 먼저 pykrx라는 파이썬 라이브러리를 설치해야 합니다. 저는 에이전트의 데이터 분석 기능을 같이 사용하기 위해 이전 챕터에서 만든 데이터 분석 봇을 사용하겠습니다. 새롭게 에이전트를 만들어도 좋습니다.
직접 설치하고 싶다면 터미널에 pip install pykrx 명령어를 실행하세요.
[나]
pykrx 파이썬 라이브러리를 설치하고, 삼성전자(005930)와 SK하이닉스(000660)의 최근 6개월 일별 종가를 가져와서 보여줘.
[/나]
결과를 보면 오픈클로가 같은 폴더 내에 코드를 생성해 실행하고 결과를 가져왔습니다.
02 폴더에 들어가서 실제 생성된 코드와 데이터 파일을 확인해보세요. 제대로 가져온 것 같습니다. 그런데 두 종목의 주가를 단순히 비교하면 가격 차이가 너무 커서 의미 있는 비교가 어렵습니다. 삼성전자가 18만 원이고 SK하이닉스가 88만 원이니까요.
03 그래서 주가 비율Price Ratio을 사용합니다. 주가 비율을 적용하면 비교를 적절한 수준에서 할 수 있습니다. 두 주식은 같은 반도체 업종이라 보통 비슷하게 움직이는데, 가끔 벌어지는 순간이 있습니다. 이때 주가 비율을 사용하면 어느 쪽이 과도하게 움직였는지 파악할 수 있습니다. 트레이더들이 페어 트레이딩Pair Trading에서 쓰는 기법입니다.
```
주가 비율 = 삼성전자 종가 ÷ SK하이닉스 종가
```
04 이제 주가 비율을 적용해서 데이터 크롤링한 뒤 그래프 생성을 해보겠습니다. 텔레그램에서 이렇게 요청합니다.
[나]
/Users/conanssam-m4/.openclaw/workspace-edabot/stock_prices.csv 데이터를 보고 두 종목의 주가 비율(삼성전자÷SK하이닉스) 그래프를 그려줘. 20일 이동평균선도 같이 그려주고, 평균에서 1 표준편차 벗어나면 밴드로 표시해줘. 차트는 이미지로 저장해줘.
[/나]
그러면 오픈클로가 이런 분석을 수행합니다.
[오픈클로]
[/오픈클로]
차트에는 다음이 표시됩니다.
파란 선 : 삼성전자·SK하이닉스 일별 비율
주황선 : 20일 이동평균선
분홍 영역 : ±1 표준편차 밴드
빨간 삼각형 : 상단 돌파 지점 / 파란 삼각형: 하단 이탈 지점
매일 주식 시장 리포트 받기
이번에는 글로벌 시장 전체를 한눈에 볼 수 있는 아침 리포트를 만듭시다. 야후 파이낸스Yahoo Finance에서 주요 지수와 자산의 전날 움직임을 자동으로 정리해서 매일 아침 텔레그램으로 받아보는 겁니다.
여기서 우리가 추적할 데이터는 주요 지수와 대표 자산입니다. 이것을 보는 게 개별 주식 가격을 보는 것보다 효율적입니다. 이 4가지만 보면 “어제 시장이 위험 선호인지, 안전 선호인지”를 바로 알 수 있습니다.
그럼 바로 시작해봅시다.
01 먼저 야후 파이낸스 데이터를 가져올 수 있는 yfinance 라이브러리를 설치합니다. yfinance는 야후 파이낸스의 공개 데이터를 가져오는 오픈소스 라이브러리입니다. API 키 없이 바로 사용할 수 있습니다. 개인 용도로 사용하기에 안전하지만 대량 요청은 자제해야 합니다.
직접 설치하고 싶다면 터미널에 pip install yfinance 명령어를 실행합니다.
[나]
yfinance 파이썬 라이브러리를 설치해줘.
[/나]
02 그런 다음 오픈클로에게 크론잡 생성을 요청합니다. 오픈클로가 크론잡을 생성하면, 대시보드에서 [Agent → Cron Jobs] 탭을 클릭해 세부 내역을 확인할 수 있습니다. 스케줄, 활성화 상태, 다음 실행 시간 등이 표시됩니다.
[나]
매일 아침 8시에 야후 파이낸스에서 나스닥, S&P 500, 금, 비트코인의 전날 가격 변동을 가져와서 텔레그램으로 리포트하는 크론잡을 만들어줘.
[/나]
03 매일 아침 8시가 되면 텔레그램으로 이런 메시지가 자동으로 옵니다. 이 리포트 하나면 매일 아침 30초 만에 글로벌 시장 분위기를 파악할 수 있습니다.
미국 증시는 한국 시간 기준 새벽에 마감합니다 (서머타임 오전 5시, 겨울 오전 6시). 아침 8시 리포트에는 전날 미국 마감 데이터를 반영합니다. 시차에 유의하세요.
[오픈클로]
여기서는 과정은 간단했지만 앞에서 배운 데이터 수집 패턴을 그대로 적용했습니다. 이런 방식으로 데이터를 수집할 계획을 세워두면 다양한 분야에서 써먹을 수 있으니 여러분도 충분한 연습을 한 뒤 자신에게 맞는 방법으로 데이터 수집 파이프라인을 만들어보세요.
데이터 소스 선택 (어디서 가져올지)
수집 스크립트 요청 (오픈클로가 코드 작성)
분석 로직 지정 (무엇을 보고 싶은지)
스케줄 설정 (언제 자동 실행할지)
리포트 형식 결정 (어떻게 받을지)
지금까지 국내 주식은 pykrx(한국거래소 기반)로, 글로벌 시장 흐름은 yfinance(야후 파이낸스 기반)로 나스닥·S&P 500·금·비트코인의 전일 움직임을 매일 아침 자동으로 받아보는 시스템을 만들었습니다. 이 방법을 공부하면 환율, 미세먼지, 부동산, 뉴스 등 어떤 데이터에도 적용할 수 있습니다.
