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>
7.2 KiB
7.2 KiB
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. 주요 운영 명령
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회로 축소