소개
매일 장 시작 전과 마감 후에 KOSPI, 환율, 해외 지수를 직접 찾아보는 게 번거로웠습니다. 이 과정을 자동화해서 정해진 시간에 텔레그램으로 자동 수신하고 싶었고, 더 나아가 로컬 AI(Ollama llama3)가 뉴스를 분석해서 상승/하락 주의 종목과 단기·중장기 투자 포인트까지 함께 알려주는 시스템을 구축했습니다.
진행 방법
사용 도구
코워크 (Cowork) — 전 체 코드 작성, 오류 수정, 기능 확장 담당
Yahoo Finance (yfinance) — KOSPI, KOSDAQ, 환율, 해외 지수 수집
네이버 뉴스 검색 API — 최신 금융 뉴스 수집 (무료)
Ollama (llama3) — 로컬 AI로 뉴스 분석, 종목 시그널 + 투자 포인트 생성
텔레그램 봇 — 분석 결과 실시간 알림
Windows 작업 스케줄러 — 평일 08:50 / 15:35 자동 실행
시스템 구조
Windows 작업 스케줄러
↓ (평일 08:50 / 15:35 자동 실행)
run.bat
↓
investment_alert.py
├── Yahoo Finance → 시세 수집 (KOSPI, 환율, 해외지수)
├── 네이버 뉴스 API → 최신 뉴스 수집
└── Ollama llama3 → AI 분석
↓
텔레그램 전송
run.bat내용만 수정하면 스케줄러가 자동으로 반영됩니다.
사용한 프롬프트 (코워크)
초기 요청:
투자 정보 자동화 — KOSPI/KOSDAQ, 환율, 해외지수(나스닥/S&P500) 수집해서 텔레그램으로 평일 오전+오후 하루 2회 자동 전송해줘
AI 분석 추가 요청:
AI 뉴스 요약으로 상승 주의, 하락 주의 종목 나오게 못하나
중장기 분석 추가:
단기적인것만 아니고 중장기적인 요소도 있으면 분석해주면 안되나
AI에게 보내는 프롬프트 (llama3)
당신은 한국 주식시장 전문 애널리스트입니다.
아래 오늘의 시장 데이터와 최신 뉴스를 분석하여
단기/중장기 관점을 모두 포함한 투자 인사이트를 제공해주세요.
[오늘 시장 데이터]
KOSPI 2,580.12 ▲12.34, NASDAQ 19,200.00 ▲150.00, USD/KRW 1,381.20 ...
[최신 금융 뉴스]
- 삼성전자 HBM 수주 확대...
- SK하이닉스 실적 개선 전망...
## 📋 시장 요약
## 📈 상승 주의 종목
## 📉 하락 주의 종목
## 📅 단기 포인트 (1~2주)
## 📆 중장기 포인트 (1~6개월)
## 💡 오늘의 한 줄 전략생성된 핵심 코드
investment_alert.py
python
import json, re, requests, yfinance as yf
from datetime import datetime
from html import unescape
# 시세 수집 (Yahoo Finance)
TICKERS = {
"KOSPI": ("^KS11", "index"), "KOSDAQ": ("^KQ11", "index"),
"NASDAQ": ("^IXIC", "index"), "S&P500": ("^GSPC", "index"),
"USD/KRW": ("USDKRW=X", "fx"), "EUR/KRW": ("EURKRW=X", "fx"),
}
# 네이버 뉴스 수집
def fetch_naver_news(query, display=20):
url = "https://openapi.naver.com/v1/search/news.json"
headers = {"X-Naver-Client-Id": NAVER_CLIENT_ID,
"X-Naver-Client-Secret": NAVER_CLIENT_SECRET}
res = requests.get(url, headers=headers,
params={"query": query, "display": display, "sort": "date"})
return [re.sub(r"<[^>]+>", "", item["title"]) for item in res.json()["items"]]
# Ollama AI 분석
def analyze_with_ollama(news_lines, market_data):
prompt = f"""당신은 한국 주식시장 전문 애널리스트입니다...
[시장 데이터] {market_data}
[뉴스] {news_lines}
→ 시장요약 / 상승종목 / 하락종목 / 단기포인트 / 중장기포인트 / 한줄전략"""
res = requests.post("http://localhost:11434/api/generate",
json={"model": "llama3", "prompt": prompt, "stream": False})
return res.json()["response"]config.json
json
{
"telegram": { "bot_token": "...", "chat_id": "..." },
"naver": { "client_id": "...", "client_secret": "..." },
"ollama": { "model": "llama3", "url": "http://localhost:11434" }
}run.bat (수정하면 스케줄 자동 반영)
batch
@echo off
cd /d "%~dp0"
python -c "import yfinance" 2>nul || pip install yfinance -q
python investment_alert.py
pause텔레그램 수신 예시
📊 매크로 지표 — 2026-06-02 08:50
🇰🇷 국내 지수
KOSPI 2,580.12 ▲12.34 (0.48%)
KOSDAQ 850.21 ▼3.10 (0.36%)
💱 환율
USD/KRW 1,381.20 ▼2.10 (0.15%)
🌐 해외 지수
NASDAQ 19,200.00 ▲150.00 (0.79%)
S&P500 5,300.00 ▲30.00 (0.57%)
──────────────────────────────
🤖 AI 시장 분석
📋 시장 요약
미국 금리 동결 기대감으로 코스피 강보합 예상...
📈 상승 주의 종목
삼성전자 — HBM 수주 확대, 외국인 순매수 지속
SK하이닉스 — AI 반도체 수요 증가 호재
📉 하락 주의 종목
카카오 — 규제 리스크 및 실적 우려 지속
📅 단기 포인트 (1~2주)
이번 주 미국 CPI 발표, 환율 변동성 주의
📆 중장기 포인트 (1~6개월)
반도체 사이클 회복 국면 진입, 금리 인하 시 성장주 재평가
💡 오늘의 한 줄 전략
낙폭 과대 반도체주 분할 매수 관심 유효결과와 배운 점
시행착오
네이버 금융 스크래핑 실패 — JavaScript 렌더링 방식이라 BeautifulSoup으로 값이 전부 N/A → yfinance로 전환해서 해결
텔레그램 Markdown 파싱 오류 — 뉴스 제목의 특수문자(
*,_)가 오류 유발 → HTML 모드로 전환Windows 스케줄러 한글 깨짐 — bat 파일에서 한글 태스크명 인코딩 오류 → 영문 이름으로 변경
배운 점
로컬 AI(Ollama)는 API 키 없이 무료로 고품질 분석 가능
키워드 매칭보다 LLM 프롬프트가 훨씬 정교한 분석 결과를 냄
run.bat→ 스케줄러 구조로 만들면 코드 수정 시 재등록 불필요
앞으로의 계획
관심 종목 목표가 도달 시 즉시 알림 (조건부 알림)
외국인/기관 순매수 상위 종목 포함
RSI, MACD 기술적 지표 계산 추가
더 강력한 로컬 AI 모델로 교체 시 분석 품질 향상
세팅 체크리스트
Python 설치
pip install yfinance requestsOllama 설치 +
ollama pull llama3텔레그램 봇 생성 (BotFather) → Token + Chat ID
네이버 개발자 센터 앱 등록 → Client ID + Secret
config.json값 입력register_schedule.bat관리자 권한으로 1회 실행