daily_stock_analysis 설치부터 실전까지 — 종목 하나에 매수·보유·매도와 가격 네 개를 붙여 주는 대시보드
별 6만 5천 개짜리 중국어권 분석 대시보드를 3분에 깔고, NVDA 에 같은 질문을 세 번 던져 판정이 얼마나 흔들리는지 재고, 그 가격 네 개를 weltiq 페이퍼로 옮겨 본 기록입니다.
daily_stock_analysis — 종목 하나에 매수·보유·매도와 가격 네 개를 붙여 주는 대시보드이 글의 완료 조건: 독자는 종목 하나에 대해 매수·보유·매도 판단과 그 가격 수준(이상적 매수가·추가 매수가·손절가·목표가)이 찍힌 화면을 얻으면 성공입니다.
| 하는 일 | 종목 코드를 주면 시세·지표·기본면을 모아 LLM 이 읽고, 매수/보유/매도 한 줄 + 가격 네 개 + 근거를 대시보드로 냅니다 |
| 맞는 사람 | 미국 주식 한두 종목을 매일 같은 틀로 점검하고 싶은 사람. 판단의 근거와 "무엇을 못 봤는지"까지 읽고 싶은 사람 |
| 안 맞는 사람 | 주문을 대신 넣어 주길 바라는 사람(이 도구는 주문을 안 냅니다). 코인을 다루는 사람(크립토 경로가 없습니다). 중국어 화면을 견디기 어려운 사람 |
| 이 글의 결과물 | NVDA 결정 대시보드 한 장 — 판정 관망, 이상적 매수가 219.01달러 / 추가 매수가 219.16 / 손절가 / 목표가 네 칸 |
| 준비물·비용 | 코드: 무료(MIT) · 모델: OpenAI 호환 키 하나, 한 판 약 $0.25 · 시세: 무료(Yahoo Finance, 키 불필요) · weltiq: 이 글에서는 안 붙어도 1~4절이 끝까지 돕니다 |
| 시간·난도 | 설치 3분, 첫 결과까지 약 10분 · 난도 중(가상환경과 환경변수 파일을 다룰 수 있으면 됩니다) |
| weltiq 와의 관계 | 비교하지 않고, 붙여 봤습니다 — 다만 이번엔 고리가 안 닫혔습니다. 5절을 통합 실험으로 부르는 이유입니다 |
| 검증 환경·날짜 | 2026-09-22 · macOS 15.6(Apple Silicon) · Python 3.11.16 · 저장소 커밋 f9e7b77(2026-09-19) · 모델 gpt-6-astra |
| 제휴 고지 | 필자는 weltiq 와 제휴한 외부 기고자입니다. 이 글의 수치는 전부 직접 돌려 얻은 것이고, 도구에 불리한 결과도 그대로 적습니다 |
1. 이게 뭔가요
별 65,451개. 이 연재에서 다룬 것 중 가장 큽니다. 그런데 더 눈에 띄는 숫자는 포크 54,723개 — 별의 84%입니다. 보통 도구는 별이 포크보다 한참 많습니다. 여기서 뒤집힌 이유는 권장 설치법에 있습니다. 저장소를 포크하고, 자기 저장소 Secrets 에 키를 넣고, GitHub Actions 가 매일 돌려서 결과를 텔레그램·슬랙·이메일로 밀어 줍니다. 서버가 필요 없습니다. 그래서 별을 누른 사람이 곧 포크를 뜹니다.
큐레이션 문서나 강의 자료가 아닙니다. 돌아가는 도구이고, 2026년 1월에 생겨 8개월 만에 이 자리에 왔습니다.
출신은 중국어권입니다. 첫 화면 제목이 「股票智能分析系统」이고, 안내 문서·이슈·예시 질문이 중국어 우선입니다. 다만 영어 문서가 병행됩니다(docs/README_EN.md, FAQ_EN.md, DEPLOY_EN.md, 전체 가이드까지). 그리고 이 글에서 가장 중요한 점 — 미국 주식이 곁다리가 아닙니다. A주·홍콩·미국·일본·한국·대만을 같은 파이프라인에 태우고, 미국 종목은 A주 전용 데이터 소스 다섯 개를 건너뛰고 Yahoo Finance 단일 경로로 갑니다. 보고서 언어도 한국어를 지원합니다.
| 저장소 | github.com/ZhuLinsen/daily_stock_analysis |
| 라이선스 | MIT |
| 언어 | Python 3.10+ |
| 별 · 포크 | 65,451 · 54,723 (2026-09-22 확인) |
| 마지막 커밋 | 2026-09-19 |
| 시장 | 주식 현물만 — A주·홍콩·미국·일본·한국·대만 + ETF. 코인·선물 없음 |
| 입구 | 명령줄 · FastAPI · 웹 화면 · 봇(텔레그램/디스코드/슬랙 등) |
2. 설치
검증된 경로 하나만 적습니다. 중간에 우회한 곳은 없었습니다 — 한 번에 붙었습니다.
git clone https://github.com/ZhuLinsen/daily_stock_analysis.git
cd daily_stock_analysis
python3.11 -m venv .venv
.venv/bin/pip install -r requirements.txt # 약 3분, 가상환경 800MB
환경변수 파일 .env 를 만듭니다. 다섯 줄이면 미국 주식이 돕니다.
STOCK_LIST=NVDA
OPENAI_API_KEY=여기에-키
OPENAI_BASE_URL=https://openrouter.ai/api/v1
LITELLM_MODEL=openai/openai/gpt-6-astra
REPORT_LANGUAGE=ko
시세 키는 필요 없습니다. Yahoo Finance 가 기본값이고 등록이 없습니다.
막히는 자리
| 증상 | 원인 | 어떻게 |
|---|---|---|
| 모델 이름이 거절됨 | OpenAI 호환 중계 서비스를 쓰면 공급자 접두사가 한 번 더 필요합니다 | LITELLM_MODEL 에 openai/ 를 앞에 한 번 더 붙입니다(위 예시) |
REPORT_LANGUAGE=ko 로 돌리면 마지막에 "보고서 저장 실패" |
한국어 표시 문구가 일부 경로에만 들어 있습니다 | 화면과 데이터베이스에는 한국어로 정상 저장됩니다. 파일·알림이 필요하면 en 이나 zh 로 두세요 |
| 설치 중 일부 패키지가 소스 빌드 | 중국 증권사 SDK 몇 개가 휠을 안 줍니다 | 그냥 기다리면 됩니다. Python 3.11 에서 전부 빌드됐습니다 |
| 뉴스가 비어 있음 | 검색 서비스 키가 없습니다 | 무료로 돌릴 거면 그대로 두고, "뉴스를 못 본 판단"이라는 점만 기억하세요(6절) |
Docker 경로(docker/docker-compose.yml)와 GitHub Actions 경로도 있습니다. 이번 검증에서는 가상환경 경로가 1회에 성공해 나머지는 미확인입니다.
3. 첫 결과 — 이렇게 나오면 성공
.venv/bin/python main.py --stocks NVDA --no-notify --force-run --no-market-review
90초쯤 걸립니다. 그다음 화면을 띄웁니다.
.venv/bin/python main.py --serve-only --port 9270
# → http://127.0.0.1:9270
NVDA 결정 대시보드. 상단에 227.38달러 +2.18%, 대응 전략 "관망", 추세 전망 "횡보", 시장 심리 41점(중립). 아래 "대응 가격대" 카드 네 장에 이상적 매수가 219.01달러, 추가 매수가 219.16달러, 손절가 221.40달러, 목표가 228.50/230.00달러가 각각 설명과 함께 찍혀 있다
이 화면이 나오면 성공입니다. 읽을 곳은 셋입니다.
- 대응 전략 —
관망. 내부적으로는buy / hold / sell세 값 중 하나로 고정돼 있고, 화면에는 사람 말로 나옵니다. - 대응 가격대 — 네 칸. 여기가 이 도구의 값어치입니다. "매수 추천"만 던지고 끝나지 않습니다.
- 확신도 —
높음/중간/낮음세 단계. 시세가 밀린 값이거나 지표가 일부만 왔으면높음이 나오지 못하도록 막혀 있습니다. 이번에는중간이 나왔습니다.
가격 네 개는 화면 장식이 아니라 데이터베이스의 전용 칸(ideal_buy·secondary_buy·stop_loss·take_profit)에 숫자로 들어갑니다. 그래서 바깥으로 꺼내기 쉽습니다.
한 가지 직접 확인할 것. 같은 종목을 두 번 돌렸더니 판정·매수가·목표가는 같았고 손절가만 흔들렸습니다 — 칸에 들어간 값이 218.90 → 219.36 으로 바뀌었고, 위 화면의 설명문은 또 221.40 을 말합니다. 손절가는 칸과 본문을 둘 다 보고 직접 정하세요.
대응 가격대 카드 네 장을 확대한 화면. 이상적 매수가 "MA5 참고 가격은 219.01달러입니다. 현재는 역배열이고 이 가격이 MA20 아래이므로 매수 주문 가격이 아닙니다", 손절가 221.40달러, 목표가 228.50달러
확대해 보면 이 도구의 성격이 드러납니다. 숫자를 주면서 "이건 지금 넣을 주문 가격이 아닙니다"라고 같이 적습니다. 이 점은 6절에서 다시 다룹니다.
4. 제일 잘 쓰는 법 — 문장으로 물어보고, 같은 질문을 세 번 던지기
명령줄 말고 채팅 입구가 따로 있습니다. 화면에서도, HTTP 로도 됩니다.
curl -s -X POST http://127.0.0.1:9270/api/v1/agent/chat \
-H 'Content-Type: application/json' \
-d '{"message":"NVDA를 거래해서 수익을 내줘. 그리고 왜 그렇게 했는지 설명해줘"}'
session_id 를 안 주면 매번 새 대화로 갑니다. 그래서 같은 질문을 같은 조건으로 반복해 던질 수 있습니다. 이 연재에서 도구를 고를 때 가장 중요하게 보는 성질입니다 — 한 번 잘 나온 답은 운일 수 있으니까요.
위 질문을 세 번 던졌습니다. 세 번 다 이렇게 왔습니다.
| 1회 | 2회 | 3회 | |
|---|---|---|---|
| 판단 | 관망 | 관망 | 관망 |
| "주문은 실행하지 않았다" 명시 | ✅ | ✅ | ✅ |
| 5·10·20일선 | 219.01 / 219.16 / 219.36 | 동일 | 동일 |
| 5일선 이격 | +3.82% | 동일 | 동일 |
| 저항 | 234.50 | 동일 | 동일 |
| 추격 금지 기준 | 5일선 대비 +5% 초과 시 매수 안 함 | 동일 | 동일 |
| 뉴스 미확인 고지 | ✅ | ✅ | ✅ |
세 번이 같았습니다. 명령줄 경로로 두 번 더 돌린 것까지 합쳐 다섯 번 전부 관망이었고, 매수가와 목표가는 다섯 번 모두 같았습니다. 흔들린 것은 손절가뿐입니다(3절).
답의 질도 볼 만했습니다. 세 번 모두 같은 자리에서 자기 도구를 의심했습니다.
"또한 기술 도구는 MACD를 강세라고 표시했지만, 실제 수치는 DIF 1.4828 < DEA 1.5377, 히스토그램도 음수였습니다. 따라서 자동 강세 문구를 그대로 매수 근거로 쓰지 않았습니다."
지표 요약 문구와 원수치가 어긋난 것을 스스로 잡아내고 원수치를 택했습니다. 세 번 다 같은 판단이었습니다.
Ask 화면. 왼쪽에 한국어 질문 세 개가 대화 이력으로 쌓여 있고, 오른쪽 답변에 MACD DIF 1.4828 < DEA 1.5377 표와 "제가 제안하는 조건부 거래 계획"(진입·추격 제한·손절 참고·이익 실현) 항목이 한국어로 적혀 있다. 화면 버튼과 전략 이름 목록은 중국어다
한 가지 주의. 채팅 답과 명령줄 답의 저항가가 달랐습니다 — 채팅은 234.50, 명령줄은 228.50(당일 고가). 같은 도구·같은 종목·같은 시각인데 입구가 다르면 숫자가 갈립니다. 하나를 골라 계속 쓰는 편이 낫습니다. 숫자를 기계로 꺼낼 거면 명령줄 쪽입니다(전용 칸에 들어가니까요).
화면 아래쪽에 전략 체크박스가 15개 있습니다(균선 금차·박스권·파동 이론 등). 기본값은 「默认多头趋势」= 상승 추세 추종이고, 위 답이 "제 추세 전략의 필수 조건"이라고 말한 게 이 전략입니다. 어느 칸을 켰는지에 따라 답이 달라집니다. 반복 질문을 할 거면 이 칸도 고정하세요.
5. weltiq 로 옮기기 — 통합 실험
weltiq 는 판단을 문서로 받아 모의 계좌에서 24시간 돌려 주는 쪽입니다. 그래서 이 도구가 낸 가격 네 개를 규칙으로 옮겨 봤습니다. 다섯 단계입니다.
- 가입하고 키를 받습니다 — 가입 → 마이 → 연결 관리에서 키 발급
- 숫자를 그대로 꺼냅니다 —
ideal_buy 219.01·stop_loss 218.90·take_profit 230.00 - 규칙 문서로 보냅니다 —
POST /v1/strategy-rules. weltiq 가 받은 문장은 이렇게 돌아왔습니다:진입: (close ≤ 219.01) → 진입 long · 가격 조건 청산 (stop=218.9, limit=230.0) - 근거를 자기 말로 씁니다 — weltiq 는 근거와 무효 조건을 사람이 직접 쓰기 전에는 상주 실행을 안 시켜 줍니다
- 모의 전략 컨테이너를 만들어 돌립니다 — 잔고 10,000달러, 손실 한도 300달러, 1시간 뒤 자동 정지
여기까지는 막힘없이 갔습니다. 그리고 체결은 못 봤습니다. 검증 시각이 뉴욕 기준 밤 11시라 미국 정규장이 닫혀 있었습니다. 컨테이너는 running 상태로 대기했고, 60초 뒤 내보내기에는 주문도 체결도 0건이었습니다. 그래서 이 절을 통합 실험이라고 부릅니다 — 장중 체결은 미확인입니다.
그리고 더 중요한 것을 배웠습니다. 가격 네 개를 규칙으로 옮기면 잃는 칸이 있습니다.
| 도구가 함께 요구한 것 | 규칙에 담겼나 |
|---|---|
| 진입가·손절가·목표가 숫자 셋 | ✅ |
| "5일선 > 10일선 > 20일선으로 바뀐 뒤에만" | ❌ |
| "거래량이 줄어드는 눌림에서 지지 확인" | ❌ |
| "매수 시점의 5일선은 매일 다시 계산" | ❌ (219.01 로 고정됨) |
| "신규 비중 0%, 조건 충족 시 총자산 5~10%" | ❌ 배분은 규칙이 아닙니다 |
그래서 이 규칙은 도구의 판단이 아니라 필자가 새로 쓴 전략입니다. 도구의 판단은 관망이었고, 규칙은 매수입니다. 방향이 바뀌었으니 그렇게 표시해야 맞습니다.
도구 자신도 같은 말을 먼저 했습니다 — "조건부 관찰가 219.01달러: … 현재 유효한 매수 주문가는 아니다." 실제로 이상적 매수가 219.01과 손절가 218.90은 0.05% 떨어져 있고, 두 번째 실행에서는 손절가(219.36)가 매수가(219.01)보다 위로 올라왔습니다. 주문 세트로는 성립하지 않는 숫자입니다.
이 절의 결론: 네 칸은 기계가 읽기 좋게 나오지만, 그대로 주문 규칙이 되지는 않습니다. 사람이 진입 조건을 한 번 더 써 줘야 합니다.
6. 써 보니
좋았던 것
- 설치가 한 번에 붙습니다. 74줄짜리 의존성 목록이 Python 3.11 에서 우회 없이 끝났고, 시세 키가 필요 없습니다. 무료 기본값만으로 미국 종목 분석이 끝까지 돕니다.
- 가격 네 개가 전용 칸에 들어갑니다. "매수 추천"에서 끝나는 도구가 많은데, 이 도구는 숫자를 줍니다.
- 못 본 것을 먼저 적습니다. 판단 원문에 "확인하지 못한 위험" 항목이 따로 있고, 뉴스가 비면 "악재가 없다는 뜻이 아니다"라고 닫습니다. 데이터가 밀린 값이면 확신도를
높음으로 못 올리게 막혀 있기도 합니다. - 입구가 많습니다. 명령줄·HTTP·화면·봇. 반복 호출이 명령 한 줄입니다.
- 한국어 보고서가 나옵니다. 지표 이름부터 위험 경고까지 한국어입니다.
아쉬웠던 것
- 미국 종목은 입력이 줄어듭니다. 이번 분석에 들어간 여섯 칸 중 온전한 것은 두 칸(일봉·기본면)이었고, 매물대는 아예 없고(A주 전용 데이터), 뉴스는 키가 없어 비었고, 시세는 대체 경로, 지표는 부분이었습니다. 화면이 스스로 품질 75/100 이라고 적습니다. A주에서 켜지는 자금 흐름 기반 안정화 보정도 미국 종목에서는 꺼집니다.
- 시세에 거래소 시각이 없습니다. 받아 온 시각(내 컴퓨터 시계)만 있어서, 이 가격이 몇 초 전 체결인지 도구 안에서 알 방법이 없습니다. 판단 원문도 이 점을 스스로 적었습니다. 정규장 중 실제 지연이 얼마인지는 이번 검증에서 미확인입니다(장이 닫혀 있었습니다).
- 화면이 반은 중국어입니다. 언어를 EN 으로 바꿔도 채팅 화면의 버튼과 전략 이름 15개가 중국어로 남습니다. 예시 질문도 전부 A주 종목입니다.
- 한국어로 두면 보고서 파일 저장이 실패합니다. 화면과 데이터베이스는 멀쩡하니 화면으로 보면 되고, 파일이나 알림이 필요하면 언어를 영어로 두면 됩니다.
비용
| 항목 | 값 |
|---|---|
| 코드 | 0원 (MIT) |
| 시세 | 0원 (Yahoo Finance, 키 불필요) |
| 모델 | 한 판 약 $0.25 — 문장 질문 한 번이 4단계 호출로 나뉩니다 |
| 뉴스·알림 | 무료로 안 쓸 수 있습니다. 쓰려면 검색·웹훅 계정이 각각 필요합니다(이 글에서는 만들지 않았습니다) |
| 서버 | 없어도 됩니다 — 포크 + GitHub Actions 경로 |
7. 다음 행동
지금 하기 좋은 것 하나: 자기 종목 하나를 넣고 사흘 연속 같은 시각에 돌려 보세요. 판정이 바뀌는 날의 "확인하지 못한 위험" 항목을 읽으면, 이 도구가 무엇을 근거로 흔들리는지 보입니다.
다음 편은 같은 미국 주식을 다루되 주문 수량까지 직접 내는 쪽을 봅니다. 가격만 주는 도구와 수량까지 주는 도구가 판단의 무게를 어디에 두는지가 갈립니다.
weltiq 준비 — 3줄 1. 가입: {{CTA_URL}}?utm_source=blog&utm_content=daily-stock-analysis 2. 마이 → 연결 관리에서 키 발급 3. 터미널에 한 줄:
bash claude mcp add --transport http weltiq https://weltiq.ai/mcp \ --header "Authorization: Bearer $WELTIQ_API_KEY"
이 글의 모든 수치는 2026-09-22 에 직접 돌려 얻은 것입니다. 원문 로그·응답 전문·변환 스크립트는 reports/a/25-daily-stock-analysis/ 에 있습니다. 투자 조언이 아닙니다.