Files
kyu 97cf5aecb0
trading/pipeline/head This commit looks good
chore: 누적 미커밋 작업분 일괄 커밋
이번 세션 외 그간 쌓인 변경 일괄 저장:
- bareunaapi: finance_dict 금융용어 / stock_loader 종목 로더 보강
- kis-api: 키움 토큰·수집 로직
- us-market / dart-collector: 수집 보강
- docker-compose: GEMINI_API_KEY 등 환경변수 추가
- score-engine/news-collector requirements, CLAUDE.md
- 신규: PROJECT.md, news-collector/sentiment_rules.py

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 01:24:16 +09:00

135 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Trading AI — 프로젝트 구조 정리
> 한국 주식 AI 투자 분석 시스템. 뉴스·공시·주가·미국증시를 수집해
> 워런 버핏식 가치투자 + 퀀트 멀티팩터로 분석하고 매수/매도를 추천한다.
> (개발자 상세 가이드는 `CLAUDE.md`, 이 파일은 전체 구조 요약)
---
## 1. 한눈에
- **무엇을**: 약 1,500개 한국 상장사를 매일 0~100점으로 스코어링 → 등급(강력매수~강력매도)
- **어떻게**: 정형 데이터(재무·주가·수급)와 비정형 데이터(뉴스·공시 텍스트)를 결합
- **결과**: 대시보드(웹) + 텔레그램 알림으로 추천 전달
- **철학**: 가치투자가 기본 관점, 실제 엔진은 가치·성장·모멘텀·퀄리티를 섞은 멀티팩터
## 2. 데이터 흐름
```
뉴스/공시 수집 → 형태소분석(바른) → 임베딩(bge-m3) → 중복제거(Qdrant)
→ EXAONE LLM 감성분석(호재/악재·강도·catalyst)
주가·수급·미국증시 수집 ─────────────────────────────┐
재무제표(DART) 수집 ────────────────────────────────┤
종합 스코어링 (score-engine)
매수/매도 추천 → 대시보드 + 텔레그램
```
## 3. 인프라
| 항목 | 값 |
|------|-----|
| 서버 | Ubuntu 22.04, GPU 2장 (RTX 3060 12G / RTX 3070 8G) |
| DB | PostgreSQL `trading_ai` |
| 캐시 | Redis (중복제거·가격캐시) |
| 벡터DB | Qdrant (뉴스 유사도) |
| 컨테이너 | docker compose, 16개 서비스 |
| LLM | Ollama — EXAONE 3.5 7.8B(추론) + bge-m3(임베딩) |
## 4. 서비스 구조 (16개 컨테이너)
| 서비스 | 포트 | 역할 |
|--------|------|------|
| news-collector | 8787 | 뉴스 수집 + 형태소 + 임베딩 + EXAONE 감성분석 |
| bareunaapi / bareun | 5757 / 5656 | 한국어 형태소분석 |
| dart-collector | 8888 | DART 공시·재무제표·배당·자사주·섹터 수집 |
| score-engine | 8686 | 종합 스코어링 + 학습 + 텔레그램 + 백테스트 |
| ta-engine | 8484 | 기술적 분석 (MA·RSI·MACD·볼린저 등) |
| dashboard-api | 8989 | 대시보드 웹 + REST API |
| kis-api | 8585 | 한국 주가 수집 + 매매시그널 |
| aux-signal | 8282 | 컨센서스·기관/외국인 수급 + 매크로(ECOS) |
| us-market | 8383 | 미국증시 → 한국 동조 시그널 + 새벽 브리핑 |
| graph-engine | 9090 | GAT 그래프 신경망 → graph_score |
| telegram-bot | - | 텔레그램 명령 처리 (/buy /sell /stock 등) |
| ollama | 11434 | LLM 추론·임베딩 |
| postgres / redis / qdrant | - | DB·캐시·벡터DB |
| n8n / n8n-worker | 5678 | 워크플로우 자동화 |
## 5. 종합점수 산정
```
종합점수 = 펀더멘털통합 ×0.24 + 뉴스 ×0.18 + 기술 ×0.15
+ DART공시 ×0.10 + 외국인수급 ×0.14 + 공매도 ×0.06
+ 가격모멘텀 ×0.03 + DCF안전마진 ×0.10
+ 시장레짐 보정 + 앙상블 보팅(±18) + 미국증시(±15)
+ 보조신호(컨센서스·수급·매크로 등)
+ 사이클 고점 가드(경기민감주 실적정점 함정 −6~−12)
```
- **펀더멘털통합** = 버핏점수 + 추세 + 이익품질 + 매직포뮬러 + F-Score + **주주환원율 보너스**
- **추천 등급**: 강력매수(≥70·매수보팅≥3) / 매수관심 / 관망 / 매도관심 / 강력매도
## 6. 10공식 앙상블 + 학습
매직포뮬러 · F-Score · 알트만Z · PEG · 12-1모멘텀 · Beneish · GP/A · G-Score · Amihud · 베타(BAB)
— 각 공식이 매수/매도/관망 투표 → 학습 가중치로 결합.
**학습 시스템**
- `/learn-weights` — 공식별 가중치를 백테스트 edge로 학습 (국면별 segment 지원)
- `/learn-pricing` — 26+1개 피처로 7d/30d 수익률 예측 모델 학습 (Ridge·RF·XGBoost, walk-forward CV)
- 학습 데이터: 전 종목 stock_scores 이력 × stock_ohlcv 실현수익률 (약 9,400 표본)
- RF/XGB 모델은 DB에 직렬화 저장 → `/predict-price`가 직접 추론
- 일요일 자동 재학습 (04:00 가중치 / 05:00 가격모델)
## 7. 핵심 DB 테이블
| 테이블 | 내용 |
|--------|------|
| `news_analysis` | 뉴스별 감성·강도·catalyst·종목매핑 |
| `stock_scores` | 종목별 일일 종합점수·세부점수·추천등급·신호 |
| `dart_financials` | 재무제표 + ROE·부채비율 등 비율 + **자사주매입액** |
| `dart_dividends` | 배당금(DPS·총액) |
| `stock_technical` | 기술적 지표 |
| `stock_ohlcv` | 일봉 시계열 (수익률·베타·학습용) |
| `recommendation_performance` | 추천 성과 추적 (7d/30d 수익률·알파) |
| `weight_config` / `pricing_model_v2` | 학습된 가중치 / 가격예측 모델(직렬화 포함) |
| `us_overnight_signal` | 미국증시 → 한국 동조 보정값 |
## 8. 대시보드 (15개 탭)
종합 · 추천성과 · 매매시그널 · 거래량급증 · **포트폴리오** · 내 종목 분석 ·
추천종목 · 뉴스피드 · 수급 · 알림 · 10공식 · 백테스트 · **미증시** · 매크로 · **용어설명**
- 좌측 사이드바 네비게이션, 모바일 대응(햄버거 메뉴)
- 포트폴리오 탭: 보유종목 손익·섹터비중·리밸런싱 진단 + AI 추천 포트폴리오 구성
- 미증시 탭: 새벽 미국 핫/저조 종목 → 관련 KOSPI 추천
- 용어설명 탭: 차트·지표·재무·시장제도·투자스타일 용어 풀이
## 9. 주요 운영 명령
```bash
docker compose ps # 서비스 상태
docker logs trading-<서비스> --tail 50 -f # 로그
docker compose build <서비스> && docker compose up -d <서비스> # 재배포
curl -X POST http://localhost:8686/score/calculate # 전체 재스코어링
curl -X POST 'http://localhost:8686/learn-weights?days=90' # 가중치 학습
curl -X POST 'http://localhost:8686/learn-pricing?target=return_7d' # 가격모델 학습
curl http://localhost:8686/backtest # 백테스트
curl -X POST 'http://localhost:8888/collect/financials?count=3000' # 재무 수집
curl -X POST http://localhost:8888/collect/sectors # 섹터 수집
```
## 10. 개선 이력 (2026-05)
- **백테스트 신뢰성**: 수익률 라벨을 OHLCV 정확한 날짜 종가로 정정, 거래비용 반영, 실제 MDD(자산곡선) 계산, 10공식 가중치 동기화
- **학습 데이터 140배 확장**: 추천종목 63건 → 전 종목 단면 9,394건. 모델 R² 0.40 → +0.38
- **모델 직렬화**: RF/XGB 모델을 DB에 저장 → `/predict-price`가 실제 모델로 추론
- **주주환원율 팩터**: (배당 + 자사주매입) / 시총 → 펀더멘털 보너스 (코리아 디스카운트 방어)
- **사이클 고점 가드**: 경기민감주 실적정점 함정 방어
- **미증시 새벽 브리핑**: 미국 핫/저조 종목 → 관련 KOSPI 추천
- **UI**: 좌측 사이드바 + 모바일 대응, 용어설명 탭 신설
- **포트폴리오 4종**: 추천 구성 · 자산곡선 백테스트 · 보유 관리 · 통합 탭
- **텔레그램**: 하루 4회 → 3회로 축소