97cf5aecb0
trading/pipeline/head This commit looks good
이번 세션 외 그간 쌓인 변경 일괄 저장: - 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>
135 lines
7.2 KiB
Markdown
135 lines
7.2 KiB
Markdown
# 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회로 축소
|