5장: Claude Code로 주식 뉴스봇 만들기¶
AI가 주요 인물의 뉴스를 감지해서 관련 종목을 알려주는 봇
목차¶
1. 뉴스봇이 뭔가요?¶
한 줄 설명¶
"트럼프가 AI 관련 발언을 하면, 관련 한국 주식을 텔레그램으로 알려주는 봇"
왜 만드나요?¶
뉴스를 빠르게 보고 주식에 연결하려면 많은 시간이 필요합니다. 이 봇은 그 과정을 자동화합니다.
사람이 직접 할 때:
뉴스 확인 → 중요한 인물 찾기 → 관련 종목 검색 → 주식 확인
(30분 ~ 1시간)
뉴스봇이 할 때:
뉴스 수집 → 트리거 감지 → 종목 매핑 → 알림 발송
(10초)
6개월 백테스트 결과¶
실제 데이터로 테스트한 결과, 이런 패턴이 확인됐습니다:
| 트리거 인물 | 뉴스 내용 | 관련 종목 | D+7 수익 |
|---|---|---|---|
| 젠슨황 (엔비디아) | HBM 언급 | SK하이닉스 | +12.4% |
| 트럼프 | SMR 원전 허용 | 두산에너빌리티 | +14.6% |
| 저커버그 | 광통신 투자 | 대한광통신 | +14.5% |
| 머스크 | 로봇 발표 | 레인보우로보틱스 | +8~10% |
주의: 이것은 과거 데이터입니다. 투자 결정은 반드시 직접 판단하세요.
2. 어떻게 동작하나요?¶
봇의 흐름¶
① Toss Invest에서 최신 뉴스 가져오기
↓
② 트리거 인물 감지
(트럼프 / 젠슨황 / 저커버그 / 머스크 / 알트만 / 팀쿡)
↓
③ 관련 카테고리 분류
(HBM / 원전 / 광통신 / 로봇 / 전력)
↓
④ 매핑된 종목 + 현재가 + AI 시그널 수집
↓
⑤ 텔레그램으로 알림 발송
알림 예시¶
📈 SK하이닉스 (000660)
현재가: 187,500원
📰 뉴스: 젠슨황 "HBM4 공급 부족, 추가 확보 필요" 발언
👤 인물: 젠슨
🏷️ 카테고리: HBM
🤖 AI 시그널: AI 투자 확대 기대감
• 엔비디아 CEO 발언으로 고대역폭 메모리 수요 급증 전망
• KB증권 목표주가 상향
데이터는 어디서 오나요?¶
Toss Invest API를 사용합니다. Toss 증권 앱이 내부적으로 사용하는 데이터를 가져옵니다.
Toss 앱에서 보는 정보
├── 뉴스 (종목별, 전체 시장)
├── 현재가 / 차트
└── AI 시그널 ("왜 올랐는지")
↓
봇이 이 데이터를 자동으로 수집
비공식 API이므로 1초에 1번 이하로 요청합니다.
3. 프로젝트 준비¶
필요한 것¶
체크리스트:
[ ] Python 3.10 이상 (python --version으로 확인)
[ ] Claude Code 설치 및 로그인
[ ] Telegram 앱 (알림 수신용)
[ ] 터미널 (Mac: Terminal, Windows: PowerShell)
폴더 만들기¶
mkdir newsbot
cd newsbot
claude
4. Claude Code로 만들기¶
Step 1: 프로젝트 구조 생성¶
Claude Code에 이렇게 요청하세요:
Python으로 주식 뉴스봇을 만들거야.
아래 파일 구조를 만들어줘:
newsbot/
├── main.py (실행 진입점)
├── fetcher.py (Toss API에서 데이터 가져오기)
├── analyzer.py (뉴스에서 트리거 감지)
├── notifier.py (텔레그램 알림)
├── stocks.py (종목 매핑 테이블)
└── requirements.txt
각 파일에 간단한 설명 주석만 넣어줘. 내용은 아직 비워둬.
Step 2: 종목 매핑 테이블 입력¶
stocks.py에 다음 내용을 채워줘.
트리거 인물: 트럼프, 젠슨, 저커버그, 머스크, 알트만, 팀쿡
카테고리와 키워드:
- HBM: HBM, H200, DRAM, 고대역폭
- 원전/SMR: SMR, 원전, AI 전력, gigawatt
- 광통신: 광 모듈, CPO, 광통신, Hyperion
- 로봇: Optimus, 휴머노이드, 로봇, Physical AI
- 전력: 변압기, 전력, capex, 데이터센터
백테스트 통과 종목:
- SK하이닉스 (000660, A000660): HBM
- 한미반도체 (042700, A042700): HBM
- 두산에너빌리티 (034020, A034020): 원전, 전력
- HD현대일렉트릭 (267260, A267260): 전력
- 레인보우로보틱스 (277810, A277810): 로봇
- 대한광통신 (010170, A010170): 광통신
인물별 카테고리:
- 트럼프: HBM, 원전, 전력
- 젠슨: HBM, 광통신, 로봇
- 저커버그: 광통신, 전력, HBM
- 머스크: 로봇, 전력
- 알트만: HBM, 원전
- 팀쿡: HBM
Step 3: Toss API 연결¶
fetcher.py에 Toss Invest API 호출 함수를 만들어줘.
베이스 URL은 https://wts-info-api.tossinvest.com 이야.
필요한 함수:
1. get_market_news(size=30)
- GET /api/v2/news/?size=30
- 전체 시장 뉴스 가져오기
2. get_ai_signal(a_code)
- GET /api/v1/dashboard/wts/overview/ai-signals/detail
- 파라미터: productCode=A005930, productType=STOCKS
- 종목 AI 시그널 (왜 올랐는지)
3. get_price(a_code)
- GET /api/v1/c-chart/kr-s/{a_code}/day:1
- 파라미터: count=2, session=all, investMode=krx, useAdjustedRate=true
- 현재가 가져오기
요청 헤더: Accept: application/json, User-Agent: Mozilla/5.0
요청 사이에 1초 sleep 넣어줘 (rate limit 방지)
Step 4: 뉴스 분석기¶
analyzer.py에 뉴스 분석 함수를 만들어줘.
stocks.py의 데이터를 사용해.
뉴스 제목 + 요약 + 본문을 합쳐서:
1. 트리거 인물이 언급됐는지 확인
2. 카테고리 키워드가 있는지 확인
3. 인물 카테고리와 키워드 카테고리를 합쳐서
4. 해당 카테고리에 매핑된 종목 반환
트리거가 있는 뉴스만 결과로 반환해줘.
Step 5: 메인 실행 파일¶
main.py를 완성해줘.
흐름:
1. get_market_news()로 최신 뉴스 30개 가져오기
2. analyze_news()로 트리거 뉴스 찾기
3. 트리거가 있으면:
- 해당 종목의 현재가 (get_price)
- AI 시그널 (get_ai_signal)
- send_alert()로 알림 발송
4. 트리거가 없으면 "트리거 뉴스 없음" 출력
5. 텔레그램 알림 설정¶
5-1. 텔레그램 봇 만들기¶
1. Telegram 앱 실행
2. 검색창에 "@BotFather" 검색 후 대화 시작
3. /newbot 입력
4. 봇 이름 입력 (예: 나의뉴스봇)
5. 봇 아이디 입력 (예: my_newsbot_bot)
6. TOKEN 발급됨 (저장해두세요!)
발급된 TOKEN 예시:
7123456789:AAGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5-2. Chat ID 확인¶
1. 방금 만든 봇에게 "안녕" 메시지 보내기
2. 브라우저에서 아래 URL 접속:
https://api.telegram.org/bot{TOKEN}/getUpdates
(TOKEN을 실제 값으로 교체)
3. "chat" > "id" 값이 Chat ID
{
"message": {
"chat": {
"id": 123456789
}
}
}
5-3. 환경변수 설정¶
프로젝트 폴더에 .env 파일을 만들어 달라고 요청:
.env 파일을 만들어줘:
TELEGRAM_TOKEN=여기에_토큰_입력
TELEGRAM_CHAT_ID=여기에_채팅ID_입력
5-4. notifier.py 완성¶
notifier.py를 완성해줘.
.env 파일에서 TELEGRAM_TOKEN과 TELEGRAM_CHAT_ID를 읽어서
텔레그램으로 알림을 보내줘.
알림 메시지 형식:
📈 종목명 (종목코드)
현재가: 000,000원
📰 뉴스: 뉴스 제목
👤 인물: 트리거된 인물
🏷️ 카테고리: 카테고리명
🤖 AI 시그널: 한 줄 설명
• 이유 1
• 이유 2
6. 실행하고 테스트하기¶
패키지 설치¶
pip install -r requirements.txt
첫 실행¶
python main.py
예상 출력¶
트리거가 없을 때:
=== 뉴스봇 실행 ===
트리거 뉴스 없음
트리거가 있을 때:
=== 뉴스봇 실행 ===
📰 젠슨황 "HBM 수요 급증" 발언
인물: ['젠슨']
카테고리: ['HBM']
→ SK하이닉스 (000660) 현재가: 187,500원
AI 시그널: AI 반도체 수요 확대
그리고 텔레그램으로 알림이 도착합니다!
에러가 났을 때¶
Claude Code에 에러 메시지를 그대로 붙여넣으세요:
실행하니까 이런 에러가 났어:
[에러 메시지 전체 복사해서 붙여넣기]
7. 자동 실행 설정¶
10분마다 자동 실행¶
main.py를 수정해줘.
장 시간(9시 ~ 15시 30분) 동안 10분마다 자동으로 실행되게 해줘.
schedule 라이브러리를 사용해줘.
백그라운드 실행¶
# 터미널을 닫아도 계속 실행
nohup python main.py &
# 중지하려면
kill %1
핵심 요약¶
| 개념 | 설명 |
|---|---|
| Toss API | 뉴스·시세·AI 시그널을 무료로 가져오는 방법 |
| 트리거 인물 | 트럼프·젠슨황·저커버그·머스크·알트만·팀쿡 |
| 카테고리 매핑 | 뉴스 키워드 → 관련 종목 자동 연결 |
| Claude Code | 코드는 Claude가 작성, 나는 요청만 |
| 텔레그램 알림 | 스마트폰으로 즉시 수신 |
자주 묻는 질문¶
Q. 코딩을 몰라도 되나요?
A. 네. Claude Code가 코드를 작성합니다. 요청하는 방법만 알면 됩니다.
Q. 이 봇으로 자동매매가 되나요?
A. 아니요. 알림만 보내고, 실제 매매는 직접 해야 합니다.
Q. 돈이 드나요?
A. Toss API와 텔레그램은 무료입니다. Claude Code API 비용만 발생합니다.
Q. API가 안 되면요?
A. 비공식 API라 언제든 바뀔 수 있습니다. 그럴 경우 Claude Code에 "API 응답이 바뀐 것 같아, 수정해줘"라고 요청하세요.