목차

Applications · REPO · 2026

AI Stock Analysis System (daily_stock_analysis)

ZhuLinsen · github.com ↗ · ↳ 4 links

AI Stock Analysis System (daily_stock_analysis)

요약

daily_stock_analysis는 관심종목 목록을 매일 자동으로 분석해 종목별 매수와 관망과 매도 판정을 내리고, 그 결과를 메신저로 전송하는 오픈소스 시스템이다. 저자는 ZhuLinsen이고 라이선스는 MIT이며 Python 3.10 이상에서 구동된다.

이 저장소가 다른 LLM 응용 사례와 구별되는 지점은 대상 시장의 범위와 배포 문턱이다. A주, 홍콩, 미국, 일본, 한국, 대만 6개 시장과 ETF를 하나의 관심종목 목록에서 함께 다루고, 서버를 마련하지 않고 GitHub Actions만으로 정기 실행을 구성할 수 있게 설계되어 있다.

이 페이지의 근거는 저장소의 영문판 README 한 장이다. README는 세부 규칙 대부분을 별도 가이드 문서로 위임하므로, 아래 서술은 README가 직접 밝힌 범위에 한정된다. 저장소가 제시하는 출력 예시의 점수와 지수 수치는 형식을 보여주기 위한 예시 값이며 측정된 투자 성과가 아니다.

배경

개인 투자자가 여러 시장의 종목을 매일 확인하려면 시세, 뉴스, 공시, 기술지표를 시장마다 다른 경로에서 모아야 한다. 이 저장소는 그 수집과 판단과 전달을 하나의 자동 실행 경로로 묶는다.

README가 부제로 밝힌 흐름은 세 단계다. 관심종목을 매일 분석하고, 의사결정 대시보드를 생성하며, 텔레그램과 디스코드와 슬랙과 이메일과 위챗워크와 페이슈로 전송한다.

이 구성에서 사용자가 감당해야 하는 준비물은 두 가지로 줄어든다. AI 모델 provider의 API 키 하나와 알림 채널 하나다. 시장 데이터는 무료 소스가 기본 포함되어 있어 별도 자격증명 없이도 실행된다.

문서 구조도 같은 방향으로 설계되어 있다. README는 진입 절차만 담고, 상세 필드, 펀더멘털 P0 timeout 의미, 거래 규칙, 데이터 소스 우선순위, Web와 API 동작, 문제 해결 방법은 full-guide_EN.md로, 모델 설정은 LLM_CONFIG_GUIDE_EN.md로, 시장 경계는 market-support.md로 넘긴다.

핵심 개념

이 절은 이후 서술에 필요한 용어를 먼저 풀이한다.

관심종목(watchlist) 은 시스템이 매일 분석할 대상 종목의 목록이다. 이 저장소에서는 STOCK_LIST라는 이름의 설정 값 하나에 쉼표로 구분해 담으며, 이 값이 유일한 필수 설정이다.

의사결정 대시보드(Decision Dashboard) 는 하루치 분석 결과를 한 화면으로 요약한 리포트다. 종목별 판정과 점수와 추세에 더해 리스크 경고와 촉매(catalyst)가 함께 실린다. 촉매는 주가를 위로 밀어 올릴 수 있는 재료를 뜻한다.

K-line 은 한 구간의 시가, 종가, 고가, 저가를 봉 하나로 표현한 캔들 차트 데이터를 말한다. 이 시스템은 시세와 함께 K-line을 분석 입력으로 사용한다.

시장 폭(market breadth) 은 상승 종목 수와 하락 종목 수를 세어 시장 전반의 참여 상태를 보는 지표다. 시장 리뷰 리포트가 이 값을 요약해 제공한다.

펀더멘털 P0 timeout 은 펀더멘털 데이터 조회의 timeout 처리 규칙을 가리키는 이름이다. README는 이름만 언급하고 정의는 전체 가이드로 위임하므로, 이 페이지에서 확인할 수 있는 것은 그런 규칙이 존재한다는 사실까지다.

방법

기능 범위

README는 시스템 기능을 여섯 묶음으로 나눠 제시한다. 이 표가 이후 절들의 지도 역할을 한다.

