콘텐츠로 이동

5장: Claude Code로 주식 뉴스봇 만들기

AI가 주요 인물의 뉴스를 감지해서 관련 종목을 알려주는 봇


목차

  1. 뉴스봇이 뭔가요?
  2. 어떻게 동작하나요?
  3. 프로젝트 준비
  4. Claude Code로 만들기
  5. 텔레그램 알림 설정
  6. 실행하고 테스트하기
  7. 자동 실행 설정

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 응답이 바뀐 것 같아, 수정해줘"라고 요청하세요.