한 문장으로 이 프로젝트가 뭘 하는지부터.
daily_stock_analysis = "내 관심 종목을 매일 밤 자동으로 분석해 카톡처럼 알림으로 보내 주는 AI 애널리스트". 내가 관심 종목 리스트(예: 600519,hk00700,AAPL,TSLA)만 등록해 두면, 매 거래일 장 마감 후 시스템이 시세·차트·기술지표·자금 흐름·뉴스·공시·기본면을 긁어모으고, 그걸 LLM(거대 언어 모델)에게 통째로 넘겨 "한 줄 결론 + 점수 + 매수/매도 포인트 + 리스크 경보"를 만든 뒤 알림 채널로 쏴 준다.
보통 애널리스트 리포트는 사람이 손으로 데이터를 모으고, 차트를 읽고, 뉴스를 훑어 며칠 걸려 쓴다. DSA는 그 과정을 데이터 수집 → 분석 → LLM 작성 → 알림 발송이라는 5단계 파이프라인으로 자동화했다.
게다가 이 로봇은 내 서버가 아니라 GitHub의 무료 컴퓨터(Actions) 위에서 굴러간다. 즉 "PC를 켜 둘 필요도, 클라우드 요금도 없이" 매일 정해진 시간에 알아서 출근해 리포트를 써서 내 폰으로 보내 준다.
핵심 철학은 "제로 코스트 · 제로 서버 · 풀 자동"이다. README가 직접 "零成本定时运行,纯白嫖(돈 한 푼 안 들이고 정해진 시간에 돌린다)"이라고 자랑할 만큼, 진입 장벽을 극단적으로 낮춘 게 이 프로젝트의 정체성이다.
DSA의 README 맨 끝에는 굵게 "본 프로젝트는 학습·연구용이며 어떤 투자 조언도 아니다. 주식은 위험하다"라고 적혀 있다. 이 문서 역시 코드와 아키텍처를 공부하기 위한 기술 해설일 뿐, 종목 추천이나 매매 권유가 아니다. LLM이 뱉은 "매수/매도" 신호는 검증되지 않은 확률적 출력이라는 점을 항상 전제로 읽어야 한다.
TrendShift 일간 11위까지 올라온 이유 — 트렌딩의 배경.
"AI로 주식 분석"을 표방하는 레포는 수없이 많다. 그 속에서 DSA가 튀어 오른 이유는 "기술 자체"보다 "누구나 5분 만에 진짜로 돌릴 수 있게 만든 패키징"에 있다. 다섯 가지로 정리한다.
가장 강력한 한 방. 서버를 빌리거나 PC를 켜 둘 필요 없이, GitHub 저장소를 Fork → Secrets에 API 키 등록 → Actions 켜기 세 단계면 매일 18시(베이징 시간)에 자동 실행된다. GitHub Actions의 무료 실행 시간을 그대로 활용하는 서버리스 발상이라, 비개발자도 "클릭 몇 번"으로 자기만의 분석 봇을 갖는다.
A주·홍콩·미국·ETF를 모두 다루고, 시세 데이터를 한 곳이 막히면 다음 소스로 자동 전환하는 다단 폴백 체인(efinance → akshare → tushare → pytdx → baostock → yfinance → longbridge 등, A주 메인 체인 기준. 미국주식 전용 Finnhub·AlphaVantage 등 추가 소스 포함)을 깔았다. 무료 데이터 소스는 자주 막히는데, DSA는 한 소스가 죽어도 전체 분석이 멈추지 않게 설계해 "그냥 돌아간다"는 안정감을 준다.
litellm 덕분에 Anspire·AIHubMix·Gemini·OpenAI 호환·DeepSeek·통의천문(Qwen)·Claude·Ollama(로컬) 등을 설정만 바꿔 갈아 끼운다. "비싼 GPT만 써야 하는" 게 아니라 무료/저가 모델로 시작할 수 있어, 비용이 트렌딩의 발목을 잡지 않는다.
대부분의 "주가 알림 봇"은 숫자만 던진다. DSA는 LLM에게 한 줄 결론 → 데이터 관점 → 정보 → 작전 계획이라는 4단 구조로 정리시켜, "그래서 어떻게 하라는 건데?"에 답하는 형태로 쏜다. 받는 사람이 바로 읽고 판단할 수 있는 UX 설계가 차별점이다.
알림만 보내는 데 그치지 않는다. React 19 웹 작업대(수동 분석·과거 리포트·백테스트·보유 관리), Electron 데스크탑 앱, 그리고 15가지 전략(균선·캔들·파동·이벤트 등)으로 다중 질문이 가능한 'Agent 문股'까지 갖췄다. "취미 스크립트"가 아니라 제품처럼 다듬여 있다는 인상이 신뢰를 만든다.
일반 주가 알림 봇 = 자판기 — 동전을 넣으면(종목을 넣으면) 정해진 숫자만 툭 떨어진다. 해석은 내 몫.
DSA = 24시간 근무하는 신입 애널리스트 — 데이터를 직접 모아 읽고, 뉴스를 훑고, "제 의견은 이렇습니다(점수·리스크·매매 포인트)"까지 정리해 보고서를 올린다. 단, 신입이라 틀릴 수 있으니 결재는 내가 한다.
아무리 데이터를 잘 모아도 LLM의 "매수" 한마디가 미래 수익을 보장하지 않는다. LLM은 입력된 텍스트의 패턴을 그럴듯하게 이어 붙일 뿐, 시장을 예측하는 능력이 검증된 게 아니다. 또 무료 데이터 소스의 지연·오류, 뉴스 검색의 노이즈가 그대로 판단에 섞인다. 이 레포의 가치는 "돈 버는 비법"이 아니라, 데이터 폴백·LLM 추상화·FastAPI 계층 설계·GitHub Actions 자동화를 한 번에 공부할 수 있는 살아있는 교재라는 데 있다.
requirements.txt · package.json · AGENTS.md · 소스 트리에서 뽑아낸 실제 구성.
DSA는 ⓐ 백엔드(분석 엔진) ⓑ 데이터 계층 ⓒ 프론트엔드 ⓓ 인프라/자동화 네 층으로 나뉜다. 특히 "파이썬 분석 엔진"과 "React 프론트"가 FastAPI를 사이에 두고 분리돼 있고, 같은 엔진이 CLI·웹·데스크탑·봇 어디서든 호출되는 게 설계의 큰 특징이다.
| 구성요소 | 무엇 | 역할 |
|---|---|---|
| litellm | LLM 통합 클라이언트 | Gemini·Anthropic·OpenAI·DeepSeek·Qwen·Ollama 등을 한 인터페이스로. 공급자를 설정으로 교체. |
| tiktoken | 토큰 계산기 | LLM에 넣을 데이터가 컨텍스트 한도를 넘지 않게 토큰 수를 센다. |
| FastAPI + uvicorn | REST API 서버 | server.py 진입점. 분석·히스토리·백테스트·포트폴리오·에이전트 등 12+ 엔드포인트. |
| SQLAlchemy 2.0 + SQLite | ORM · 로컬 DB | 분석 결과·히스토리·설정을 파이썬 객체로 다루고 파일 DB에 저장. |
| tenacity | 재시도 엔진 | 네트워크·API 실패 시 지수 백오프로 자동 재시도. |
| schedule + exchange-calendars | 스케줄러 · 거래일 달력 | 정해진 시간 실행 + A/H/US 휴장일이면 건너뛰기. |
| jinja2 | 리포트 템플릿 엔진 | 분석 결과(데이터)를 보고서(표현)와 분리해 렌더링. |
| imgkit (+wkhtmltopdf) | 마크다운 → 이미지 | 리포트를 이미지 카드로 변환해 메신저에 예쁘게 전송. |
| newspaper3k | 기사 본문 추출 | 뉴스 URL에서 광고·메뉴를 걷어내고 본문만 뽑는다. |
| alphasift (git 의존성) | 선택형 종목 스크리닝 엔진 | 같은 저자의 자매 프로젝트. 전체 시장에서 후보 종목을 걸러낸다. |
| 구성요소 | 무엇 | 역할 |
|---|---|---|
| 시세 폴백 체인 | 다단 데이터 소스 | efinance(P0 동방재부)→Tencent(P0 A주 K선)→akshare(P1)→tushare(P2 Pro)→pytdx(P2 통달신)→Finnhub(P2 미국주식)→baostock(P3)→AlphaVantage(P3 미국주식)→yfinance(P4)→longbridge(P5 美/港). A주 메인 체인 기준 7단+, 미국주식 전용 소스 포함 시 10단+. |
| pandas · numpy | 데이터 가공 | 시세·K선·기술지표를 표로 다루고 계산. |
| pypinyin · openpyxl | 종목명 해석 · 엑셀 | "한자 종목명/병음/별칭 → 코드" 매칭, CSV/Excel 가져오기. |
| tavily · SerpAPI · (Anspire/Bocha/Brave/MiniMax/SearXNG) | 뉴스 검색 | 종목 관련 실시간 뉴스·공시·여론을 끌어와 LLM 입력에 보강. |
| lark-oapi · discord.py(+PyNaCl) · dingtalk-stream | 알림 SDK | 飞书·Discord(Ed25519 서명검증)·딩톡 봇으로 리포트 발송. |
| json-repair | JSON 복구 | LLM이 망가뜨린 JSON 출력을 자동 교정해 파싱 실패를 막는다. |
| Stock Sentiment API (선택) | 소셜 여론 | Reddit/X/Polymarket 기반(미국 주식 한정) 심리 지표. |
| 구성요소 | 무엇 | 역할 |
|---|---|---|
| React 19 + Vite 7 | 웹 UI · 번들러 | 최신 React. babel-plugin-react-compiler로 React Compiler까지 도입. |
| TypeScript 5.9 + Tailwind 4 | 타입 · 스타일 | 타입 안전 + 유틸리티 CSS. next-themes로 라이트/다크. |
| Zustand | 전역 상태 | 가볍고 단순한 클라이언트 상태 스토어. |
| React Router 7 | 라우팅 | 분석·히스토리·채팅·설정 페이지 전환. |
| Recharts 3 | 차트 | 주가·지표를 React 컴포넌트 차트로 그린다. |
| react-markdown + remark-gfm | 리포트 렌더 | 마크다운 분석 리포트를 웹에서 표·체크박스까지 표시. |
| motion · axios | 애니메이션 · HTTP | 부드러운 전환 효과 + 백엔드 API 호출. |
| Vitest + Playwright | 단위 · E2E 테스트 | 컴포넌트 테스트 + 브라우저 스모크 테스트. |
| 구성요소 | 무엇 | 역할 |
|---|---|---|
| GitHub Actions | 서버리스 실행 | 매일 18시 자동 분석 + CI + 릴리스. 핵심 배포 수단. |
| Docker | 컨테이너 배포 | docker/ 안의 Dockerfile/compose로 로컬·NAS·서버에 띄우기. |
| CI 게이트 | 품질 검사 | ai-governance · backend-gate(ci_gate.sh) · docker-build · web-gate(lint+build) · network-smoke. |
| Electron (dsa-desktop) | 데스크탑 앱 | 같은 웹 UI를 데스크탑 클라이언트로 패키징. |
.env에서 모델 이름·키만 바꾸면 GPT → DeepSeek → 로컬 Ollama로 갈아탄다. DSA가 "18개 공급자 지원"을 손쉽게 내세울 수 있는 비결.무료 주식 데이터 소스(akshare, yfinance 등)는 수시로 막히거나 느려지거나 형식이 바뀐다. 하나에만 의존하면 그 소스가 죽는 날 전체 봇이 멈춘다. DSA는 "P0가 실패하면 P1, 그것도 안 되면 P2…" 식으로 우선순위 사다리를 타고 내려가며 graceful degradation(우아한 성능 저하)을 구현했다. 덕분에 "오늘은 데이터가 안 와서 리포트가 없네" 같은 사고가 줄어든다 — 자동화 봇에서 가장 중요한 '그냥 매일 돌아간다'를 떠받치는 설계다.
종목 코드 한 줄이 "내 폰 알림"이 되기까지 — 데이터의 5단 여정.
AGENTS.md가 직접 밝힌 메인 흐름은 抓取数据 → 技术分析/新闻检索 → LLM分析 → 生成报告 → 通知推送, 즉 ① 데이터 수집 → ② 기술분석·뉴스검색 → ③ LLM 분석 → ④ 리포트 생성 → ⑤ 알림 발송의 5단 파이프라인이다. 이 한 줄기를 main.py(CLI)·server.py(API)·웹·봇 어디서 불러도 똑같이 흐른다.
가장 중요한 결정. data_provider/는 시세 소스를 우선순위로 줄 세우고, 위에서부터 시도하다 실패하면 다음으로 넘긴다. efinance(P0) → Tencent(P0 A주 K선) → akshare(P1) → tushare/pytdx(P2) → Finnhub(P2 미국주식) → baostock(P3) → AlphaVantage(P3 미국주식) → yfinance(P4) → longbridge(P5). 무료 소스가 자주 죽는 현실에서 단일 소스 실패가 전체 분석을 무너뜨리지 않게 하는 핵심. AGENTS.md도 "단일 데이터 소스 실패가 전체 분석 흐름을 막아선 안 된다"를 안정성 護欄(가드레일)로 못 박았다.
18개 LLM 공급자를 if/else로 분기하면 코드가 지옥이 된다. 대신 litellm이 "OpenAI 방식" 한 가지 인터페이스를 제공하고, 위쪽 분석 로직은 "어느 회사 모델인지 모른 채" 같은 함수만 호출한다. .env에서 모델명·키만 바꾸면 GPT → DeepSeek → 로컬 Ollama로 무중단 전환. "공급자 다양성"이 마법이 아니라 추상화 설계의 결과인 이유다.
AGENTS.md가 명시한 src/의 책임 분리가 또렷하다. src/core/(흐름 지휘) → src/services/(업무 로직) → src/repositories/(데이터 접근) → src/schemas/(데이터 구조). 라우터·CLI는 얇게 두고 진짜 일은 service에서, DB 접근은 repository로 격리한다. 현업 백엔드에서 통하는 정석 레이어드 구조라, 테스트·교체·디버깅이 쉬워진다.
LLM 출력을 자유 텍스트로 두지 않고 AnalysisResult.dashboard라는 고정 구조로 강제한다(루트 SKILL.md에 계약이 문서화돼 있다). ① core_conclusion(한 줄 결론·신호·비중) ② data_perspective(추세·가격위치·거래량·매물대) ③ intelligence(뉴스·리스크·호재) ④ battle_plan(매수/매도 목표가·비중·체크리스트). 출력을 스키마로 규격화했기에 웹·데스크탑·알림이 같은 데이터를 일관되게 소비한다.
AGENTS.md의 가드레일: "새 설정은 '不配置也可运行,配置后增强能力(설정 없이도 동작, 설정하면 강화)'을 우선". 뉴스 검색 키가 없으면 뉴스 보강을 건너뛰고, 알림 채널 하나가 죽어도 나머지로 보낸다. 모든 기능을 선택적(opt-in)으로 두고 핵심 파이프라인은 최소 조건(LLM 키 1개 + 알림 1개 + 종목 리스트)으로 굴러가게 한 게, "그냥 켜면 된다"는 사용 경험을 만든다.
실제 저장소 트리에서 "어디에 뭐가 있는지" 핵심만 (GitHub Contents API 기준).
핵심 읽는 순서를 추천하면: main.py(어떤 명령이 있나) → src/core/(5단 흐름이 어떻게 엮이나) → src/services/analyzer_service.py(한 종목이 실제로 어떻게 분석되나) → data_provider/(데이터를 어떻게 폴백으로 끌어오나) → api/v1/endpoints/(웹·앱이 무엇을 호출하나) 순이다. CLI·API·봇이 전부 같은 src/services를 부르는 엔진 공유 구조가 또렷이 보인다.
이 레포에서 "무엇을 배울 수 있는가" — 기술별 배울 것 + 실습 아이디어.
우선순위 체인, 타임아웃, 필드 표준화, 우아한 성능 저하(graceful degradation) — 실서비스 자동화의 핵심 패턴이 data_provider/에 통째로 들어 있다.
실습: 폴백 순서를 일부러 1번 소스부터 실패하게 막아 보고, 로그에서 다음 소스로 어떻게 넘어가는지 추적. "단일 소스 의존"과 "체인"의 차이를 체감해 보자.
OpenAI·DeepSeek·Gemini·Ollama를 설정만으로 전환하는 어댑터 패턴. 토큰 계산(tiktoken)으로 컨텍스트 예산을 관리하고, json-repair로 LLM의 깨진 출력을 복구하는 실전 기법까지.
실습: .env의 모델을 유료 → 무료(또는 로컬 Ollama)로 바꿔 같은 종목을 분석. 출력 품질·속도·비용이 어떻게 달라지는지 비교표를 만들어 보자.
라우터는 얇게, 로직은 service, 데이터는 repository로 분리하는 현업형 구조. 미들웨어(auth·error_handler), Pydantic 스키마 검증, 의존성 주입을 한 저장소에서 본다.
실습: uvicorn server:app --reload로 띄우고 /docs(자동 Swagger)에서 분석 엔드포인트를 직접 호출. 한 요청이 endpoint → service → repository로 어떻게 내려가는지 따라가 보기.
자유 텍스트가 아니라 4단 AnalysisResult.dashboard 구조로 강제하고, jinja2 템플릿으로 데이터와 표현을 분리해 렌더링. imgkit로 마크다운을 이미지 카드로 바꿔 메신저에 보내는 흐름까지.
실습: templates/의 리포트 템플릿을 열어 "리스크 경보" 섹션의 문구·이모지를 바꿔 보고, 출력 메시지가 어떻게 달라지는지 확인.
React 19 + React Compiler, Zustand 상태, TanStack 없이 axios+Zustand로 서버 데이터 다루기, Recharts 차트, react-markdown으로 리포트 렌더. Playwright E2E 스모크 테스트도 함께.
실습: apps/dsa-web에서 npm ci && npm run dev로 띄우고, 분석 리포트가 API 응답을 어떻게 받아 Recharts 차트로 그리는지 컴포넌트를 추적.
cron 스케줄, Secrets로 키 주입, 거래일 달력(exchange-calendars)으로 휴장일 건너뛰기, 단계 실패 시 재시도(tenacity), 알림 채널 fan-out. "PC를 안 켜도 매일 도는 봇"의 표준 레시피다.
실습: .github/workflows/의 daily 워크플로를 읽고, cron 시각과 거래일 체크 로직을 찾아 "내 시간대(KST)"에 맞게 바꿔 보기.
"내 환경에서 돌아갈까?" — 배포 방식에 따라 부담이 천차만별이다.
| 배포 방식 | 필요한 것 | 비고 |
|---|---|---|
| GitHub Actions(추천) | GitHub 계정 + API 키 | 내 PC·서버 불필요. Fork → Secrets 등록 → Actions 켜기면 끝. 무료 실행 시간 활용. |
| 로컬 실행 | Python 3.10+ / 가벼운 RAM | 클라우드 LLM API만 쓰면 PC는 가볍다. 추론은 공급자 서버가 함. |
| 로컬 LLM(Ollama) | RAM 16GB+ / GPU 권장 | 모델을 내 PC에서 돌리면 무겁다. 프라이버시·무과금이 목적일 때만. |
| Docker / NAS | Docker 엔진 | docker/ compose로 24시간 셀프호스팅. 시놀로지 등에도 올릴 수 있다. |
| 이미지 알림 쓸 때 | wkhtmltopdf | imgkit가 마크다운→이미지 변환에 사용. 텍스트 알림만이면 불필요. |
| 항목 | 예시 | 설명 |
|---|---|---|
| LLM 키 1개 | ANSPIRE_API_KEYS 등 | 분석의 '뇌'. 무료/저가 공급자도 OK. |
| 알림 채널 1개 | TELEGRAM_BOT_TOKEN 등 | 리포트를 받을 곳. 飞书/TG/Discord/Slack/메일 중 택1. |
| 종목 리스트 | 600519,hk00700,AAPL | STOCK_LIST에 분석할 코드를 콤마로. |
처음엔 무료 LLM 키 + 텔레그램만으로 GitHub Actions에 띄워 감을 잡고, 더 자주/유연하게 돌리고 싶어지면 그때 Docker로 옮기면 된다. 핵심 설계가 "설정 없이도 최소 동작"이라, 키를 하나씩 추가할수록 뉴스·이미지·소셜여론 같은 기능이 점진적으로 켜진다.
읽기만 하면 안 남는다 — 손으로 해보는 난이도별 과제 6선.
git clone 후 pip install -r requirements.txt → .env에 LLM 키 1개만 넣고 python main.py --stocks AAPL --dry-run. 실제 발송 없이 분석 결과가 콘솔에 어떻게 찍히는지부터 확인한다.
저장소를 Fork → Settings의 Secrets에 LLM 키·알림 토큰·STOCK_LIST 등록 → Actions 활성화 → "每日股票分析" 워크플로를 수동 Run workflow. 내 폰으로 리포트가 도착하는지 확인.
python main.py --webui로 띄워 127.0.0.1:8000 접속. 수동 분석·과거 리포트·백테스트를 눌러 보고, python main.py --market-review로 "대장세 복盘(시장 전체 리뷰)"이 어떻게 생성되는지 비교.
.env의 모델을 유료(GPT) → 무료/로컬(DeepSeek·Ollama)로 바꿔 같은 종목을 분석. docs/LLM_CONFIG_GUIDE.md를 참고해 멀티모델 라우팅까지 시도하고, 출력 품질·지연을 표로 정리.
웹 /chat에서 균선·缠论·파동·이벤트 등 내장 전략으로 다중 질문. 그 다음 strategies/의 전략 파일 형식을 본떠 "내 매매 규칙"을 담은 커스텀 전략 파일을 추가해 보기.
data_provider/를 읽고 시세 소스 폴백 순서를 그려 본 뒤, 새 데이터 소스 어댑터를 하나 추가하거나 우선순위를 바꿔 본다. AGENTS.md의 "데이터 소스 fallback" 가드레일(타임아웃·필드 표준화)을 지키며 수정하는 연습.
이 레포를 발판으로 "LLM 자동화 풀스택"을 익히는 6주 코스.
| 주차 | 주제 | 학습 내용 |
|---|---|---|
| 1주차 | LLM 앱 기초 · litellm | 프롬프트·컨텍스트·토큰 개념 + litellm으로 여러 공급자 호출, json-repair로 출력 안정화. |
| 2주차 | 금융 데이터 파이프라인 | efinance·akshare로 시세/K선/지표 수집, pandas 가공, 폴백 체인·타임아웃 설계. |
| 3주차 | FastAPI 계층 아키텍처 | core/services/repositories 분리, Pydantic 스키마, 미들웨어·인증, /docs 자동화. |
| 4주차 | 프롬프트 엔지니어링 · 리포트 엔진 | 출력 스키마 강제(AnalysisResult), jinja2 템플릿, imgkit 이미지화, 4단 대시보드 설계. |
| 5주차 | React 19 · Vite 프론트 | React Compiler, Zustand 상태, Recharts 차트, react-markdown 렌더, Playwright E2E. |
| 6주차 | 자동화 · 배포 · 운영 | GitHub Actions cron, 거래일 달력, tenacity 재시도, 알림 fan-out, Docker 셀프호스팅. |
한 번에 다 보려 하지 말고 "종목 한 개가 알림이 되는 경로"만 끝까지 따라가 보라. main.py --stocks → src/core(파이프라인) → data_provider(수집) → src/services(분석) → litellm(LLM) → src/reports(렌더) → bot/(발송). 이 한 줄기를 완전히 이해하면, 웹·데스크탑·백테스트는 같은 엔진을 다르게 호출하는 변주임이 보인다.
이 프로젝트를 읽다 만나는 용어들 — 짧게 정리.
| 용어 | 뜻 |
|---|---|
| LLM | 거대 언어 모델. DSA에서 데이터·뉴스를 받아 "결론·점수·매매 포인트"로 가공하는 분석 두뇌. |
| litellm | 100여 개 LLM 공급자를 "OpenAI 한 가지 방식"으로 묶는 통합 클라이언트. 설정만 바꿔 모델 교체. |
| 데이터 소스 폴백 | 시세 소스를 우선순위로 줄 세워, 위가 실패하면 아래로 자동 전환하는 안정성 패턴. |
| 결정 대시보드 | DSA의 4단 출력(결론·데이터관점·정보·작전계획). 날것이 아니라 바로 읽는 요약본. |
| A주 / 港股 / 美股 | 중국 본토 / 홍콩 / 미국 주식. DSA가 모두 다루는 다중 시장. |
| 大盘复盘 | 개별 종목이 아닌 "시장 전체(지수·등락·섹터)"를 리뷰하는 시황 복기 기능. |
| 筹码(매물대) | 특정 가격대에 쌓인 보유 물량 분포. 매물 집중도로 저항·지지를 가늠하는 지표. |
| 量能(거래량 에너지) | 거래량의 강약. 추세의 진위를 가늠하는 보조 신호. |
| 缠论 / 파동이론 | 중국·서구의 대표적 차트 분석 이론. DSA Agent의 내장 전략에 포함. |
| efinance / akshare | 중국 무료 주식 데이터 라이브러리. 폴백 체인의 최우선 소스들. |
| exchange-calendars | 각국 거래소 휴장일 달력. "장 안 여는 날엔 분석 안 함"을 자동 판단. |
| tenacity | 실패한 작업을 지수 백오프로 자동 재시도하는 파이썬 라이브러리. |
| jinja2 | 데이터를 템플릿에 끼워 텍스트(리포트)를 찍어내는 파이썬 템플릿 엔진. |
| imgkit / wkhtmltopdf | 마크다운/HTML을 이미지로 변환. 리포트를 예쁜 카드 이미지로 메신저에 발송. |
| GitHub Actions | GitHub가 무료로 주는 자동화 실행 환경. DSA의 "서버 없는 매일 실행"의 핵심. |
| Webhook | "이벤트가 나면 정해진 URL로 메시지 쏘기". 飞书·Discord 알림이 작동하는 방식. |
| SQLAlchemy | 파이썬 객체 ↔ DB 테이블을 잇는 ORM. 히스토리·설정 저장에 사용. |
| Zustand / Recharts | 가벼운 React 전역 상태 라이브러리 / React 차트 라이브러리. |
| AlphaSift | 같은 저자의 자매 프로젝트. 전체 시장에서 후보 종목을 거르는 멀티팩터 스크리너. |
| SKILL.md / Agent 문股 | 분석 기능을 'AI 스킬'로 노출. 15개 전략으로 다중 질문하는 에이전트 인터페이스. |
더 깊이 파고들 때의 출발점.
| 자료 | 링크 |
|---|---|
| GitHub 저장소 | github.com/ZhuLinsen/daily_stock_analysis |
| 완전 가이드 | 저장소 docs/full-guide.md (설정·배포·데이터소스 우선순위) |
| LLM 설정 가이드 | 저장소 docs/LLM_CONFIG_GUIDE.md |
| 개발 규칙(단일 진실원) | 저장소 AGENTS.md |
| 자매 프로젝트 — 선별 | github.com/ZhuLinsen/alphasift (멀티팩터 종목 스크리닝) |
| 자매 프로젝트 — 진화 | github.com/ZhuLinsen/alphaevo (전략 백테스트·자기진화) |
| litellm | github.com/BerriAI/litellm |
| TrendShift 순위 | trendshift.io/repositories/18527 |
이 문서와 DSA가 만들어 내는 모든 "매수/매도/점수"는 코드·아키텍처 학습을 위한 예시일 뿐, 어떤 종목 추천이나 투자 권유도 아니다. 실제 매매 판단과 그 결과에 대한 책임은 전적으로 사용자 본인에게 있다. 주식 투자에는 원금 손실 위험이 있다.