기능 범위
AI 의사결정 리포트 핵심 결론, 점수, 추세, 진입과 청산 레벨, 리스크 경고, 촉매, 액션 체크리스트
멀티마켓 데이터 6개 시장 주식과 ETF의 시세, K-line, 기술지표, 뉴스, 공시, 펀더멘털, 리포트 컨텍스트
Web와 데스크톱 워크스페이스 수동 분석, 작업 진행 상황, 히스토리, 전체 Markdown 리포트, 백테스트, 포트폴리오, 설정, 테마
에이전트 전략 채팅 내장 전략 15종으로 Web, Bot, API에서 멀티턴 질의응답
스마트 임포트와 자동완성 이미지, CSV와 Excel, 클립보드 임포트. 코드, 이름, 병음, 별칭 자동완성
자동화와 알림 GitHub Actions, Docker, 로컬 스케줄러, FastAPI 서비스와 6개 전송 채널

앞의 두 묶음이 자동 실행의 결과물에 해당하고, 나머지 넷은 사람이 개입하거나 실행 방식을 확장하는 층에 해당한다. 자동 리포트만 받아 보는 사용자는 관심종목과 알림 채널만 설정하면 되고, 워크스페이스와 전략 채팅은 필요할 때 추가로 사용한다.

분석 대상과 코드 표기 규약

관심종목은 시장마다 다른 코드 표기를 그대로 섞어 쓸 수 있다. README가 제시한 STOCK_LIST 예시 값 600519,hk00700,AAPL,7203.T,005930.KS,2330.TW가 그 규약을 한 줄에 보여준다.

예시 코드 시장 표기 방식
600519 A주 거래소 6자리 숫자 코드
hk00700 홍콩 hk 접두 + 5자리 숫자
AAPL 미국 티커 심볼
7203.T 일본 종목 번호 + .T 접미
005930.KS 한국 종목 코드 + .KS 접미
2330.TW 대만 종목 코드 + .TW 접미

여기에 ETF도 포함된다. 시장별 데이터 소스 커버리지와 경계는 README가 아니라 market-support.md에 문서화되어 있다고 안내한다.

데이터 소스 계층

분석에 들어가는 원천 데이터는 네 종류다. 각 종류마다 여러 provider를 선택할 수 있게 되어 있어, 한 곳이 막혀도 다른 경로로 대체할 여지를 남긴다.

구분 지원 provider
AI 모델 Anspire, AIHubMix, Gemini, OpenAI 호환 provider, DeepSeek, Qwen, Claude, Ollama
시장 데이터 TickFlow, AkShare, Tushare, Pytdx, Baostock, YFinance, Longbridge
뉴스 검색 Anspire, SerpAPI, Tavily, Bocha, Brave, MiniMax, SearXNG
소셜 감성 Stock Sentiment API를 통한 Reddit, X, Polymarket 데이터

소셜 감성만 적용 범위가 좁다. README는 이 항목이 미국 주식에만 해당한다고 명시한다.

시장 데이터는 무료 소스와 유료 소스의 성격이 다르다. AkShare, Baostock, YFinance는 기본 포함이라 자격증명 없이 바로 쓸 수 있지만, README는 이 소스들이 rate limit에 걸리거나 업스트림 계약이 바뀌거나 네트워크 상태에 따라 흔들릴 수 있어 안정성을 보장하지 않는다고 직접 밝힌다. 따라서 정기 실행이나 배치 분석처럼 실패가 누적되면 곤란한 용도라면 TickFlow, Tushare, Longbridge 같은 토큰 기반 소스를 설정하라고 권한다.

시장별로 보강 효과가 다른 점도 명시되어 있다.

설정 값 대상 시장 보강 내용
TUSHARE_TOKEN A주 과거 데이터 안정성 개선
LONGBRIDGE_OAUTH_CLIENT_ID + LONGBRIDGE_OAUTH_TOKEN_CACHE_B64 홍콩과 미국 거래량 비율, 회전율, PER 등 필드 보강

무료 소스만 쓰는 경우 로그에 "not configured" 메시지가 남는데, README는 이것이 안내 메시지일 뿐 실행에는 영향을 주지 않는다고 설명한다.

모델 provider 설정

AI 모델은 최소 하나만 설정하면 동작한다. README는 provider 하나와 API 키 하나로 시작하라고 권하고, 멀티 모델 라우팅과 이미지 인식과 로컬 모델과 고급 라우팅은 모델 설정 가이드로 넘긴다.

설정 값 설명 필수 여부
ANSPIRE_API_KEYS 주요 LLM과 웹 검색을 키 하나로 사용. 이 프로젝트용 무료 쿼터 제공 권장
AIHUBMIX_KEY 여러 모델 계열을 키 하나로 사용. 이 프로젝트에 충전 금액 10% 할인 권장
GEMINI_API_KEY Google Gemini API 키 선택
ANTHROPIC_API_KEY Anthropic Claude API 키 선택
OPENAI_API_KEY OpenAI 호환 API 키. DeepSeek과 Qwen 호환 서비스 포함 선택
OPENAI_BASE_URL / OPENAI_MODEL OpenAI 호환 provider를 쓸 때 지정 선택

배포 환경에 따라 모델 선택이 갈린다. README는 Ollama가 로컬이나 Docker 배포에 더 적합하고, GitHub Actions에서는 클라우드 API 쪽이 대체로 원활하다고 안내한다. 즉 서버 없이 무료 자동화 경로를 택하면 로컬 모델의 이점을 살리기 어렵다.

뉴스 검색과 감성 보강

뉴스 검색은 필수가 아니지만 README가 강하게 권하는 항목이다. 검색을 붙이면 감성, 공시, 이벤트, 촉매의 품질이 크게 올라간다고 설명한다.

설정 값 성격 필수 여부
ANSPIRE_API_KEYS 중국어 콘텐츠와 A주 분석에 최적화된 AI 검색 권장
SERPAPI_API_KEYS 검색 엔진 결과 기반 실시간 금융 뉴스 권장
TAVILY_API_KEYS 범용 뉴스 검색 API 선택
BOCHA_API_KEYS AI 요약을 포함한 중국어 검색 선택
BRAVE_API_KEYS 프라이버시 우선 검색과 미국 주식 뉴스 보강 선택
MINIMAX_API_KEYS 구조화된 검색 결과 선택
SEARXNG_BASE_URLS 자체 호스팅 SearXNG 인스턴스 선택

provider 구성에서 시장별 편향이 드러난다. Anspire와 Bocha는 중국어 콘텐츠에, Brave는 미국 주식 뉴스에 강점이 있다고 표기되어 있어, 관심종목이 어느 시장에 몰려 있느냐에 따라 설정 조합이 달라진다.

SEARXNG_BASE_URLS는 성격이 다르다. 자체 호스팅 인스턴스를 지정하는 값이라 쿼터 제약 없는 폴백 경로로 쓸 수 있다.

알림 채널

분석 결과를 받을 채널도 최소 하나가 필요하다. 여섯 채널을 지원하며 설정 값의 형태가 채널마다 다르다.

설정 값 채널 형태
WECHAT_WEBHOOK_URL 위챗워크 봇 webhook URL 단일 값
FEISHU_WEBHOOK_URL 페이슈 봇 webhook URL 단일 값
TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID 텔레그램 토큰과 대상 채팅 식별자
DISCORD_WEBHOOK_URL 디스코드 webhook URL 단일 값
SLACK_BOT_TOKEN + SLACK_CHANNEL_ID 슬랙 봇 토큰과 채널 식별자
EMAIL_SENDER + EMAIL_PASSWORD 이메일 발신 계정과 비밀번호

추가 채널, 서명, 이메일 그룹, Markdown을 이미지로 변환하는 설정은 전체 가이드의 알림 설정 절에 있다.

설정 항목의 필수 여부

설정 묶음들을 필수 여부로 다시 배열하면 최소 구성이 드러난다. 관심종목만 무조건 필요하고, 모델과 알림은 묶음 안에서 하나씩 고르면 되며, 나머지 둘은 품질과 안정성을 위한 선택 항목이다.

설정 묶음 필수 여부 설정하지 않으면
관심종목 (STOCK_LIST) 필수 분석 대상이 없어 실행 자체가 성립하지 않는다
AI 모델 묶음 중 최소 하나 분석을 수행할 모델이 없다
알림 채널 묶음 중 최소 하나 결과를 받을 경로가 없다
뉴스 검색 선택 (README 권장) 감성, 공시, 이벤트, 촉매 품질이 낮아진다
시장 데이터 선택 무료 소스로 동작하되 안정성이 보장되지 않는다

따라서 가장 얇은 구성은 관심종목 하나에 API 키 하나와 알림 채널 하나를 더한 세 항목이다. README가 약 5분 배포를 내세우는 근거가 이 최소 구성이다.

배포 경로

배포 방법은 두 가지이며 성격이 뚜렷하게 다르다.

경로 준비물 특징
GitHub Actions fork와 Secrets 설정 서버와 인프라 비용 없이 약 5분. README가 권장하는 기본 경로
로컬 또는 Docker Python 환경 또는 Docker 직접 실행과 스케줄링. Ollama 같은 로컬 모델에 적합

GitHub Actions 경로의 절차는 네 단계다.

  1. 저장소를 fork한다.
  2. Settings → Secrets and variables → Actions → New repository secret에서 필요한 Secrets를 등록한다.
  3. Actions 탭에서 워크플로를 활성화한다.
  4. Actions → Daily Stock Analysis → Run workflow로 수동 테스트를 실행한다.

기본 스케줄은 베이징 시간 기준 평일 18시이며 비거래일은 자동으로 건너뛴다. 강제 실행, 거래일 확인, 재개 규칙은 전체 가이드의 스케줄 설정 절에 문서화되어 있다.

로컬 경로는 저장소 clone, pip install -r requirements.txt로 의존성 설치, .env.example을 .env로 복사해 환경변수 설정, python main.py 실행 순서로 진행한다.

실행 옵션

main.py는 용도에 따라 여러 실행 모드를 제공한다. 실제 전송 없이 동작만 확인하는 --dry-run, 설정된 관심종목을 무시하고 종목을 직접 지정하는 --stocks가 초기 점검에 쓰인다.

명령 용도
python main.py --debug 디버그 실행
python main.py --dry-run 실제 전송 없이 시험 실행
python main.py --stocks 600519,hk00700,AAPL,2330.TW 분석 종목을 인자로 직접 지정
python main.py --market-review 시장 리뷰 리포트 생성
python main.py --schedule 로컬 스케줄러 구동
python main.py --serve-only 서비스만 구동
python main.py --webui 분석과 Web UI 동시 구동
python main.py --webui-only Web UI만 구동

Web 워크스페이스

Web 워크스페이스는 자동 실행 결과를 사람이 확인하고 개입하는 창구다. 기본 접속 주소는 http://127.0.0.1:8000이다.

지원 기능은 설정, 작업 모니터링, 수동 분석, 히스토리 리포트, 전체 Markdown 리포트 열람, 에이전트 전략 채팅, 백테스트, 포트폴리오 관리, 스마트 임포트, 라이트와 다크 테마다.

스마트 임포트는 관심종목을 채우는 보조 수단이다. 이미지, CSV와 Excel 파일, 클립보드에서 종목을 가져올 수 있고, 입력 과정에서 코드와 이름과 병음과 별칭으로 자동완성이 동작한다. 인증, 리포트 복사, 클라우드 서버 접근 방법은 전체 가이드의 로컬 WebUI 관리 절에 있다.

에이전트 전략 채팅

AI API 키를 하나라도 설정하면 Web의 /chat 페이지에서 전략 채팅이 활성화된다. 기본값이 활성이라, 끄려면 환경변수 AGENT_MODE=false를 명시적으로 지정해야 한다.

이 기능은 정해진 리포트를 읽는 것과 달리 사용자가 전략을 골라 대화형으로 질의하는 방식이다. README는 내장 전략이 15종이라고 밝히면서 다음을 예시로 나열한다.

  • 이동평균 크로스
  • 챈 이론
  • 엘리엇 파동
  • 상승 추세
  • 핫테마
  • 이벤트 드리븐
  • 성장주 퀄리티
  • 기대치 리프라이싱

채팅 도중 실시간 시세, K-line 데이터, 기술지표, 뉴스, 리스크 컨텍스트를 호출한다. 후속 질문, 세션 내보내기, 알림 발송, 백그라운드 실행을 지원하며, 커스텀 전략 파일과 실험적 멀티에이전트 오케스트레이션도 제공한다.

에이전트 파라미터, skill 명명 호환성, 멀티에이전트 모드, 예산 가드(budget guard)는 전체 가이드와 모델 설정 가이드로 위임되어 있다.

결과

README에는 수익률, 예측 정확도, 백테스트 성과 같은 정량 지표가 하나도 없다. 대신 출력이 어떤 형식으로 나오는지 보여주는 예시 두 개가 실려 있다. 아래 수치는 모두 형식 설명용 예시 값이며 실제 측정 결과가 아니다.

의사결정 대시보드 출력

예시의 날짜는 2026-02-08이고 3개 종목을 분석해 매수 0종목, 관망 2종목, 매도 1종목으로 요약한다.

종목 코드 판정 점수 추세
000657 관망 65 강세
600105 관망 48 횡보
300260 매도 35 약세

점수와 판정이 함께 표시되는 구조라, 같은 관망 판정이라도 65점과 48점이 구분된다. 즉 판정은 행동 지침을, 점수는 그 안에서의 상대 위치를 담당한다.

리포트에는 리스크 경고 두 건과 긍정 촉매 두 건이 붙는다. 예시의 리스크 경고는 주력 자금의 뚜렷한 유출과 매물대 집중에 따른 단기 저항이고, 촉매는 AI 서버 공급망 노출이 시장의 관심사로 남아 있다는 점과 최근 실적 성장이 펀더멘털을 뒷받침한다는 점이다.

시장 리뷰 출력

시장 리뷰는 개별 종목이 아니라 시장 전체를 요약하는 별도 리포트다. 예시의 날짜는 2026-01-10이며 중국 본토 주요 지수 세 개를 담는다.

지수 지수값 등락률
SSE Composite 3250.12 +0.85%
SZSE Component 10521.36 +1.02%
ChiNext 2156.78 +1.35%

시장 폭은 상승 3,920종목, 하락 1,349종목, 상한가 155종목, 하한가 3종목으로 표시된다. 지수 등락률만으로는 상승이 소수 종목에 몰렸는지 알 수 없으므로, 리포트는 상승과 하락 종목 수를 함께 실어 판단 근거를 보완한다.

커뮤니티 지표

README 상단에는 Trendshift 배지가 붙어 있고 그 대체 텍스트가 "#1 Python Repository Of The Day"다. HelloGitHub의 Featured 추천 배지도 함께 있다.

GitHub stars 배지는 shields.io 이미지 링크만 삽입되어 있어 README 텍스트에는 별 개수가 기록되지 않는다. 따라서 이 자료만으로는 저장소의 star 수를 확인할 수 없다.

한계

데이터와 실행 환경 제약

무료 시장 데이터 소스는 안정성을 보장하지 않는다. README가 rate limit, 업스트림 계약 변경, 네트워크 상태 세 가지를 불안정 요인으로 직접 열거한다.

모델 선택도 배포 환경에 묶인다. 무료 자동화 경로인 GitHub Actions에서는 클라우드 API가 권장되므로, 서버 비용을 없애는 선택과 로컬 모델로 API 호출 비용을 없애는 선택을 동시에 취하기는 어렵다.

소셜 감성 데이터는 미국 주식에만 적용된다. A주와 홍콩, 일본, 한국, 대만 종목은 뉴스 검색까지만 보강 대상이다.

통합과 안정화가 남은 부분

자매 프로젝트와의 연결은 아직 계획 단계다. README는 세 프로젝트가 투자 판단 과정의 서로 다른 구간을 맡는다고 설명하면서도, 현재는 각각 독립적으로 유지된다고 밝힌다.

프로젝트 맡는 구간
daily_stock_analysis 확정된 관심종목의 일일 분석 리포트 생성
AlphaSift 다중 팩터 스크리닝과 전체 시장 스캔으로 후보 관심종목 구성
AlphaEvo 전략 백테스트와 자가진화 실험으로 규칙을 검증하고 파라미터와 조합을 반복 탐색

세 구간을 이으려면 후보 종목 임포트, 백테스트 검증, 리포트 핸드오프가 필요하다. README는 이 셋을 향후 통합 방향으로만 언급하므로, 현재는 사용자가 프로젝트 사이를 수동으로 연결해야 한다.

멀티에이전트 오케스트레이션은 "experimental"로 표기되어 있다. 안정 기능과 같은 수준으로 신뢰하기는 이르다.

자료 자체의 검증 한계

이 페이지의 근거는 README 한 장이므로 내부 구현 세부는 확인할 수 없다. README가 이름만 언급하고 정의를 다른 문서로 넘긴 항목이 여럿이다.

위임된 항목 위임 대상
펀더멘털 P0 timeout 의미, 거래 규칙, 데이터 소스 우선순위와 폴백 규칙 full-guide_EN.md
멀티 모델 라우팅, 이미지 인식, 로컬 모델, 예산 가드 LLM_CONFIG_GUIDE_EN.md
시장 경계와 데이터 소스 커버리지 market-support.md
전체 문서 인덱스 INDEX_EN.md

따라서 점수 산출 방식, 판정 임계값, 전략 15종의 구현 내용은 이 자료 범위 밖이다.

권장 provider 링크의 성격도 함께 보아야 한다. Anspire, AIHubMix, SerpAPI, TickFlow 링크에는 share_code, aff, ref, utm_source 같은 추천 파라미터가 붙어 있고, Anspire와 SerpAPI는 별도 Sponsors 절에 배너로도 노출된다. provider 권장 순서를 중립적인 기술 평가로만 읽기는 어렵다.

면책 고지

README 말미의 Disclaimer는 이 프로젝트가 정보 제공과 교육 목적이며 AI가 생성한 분석은 투자 자문이 아니라고 밝힌다. 주식 투자에는 위험이 따르므로 직접 조사하고 필요하면 인가된 재무 자문가와 상의하라고 덧붙인다.

라이선스는 MIT다. README 본문은 "MIT License © 2026 ZhuLinsen"으로 표기하며, 이 프로젝트를 활용하거나 확장할 경우 원 저장소 링크를 남기는 attribution을 권장한다고 덧붙인다.

핵심 용어

용어 뜻
DSA README가 이 시스템 자체를 가리킬 때 쓰는 약칭. 저장소 이름 daily_stock_analysis에서 왔다
Decision Dashboard 종목별 판정, 점수, 추세와 리스크 경고, 촉매를 한 화면에 모은 일일 의사결정 요약 리포트
Market Review 주요 지수 등락률과 시장 폭을 요약하는 별도 리포트. --market-review 옵션으로 생성한다
STOCK_LIST 분석 대상 관심종목을 쉼표로 구분해 담는 필수 설정 값. 시장별 코드 표기 규약을 그대로 쓴다
AGENT_MODE Web /chat의 전략 채팅을 켜고 끄는 환경변수. 기본값은 활성이고 false로 두면 꺼진다
Fundamental P0 timeout 펀더멘털 데이터 조회의 timeout 처리 규칙 이름. README는 이름만 언급하고 정의는 전체 가이드로 위임한다

관련 페이지

  • Loop Engineering for trading agents: 12 Steps to build a self-running Quant desk: 트레이딩 에이전트를 자동 실행 루프로 구성하는 12단계 절차를 다룬 글. 이 저장소가 실제 배포 가능한 형태로 구현한 일일 실행 루프의 설계 관점을 보완한다.
  • Why Do Multi-Agent LLM Systems Fail?: 멀티에이전트 시스템의 실패 패턴을 분류한 연구. 이 저장소가 "experimental"로 표기한 멀티에이전트 오케스트레이션의 위험을 가늠할 때 참고할 만하다.
  • Awesome LLM Apps: 실행 가능한 LLM 앱 템플릿 모음. 이 저장소가 단일 도메인의 완성된 응용 사례라면 템플릿 모음은 여러 도메인의 출발점을 제공한다.
  • Free LLM API resources: 무료로 호출할 수 있는 LLM API 목록. 이 저장소가 요구하는 모델 API 키를 비용 없이 마련할 때 참고할 수 있다.