투자 정보 자동화 — 매크로 지표 + AI 뉴스 분석 텔레그램 알림 구축

소개

매일 장 시작 전과 마감 후에 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 모델로 교체 시 분석 품질 향상


세팅 체크리스트

  1. Python 설치

  2. pip install yfinance requests

  3. Ollama 설치 + ollama pull llama3

  4. 텔레그램 봇 생성 (BotFather) → Token + Chat ID

  5. 네이버 개발자 센터 앱 등록 → Client ID + Secret

  6. config.json 값 입력

  7. register_schedule.bat 관리자 권한으로 1회 실행

1
2개의 답글

뉴스레터 무료 구독