Skip to content

junbit/market-leader

Repository files navigation

로컬 LLM을 활용한 일일 주도주 분석 자동화 시스템

매일 오전 8시에 전날 한국 주식시장(KOSPI/KOSDAQ)에서 강세를 보인 종목과 테마를 자동으로 분석해 이메일 리포트로 발송하는 Python 기반 자동화 프로그램입니다.

이 프로젝트의 핵심은 단순 크롤링이 아니라, 요즘 널리 쓰이는 로컬 LLM인 qwen3.5:9b를 활용해 "어제 어떤 종목이 왜 올랐는지"를 자동으로 요약하고 정리하는 데 있습니다. 유료 외부 AI API 없이 내 컴퓨터에서 직접 모델을 돌려, 개인 투자용 시장 요약 리포트를 자동 생성하는 것이 주요 취지입니다.

✨ 주요 기능

  • 급등주 데이터 수집: 한국 주식시장 급등 종목과 테마 데이터를 수집합니다.
  • 주도주 필터링: 상승률 20% 이상, 거래대금 1,000억 원 이상 기준으로 실제 시장 주도 종목만 선별합니다.
  • 로컬 LLM 기반 상승 원인 요약: 관련 뉴스 제목을 바탕으로 qwen3.5:9b 모델이 상승 이유를 1~3문장으로 요약합니다.
  • 로컬 LLM 기반 시장 흐름 정리: 주도주와 테마를 함께 보고 당일 시장 핵심 흐름을 요약합니다.
  • 리포트 생성 및 발송: Markdown 리포트를 생성하고 HTML 이메일로 변환해 Gmail SMTP로 발송합니다.
  • 자동 실행: cron 또는 launchd로 매일 아침 자동 실행할 수 있습니다.

🧠 로컬 LLM 포인트

  • 핵심 요약 엔진은 qwen3.5:9b 입니다.
  • 요즘 많이 활용되는 Qwen 3.5 계열 모델 중 비교적 가볍게 돌릴 수 있는 9B 모델을 사용합니다.
  • 외부 유료 AI API 없이 로컬 환경에서 직접 실행해 종목별 상승 원인과 시장 흐름을 요약합니다.

📡 현재 구현 기준 데이터 소스

현재 코드 기준으로 주로 아래 소스를 사용합니다.

  • 네이버 금융: 상승률 상위 종목, 테마 정보
  • Google News RSS: 종목별 관련 뉴스
  • Telegram 공개 채널: 보조 참고 메시지
  • 로컬 LLM (qwen3.5:9b): 종목별 상승 원인 및 시장 요약 생성

📁 폴더 구조

.
├── analyzers/      # 테마 분석, Ollama 요약
├── collectors/     # 종목/테마/뉴스/텔레그램 수집
├── data/           # 날짜별 원본 데이터(JSON)
├── filters/        # 주도주 필터링 로직
├── logs/           # 날짜별 실행 로그
├── reporters/      # Markdown 리포트 생성, 이메일 발송
├── reports/        # 날짜별 Markdown 리포트
├── scripts/        # 자동 실행 스크립트
├── config.py       # 환경변수/기본 설정
└── main.py         # 메인 실행 진입점

⚙️ 동작 방식

  1. 전일 영업일 기준으로 분석 대상을 결정합니다.
  2. 네이버 금융에서 상승률 상위 종목을 수집합니다.
  3. 거래대금과 종목명을 기준으로 ETF/스팩 등을 제외하고 주도주를 선별합니다.
  4. 테마 데이터와 관련 뉴스 데이터를 수집합니다.
  5. 로컬 LLM qwen3.5:9b로 종목별 상승 원인과 시장 전체 흐름을 요약합니다.
  6. Markdown 리포트와 JSON 데이터를 저장합니다.
  7. HTML 이메일로 변환해 지정한 수신자에게 발송합니다.

✅ 요구 사항

  • Python 3.11+
  • macOS 또는 Linux 권장
  • 로컬 LLM 실행 환경
  • Gmail SMTP 사용 가능한 계정

🚀 설치 방법

1. 저장소 클론

git clone https://github.com/junbit/market-leader.git
cd market-leader

2. 가상환경 생성 및 패키지 설치

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. 로컬 LLM 준비

이 프로젝트는 로컬에서 직접 실행하는 경량 LLM을 활용해 뉴스 요약과 시장 흐름 정리를 자동화합니다.

권장 모델은 qwen3.5:9b 입니다.

  • 최근 많이 활용되는 Qwen 3.5 계열 모델
  • 로컬에서 돌리기 부담이 비교적 적은 9B 규모
  • 이 프로젝트의 종목 뉴스 요약, 시장 흐름 요약 용도에 적합한 균형형 모델

예시:

ollama pull qwen3.5:9b
ollama serve

기본 설정은 http://127.0.0.1:11434 를 사용합니다.

4. 환경변수 설정

.env.example을 복사해 .env 파일을 만든 뒤 값을 채워주세요.

cp .env.example .env

필수 항목:

  • OLLAMA_BASE_URL
  • OLLAMA_MODEL
  • SMTP_HOST
  • SMTP_PORT
  • SMTP_USER
  • SMTP_PASSWORD
  • MAIL_FROM
  • MAIL_TO

▶️ 실행 방법

기본 실행

python3 main.py

기본적으로 가장 최근 영업일을 기준으로 분석하고 이메일까지 발송합니다.

옵션

python3 main.py --date 2026-03-23
python3 main.py --no-email
python3 main.py --skip-ai
  • --date: 특정 날짜를 직접 지정합니다.
  • --no-email: 리포트는 저장하지만 이메일은 보내지 않습니다.
  • --skip-ai: 로컬 LLM 요약을 생략합니다.

⏰ 자동 실행

예시 스크립트는 scripts/run_daily.sh에 있습니다.

30 7 * * 1-5 /path/to/market-leader/scripts/run_daily.sh

평일 오전 7시 30분에 실행해 전일 데이터를 수집하고, 오전 8시 전후 리포트 발송을 목표로 합니다.

📝 출력물

  • reports/YYYY-MM-DD.md: 사람이 읽는 Markdown 리포트
  • data/YYYY-MM-DD.json: 분석 결과 원본 데이터
  • logs/YYYY-MM-DD.log: 실행 로그

🔧 설정값

기본 필터 기준은 config.py에 정의되어 있습니다.

  • 최소 상승률: 20.0%
  • 최소 거래대금: 1000억 원

⚠️ 주의 사항

  • 이 프로젝트는 외부 웹페이지 구조에 의존하는 스크래핑 기반 도구입니다. 사이트 구조가 바뀌면 수집이 깨질 수 있습니다.
  • 뉴스 제목 기반 요약과 LLM 생성 결과에는 부정확함이나 과도한 추론이 포함될 수 있습니다.
  • 이 프로젝트는 투자 자문 도구가 아니라 정보 정리 자동화 도구입니다.

💸 비용과 운영 특성

  • 유료 API 없이 웹 스크래핑과 로컬 LLM을 사용하므로 운영 비용이 낮습니다.
  • qwen3.5:9b 같은 경량 로컬 모델을 활용해 네트워크 AI API 비용 없이 요약 기능을 사용할 수 있습니다.
  • 이메일 발송은 Gmail SMTP 설정이 필요합니다.

📄 라이선스

MIT

About

로컬 LLM을 활용한 한국 주식시장 일일 주도주 분석 자동화 시스템

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors