프롤로그: 정보 과부하 시대, AI 필터가 필요한 이유
매일 쏟아지는 수많은 주식 뉴스 중, 진짜 시장에 영향을 미칠 핵심 정보는 몇 개 되지 않습니다. 게다가 외부 AI 서비스를 쓰면 민감한 투자 정보를 외부에 노출할 위험이 있습니다 ❌.
나노 바나나 프로의 로컬 LLM은 이러한 문제들을 해결합니다. 빠른 속도로 대량의 뉴스를 읽고, 사적인 금융 정보를 외부에 유출하지 않으면서 핵심 내용과 시장 반응을 분석하여 즉시 알림을 보냅니다.
🌟 핵심 기능: 크롤링된 뉴스 필터링 $\rightarrow$ 로컬 LLM이 시장 심리/영향 분석 $\rightarrow$ 위험 감지 시 텔레그램 알림
1. ⚙️ 1단계: 준비물 및 데이터 수집 환경 구축
성공적인 주식 감지 시스템을 위해, LLM 이전에 ‘시장 뉴스’라는 원재료를 확보해야 합니다.
① 뉴스 데이터 수집기 설치
- 추천 방법: Python의
feedparser라이브러리를 활용하여 주요 경제 뉴스 채널(예: 연합뉴스, 한국경제)의 RSS 피드를 주기적으로 읽어옵니다. (웹 크롤링보다 안정적) - 필수 라이브러리:
pip install feedparser python-telegram-bot requests
② 텔레그램 알림 채널 준비
- 채널 생성: 텔레그램에서 나만 볼 수 있는 채널을 만듭니다.
- 봇 생성: BotFather를 통해 봇을 생성하고 API 토큰과 Chat ID를 준비합니다. (스크립트에 사용될 핵심 정보)
2. 🧠 2단계: AI의 핵심 역할 – 필터링 및 심리 분석 (Deep Dive)
수집된 뉴스 텍스트를 로컬 LLM에게 전달하여 ‘이 뉴스가 시장에 긍정적인가? 부정적인가? 영향도는 어느 정도인가?’를 분석하게 만듭니다.
① LLM API 호출 함수 (Python)
이전 가이드에서 작성한 LLM 호출 함수를 재사용합니다. 다만, 프롬프트를 분석 특화형으로 바꿉니다.
② 프롬프트 엔지니어링 (핵심)
LLM에게 단순 요약 대신, 구조화된 JSON 형태의 답변을 요청하여 파싱(Parsing)이 쉽도록 만듭니다.
LLM에게 주는 명령(Prompt)
“아래 뉴스 기사를 읽고 다음 세 가지 항목을 분석하여 JSON 형식으로만 출력해줘.
'summary'(2줄 이내 요약)'sentiment'(긍정, 부정, 중립 중 택 1)'impact_score'(0점(무관)부터 10점(매우 큼) 사이의 영향 점수)”
- Deep Tip: JSON 출력을 강제하려면 프롬프트 마지막에 “Output only JSON.” 또는 “결과물은 JSON 형식 외에 다른 텍스트를 포함하지 말 것.”을 추가하세요.
3. 🚨 3단계: 위험 감지 및 텔레그램 알림 발송 스크립트
LLM이 분석한 결과를 기반으로 사용자에게 알림을 보낼지 말지를 결정합니다.
① 알림 발송 조건 설정
- 조건: LLM 분석 결과
impact_score가 7점 이상이거나,sentiment가 ‘부정’일 경우에만 알림을 보냅니다. - 스크립트 로직:
- LLM 분석 결과를 Python
json.loads()로 파싱합니다. if score >= 7 or sentiment == '부정':이 참일 경우에만 텔레그램 발송 함수를 호출합니다.
- LLM 분석 결과를 Python
② 텔레그램 알림 스크립트 예시
Python
import telegram
# ... LLM 분석 로직 실행 후 ...
# NBP의 로컬 AI 분석 결과 메시지 생성
message = (
f"🚨 [AI 긴급 감지 알림] 🚨\n"
f"시장 심리: {sentiment}\n"
f"영향 점수: {score}점\n"
f"요약: {summary}"
)
# 텔레그램 봇으로 메시지 발송
bot = telegram.Bot(token='준비된 텔레그램 API 토큰')
bot.send_message(chat_id='준비된 챗 ID', text=message)
4. ⏰ 4단계: 주식 시장 시간에 맞춘 자동 예약 (Crontab)
스크립트가 한국 주식 시장 시간(KST)에 맞춰 주기적으로 실행되도록 Crontab을 설정합니다.
– Crontab 설정 명령어
Bash
crontab -e
– 실행 예약 예시 (시장 개장 10분 전 ~ 마감 시점)
시장 개장 전(오전 8시 50분)과 장 중 주요 시간대(오전 10시, 오후 1시 30분)에 스크립트가 실행되도록 설정합니다.
Plaintext
# 분 시 일 월 요일 명령어
50 8 * * 1-5 python3 /path/to/script/stock_alert.py # 8시 50분 (개장 전)
0 10 * * 1-5 python3 /path/to/script/stock_alert.py # 10시 00분 (장 중)
30 13 * * 1-5 python3 /path/to/script/stock_alert.py # 13시 30분 (오후장)
Deep Tip: 주말(토, 일, 요일 0, 6)에는 실행되지 않도록
1-5를 명시했습니다. 명령어를 실행하기 전 반드시 SSH 환경에서 스크립트가 잘 작동하는지 확인해야 합니다.
5. ❌ 현실적인 한계 및 극복 방안
| 문제 상황 | 원인 | 극복 방안 |
| 뉴스 분석 속도 지연 | LLM 모델이 너무 크거나(예: Llama 8B 이상), NPU를 제대로 활용하지 못함. | Q4 양자화 모델(TinyLlama 등)을 고정 사용하고, NPU 연결 옵션을 재확인합니다. |
| 오보 알림 발송 | AI가 금융 용어의 뉘앙스를 오해함. | 프롬프트에 ‘투자 자문이 아님을 인지하고, 객관적인 사실만 분석할 것’ 등의 제약 조건을 추가합니다. |
| 빈번한 알림 | impact_score 기준이 너무 낮음 (예: 5점). | 초기에는 기준 점수를 8점 이상으로 높게 설정하고, 점차 점수를 낮춰가며 최적의 민감도를 찾습니다. |
🌟 결론: 나노 바나나 프로와 로컬 LLM을 결합한 이 시스템은 개인 투자자에게 맞춤형, 비공개, 자동화된 시장 감시 능력을 제공합니다. 이제 여러분의 NBP는 단순한 서버가 아닌, 24시간 시장을 분석하는 나만의 금융 비서가 됩니다.