모델 결정 보정: - 시점 예측: LSTM → Chronos-2 (Amazon, 120M, zero-shot quantile 분포) - 2차 검증: Claude Haiku 4.5 (API) → Qwen3 14B Q4 (Ollama on web-ai) 영향: - VRAM: ~9.3GB / 16GB (Chronos-2 1GB + Qwen3 8.3GB, 여유 6GB) - LLM 비용: 월 ~₩45,000 (오류 추정) → 실제 0 (로컬 Ollama) - 응답 시간: 5초 → ~13초 (분봉 흐름 OK) - Phase 3 -1주 (LSTM 학습 인프라 제거), Phase 5 +0주 - 야간 재학습 cron 폐기 (Chronos-2 zero-shot) Backlog 추가: - Qwen3 14B 개발자 보조 endpoint (전략 해석 / 코드 자동화) - Claude API 폴백 (web-ai 장애 시) - Kimi K2.6 API 옵션 (저비용 외부 대안) 위험 매트릭스: - Qwen3 한국어 메시지 품질 — Phase 5 A/B 테스트 1주 (vs Claude Haiku) - VRAM 동거 swap 위험 — 8B 다운그레이드 fallback Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
421 lines
20 KiB
Markdown
421 lines
20 KiB
Markdown
# Confidence Signal Pipeline V2 — Architecture & Contract (Phase 0)
|
||
|
||
**작성일**: 2026-05-15
|
||
**작성자**: gahusb
|
||
**상태**: Approved for implementation (Phase 0 = architecture decisions, 코드 변경 없음)
|
||
**Amended 2026-05-15**: Chronos-2 채택 (LSTM 폐기) + Qwen3 14B 채택 (Claude Haiku 폐기). 모델 결정 11개 보정.
|
||
**선행 컨텍스트**:
|
||
- adversarial review (2026-05-13) — 신호 검증 인프라 필요성
|
||
- Stock Screener V1 (post-close 16:30 Top-N) — 가치 발굴 완성
|
||
- AI News Phase 1 (`articles` source, weight=0 검증 대기) — sentiment 신호
|
||
- web-ai (Windows GPU, RTX 5070 Ti) — LSTM + KIS API + Telegram Bot 기존 자산
|
||
|
||
---
|
||
|
||
## 1. 비전
|
||
|
||
**"주식을 쉽게 잘하기"** — 다층 신뢰도 시스템으로 사용자 + 아내 모두에게 확신 있는 매매 신호 전달.
|
||
|
||
V1 screener는 종가 기반 일별 Top-N 만 산출. V2는:
|
||
- **가치 발굴 (stock-lab 종가 기반)** ×
|
||
- **시점 분석 (web-ai 장중 Chronos-2 + 분봉)** ×
|
||
- **2차 검증 (agent-office → web-ai Qwen3 14B Ollama)** ×
|
||
- **이중 텔레그램 (본인 = 기술 풀 / 아내 = 간소화)**
|
||
= **확신의 신호**
|
||
|
||
**역할 분리 — 두 AI 모델**:
|
||
- **Chronos-2** (Amazon, 120M params, FP16 ~1GB) = 시계열 예측 엔진 (수치 → quantile 분포)
|
||
- **Qwen3 14B Q4** (Ollama, ~8.3GB) = 분석가/개발자 보조 두뇌 (자연어 메시지 + 전략 해석 + 코드 자동화)
|
||
|
||
---
|
||
|
||
## 2. Phase 0 산출물
|
||
|
||
**본 spec 1 문서**. 코드 변경 0. 후속 Phase 1-7 의 모든 구현이 본 spec 의 결정을 따른다.
|
||
|
||
핵심 결정 8개 (amend 시점):
|
||
1. 데이터 채널 — `web-ai pull from stock-lab` (web-ai 가 polling)
|
||
2. 데이터 소스 — KIS API 직접 (web-ai) + stock-lab API (settings/screener/portfolio)
|
||
3. **시점 예측 모델 — Chronos-2 (Amazon, 120M, zero-shot, quantile 분포)**
|
||
4. **2차 검증 모델 — Qwen3 14B Q4 (Ollama on web-ai, ~8.3GB, 응답 ~13초)**
|
||
5. 2차 검증 방식 — context augmentation (메시지 직접 작성 + 양방향 게이트)
|
||
6. 트리거 — 매수 (screener Top-20) + 매도 (portfolio 보유). 관심종목은 백로그
|
||
7. 이중 텔레그램 — 본인 풀버전 + 아내 간소화. LLM 단일 콜에서 양쪽 생성
|
||
8. 운영 — 시간대별 폴링 주기 (장전 5분 / 장중 1분 / 장후 5분 / 야간 없음 — Chronos-2 zero-shot)
|
||
|
||
---
|
||
|
||
## 3. 시스템 아키텍처
|
||
|
||
```
|
||
┌─────────────────────────────────────┐ ┌──────────────────────────────────┐
|
||
│ NAS (Synology Docker) │ │ Windows PC (RTX 5070 Ti) │
|
||
│ │ │ │
|
||
│ ┌────────────────────────────────┐ │ │ ┌─────────────────────────────┐ │
|
||
│ │ stock-lab :18500 │ │ │ │ web-ai :8001 │ │
|
||
│ │ • /screener/settings │◄─┼──────┼─►│ ① Pull Worker │ │
|
||
│ │ • /screener/run │ │ HTTP │ │ (시간대별 폴링) │ │
|
||
│ │ • /portfolio │ │ pull │ │ │ │
|
||
│ │ • /news-sentiment (옵션) │ │ │ │ ② KIS Client │ │
|
||
│ └────────────────────────────────┘ │ │ │ (WebSocket 분봉/호가) │ │
|
||
│ │ │ │ │ │
|
||
│ ┌────────────────────────────────┐ │ │ │ ③ Chronos-2 Predictor │ │
|
||
│ │ agent-office :18900 │◄─┼──────┼──┤ (Chronos-2 120M zero-shot)│ │
|
||
│ │ • /signal (Ollama 라우팅) │ │ HTTP │ │ 60일 → quantile 분포 │ │
|
||
│ │ • Telegram dispatcher (이중) │ │ push │ │ │ │
|
||
│ │ → web-ai Ollama HTTP 호출 │ │ │ │ ④ Timing Analyzer │ │
|
||
│ └─────────┬──────────────────────┘ │ trig │ │ (분봉 모멘텀) │ │
|
||
│ │ │ │ │ │ │
|
||
└────────────┼──────────────────────────┘ │ │ ⑤ Signal Generator │ │
|
||
│ │ │ (매수/매도 룰) │ │
|
||
▼ │ │ │ │
|
||
┌─────────────────┐ │ │ ⑥ Rate Limiter │ │
|
||
│ Telegram │ │ │ (24h 중복 차단) │ │
|
||
│ - 본인 (full) │ │ └─────────────┬───────────────┘ │
|
||
│ - 아내 (lite) │ │ │
|
||
└─────────────────┘ └───────────────────────────────────┘
|
||
```
|
||
|
||
**책임 분리**:
|
||
- **stock-lab**: 가치 발굴 (8 노드 + 위생 게이트 + ATR), 사용자 설정 저장, portfolio 단일 진실원
|
||
- **web-ai**: 시점 분석 (Chronos-2 + 분봉), 시그널 생성, rate limit, **Ollama LLM 호스팅 (Qwen3 14B Q4)**
|
||
- **agent-office**: 신호 라우팅 (web-ai Ollama HTTP 호출), 텔레그램 발송 (본인 + 아내)
|
||
- **web-ui**: stock-lab settings 편집 (캔버스 UI). 신호 수신/표시는 V2 NOT.
|
||
|
||
**VRAM 분배 (RTX 5070 Ti 16GB, usable 15.5GB)**:
|
||
- Chronos-2: ~1GB
|
||
- Qwen3 14B Q4: ~8.3GB
|
||
- 합: ~9.3GB
|
||
- 여유: ~6GB (안전 마진)
|
||
|
||
---
|
||
|
||
## 4. 데이터 소스 분담
|
||
|
||
| 데이터 | 출처 | 갱신 주기 | 저장소 |
|
||
|--------|------|----------|-------|
|
||
| KRX 일봉 60일 (Chronos-2 입력) | KIS API (web-ai 직접) | 시작 시 + 종가 후 갱신 | web-ai 로컬 |
|
||
| 정규장 분봉/실시간 호가 | KIS API WebSocket (web-ai 직접) | 실시간 | web-ai 메모리 |
|
||
| NXT 가격 스냅샷 (장전/장후) | KIS API + 네이버 모바일 백업 | 30초~1분 폴링 | web-ai 로컬 |
|
||
| screener settings (가중치) | stock-lab API (web-ai pull) | 1-5분 | NAS `stock.db` |
|
||
| screener 점수 (Top-20) | stock-lab `/run` 호출 결과 | 1-5분 | NAS (preview 모드, 미저장) |
|
||
| portfolio (보유 종목 + 평단) | stock-lab API (web-ai pull) | 1-5분 | NAS `stock.db` |
|
||
| 외인/기관 수급 | stock-lab (네이버 frgn) | 종가 후 16:30 | NAS `stock.db` |
|
||
| AI 뉴스 sentiment | stock-lab (articles 기반 Claude) | 평일 08:00 | NAS `stock.db` |
|
||
| 사용자 텔레그램 chat IDs | agent-office 환경변수 | 정적 | docker-compose env |
|
||
|
||
**원칙**:
|
||
- web-ai는 NAS DB 직접 접근 안 함 — 모든 데이터는 stock-lab API 경유
|
||
- KIS API 데이터는 web-ai 로컬에만 — NAS push 안 함 (실시간성 + 용량)
|
||
- 본인+아내 chat ID 는 agent-office 단독 보관 — web-ai 는 ticker/action 만 push
|
||
|
||
---
|
||
|
||
## 5. API 계약
|
||
|
||
### 5.1 stock-lab → web-ai (pull 응답)
|
||
|
||
**기존 endpoint (변경 없음)**:
|
||
- `GET /api/stock/screener/settings` — 현재 가중치/임계값
|
||
- `POST /api/stock/screener/run {mode:"preview"}` — 8 노드 점수 + Top-N (DB 미저장)
|
||
- `GET /api/portfolio` — 보유 종목 리스트
|
||
|
||
**신규 endpoint (Phase 1)**:
|
||
- `GET /api/stock/screener/news-sentiment?days=1` — 종목별 sentiment 점수 (옵션, Phase 1 에 추가)
|
||
|
||
### 5.2 web-ai → agent-office (push)
|
||
|
||
**신규 endpoint** (Phase 5):
|
||
```
|
||
POST /api/agent-office/signal
|
||
Content-Type: application/json
|
||
```
|
||
|
||
Request body:
|
||
```json
|
||
{
|
||
"ticker": "005930",
|
||
"name": "삼성전자",
|
||
"action": "buy" | "sell",
|
||
"confidence_webai": 0.82,
|
||
"current_price": 78500,
|
||
"avg_price": 75000, // sell 시에만
|
||
"pnl_pct": 0.047, // sell 시에만
|
||
"context": {
|
||
"lstm_pred_1d": 0.023,
|
||
"lstm_pred_conf": 0.82,
|
||
"screener_rank": 3,
|
||
"screener_scores": {"foreign_buy": 88, "volume_surge": 75, "momentum": 60, ...},
|
||
"minute_momentum": "strong_up" | "weak_up" | "neutral" | "weak_down" | "strong_down",
|
||
"kospi_change": 0.004,
|
||
"news_sentiment": 6.2,
|
||
"news_top": ["HBM 양산 가시화", "1분기 어닝 서프라이즈"]
|
||
}
|
||
}
|
||
```
|
||
|
||
Response (agent-office → web-ai):
|
||
```json
|
||
{
|
||
"ok": true,
|
||
"decision": "send" | "hold",
|
||
"final_confidence": 0.745,
|
||
"telegram_self_sent": true,
|
||
"telegram_wife_sent": true
|
||
}
|
||
```
|
||
|
||
### 5.3 web-ai Ollama 응답 (agent-office → Ollama HTTP)
|
||
|
||
agent-office 가 web-ai 의 Ollama (Qwen3 14B Q4) 에 보내는 prompt 의 응답 schema:
|
||
```json
|
||
{
|
||
"decision": "send" | "hold",
|
||
"confidence_llm": 0.91,
|
||
"reason": "외인+거래량+호재 일관성 강함",
|
||
"warnings": ["KOSPI 약세 가능성"],
|
||
"message_self": "🔔 매수 신호: 삼성전자 (005930)\n💡 신뢰도 ...",
|
||
"message_wife": "📈 추천: 삼성전자 매수 검토\n사유: ..."
|
||
}
|
||
```
|
||
|
||
`final_confidence = confidence_webai × confidence_llm`. 임계값 (default 0.7) 미만 또는 `decision="hold"` 면 silent (텔레그램 발송 안 함).
|
||
|
||
**프롬프트 엔지니어링 (Qwen3 14B JSON 강제)** — ai_news 슬라이스의 Claude JSON 강제 패턴 적용:
|
||
- system: "너는 한국 주식 분석가다. JSON 객체 하나만 반환한다."
|
||
- assistant prefill `"{"` 로 응답 시작 강제
|
||
- temperature=0
|
||
- 응답 파싱 실패 시 `decision="hold"` 폴백 (silent block)
|
||
|
||
---
|
||
|
||
## 6. 시그널 룰
|
||
|
||
### 6.1 매수 신호 (screener Top-20 종목 대상)
|
||
|
||
조건 (전부 충족):
|
||
1. Chronos-2 1-day quantile (median) 예측 > 0% 그리고 분포 폭 (90-10 분위수 / 50 분위수) < 0.6 (좁은 분포 = 높은 conf)
|
||
2. 분봉 모멘텀 = `strong_up`:
|
||
- 5분봉 5개 연속 양봉
|
||
- 거래량 > 평균 1.5배
|
||
3. KIS 호가 매수세 ≥ 60%
|
||
|
||
종합 confidence:
|
||
```
|
||
confidence_webai = chronos_conf × 0.5 + minute_score × 0.3 + screener_norm × 0.2
|
||
```
|
||
- `chronos_conf` ∈ [0, 1] — Chronos-2 분포 폭에서 변환 (좁을수록 1에 가까움)
|
||
- `minute_score` ∈ [0, 1] (5분봉 강도 + 거래량 multiplier 정규화)
|
||
- `screener_norm` = 1 - (rank - 1) / 20 (rank 1 = 1.0, rank 20 = 0.05)
|
||
|
||
**임계값**: `confidence_webai > 0.7` → agent-office 전송. 아니면 silent.
|
||
|
||
### 6.2 매도 신호 (portfolio 보유 종목 대상)
|
||
|
||
**손절선** (사용자 조정 가능, default -7%):
|
||
- `pnl_pct < -0.07` 시 즉시 매도 시그널 (Chronos-2/분봉 무관)
|
||
- 메시지: "손절선 도달, 매도 검토"
|
||
|
||
**익절선** (default +15%):
|
||
- `pnl_pct > 0.15` 시 검토 알림 (강제 매도 아님)
|
||
- 메시지: "익절선 도달, 부분 매도 또는 추세 추종 검토"
|
||
|
||
**이상 신호** (보유 중 급격한 약세):
|
||
- Chronos-2 1-day quantile (median) 예측 < -1% + 분포 폭 좁음 (chronos_conf > 0.7)
|
||
- 분봉 모멘텀 = `strong_down`
|
||
- KIS 호가 매도세 ≥ 60%
|
||
- `confidence_webai > 0.7` 동일 임계값으로 전송
|
||
|
||
### 6.3 Rate limit
|
||
|
||
- **같은 종목 + 같은 action**: 24h 내 재알림 금지
|
||
- **장 마감 후 재실행**: 손절선/익절선 알림은 1일 1회 maximum
|
||
- Rate limit state: web-ai 로컬 SQLite 또는 메모리 dict (재기동 시 reset = 운영상 허용)
|
||
|
||
---
|
||
|
||
## 7. 텔레그램 메시지 형식
|
||
|
||
### 7.1 본인 (기술 풀)
|
||
|
||
```
|
||
🔔 매수 신호: 삼성전자 (005930)
|
||
💡 신뢰도 87/100 (web-ai 82 × Qwen3 91)
|
||
|
||
📊 분석 근거:
|
||
• Chronos-2 예측: 다음날 +2.3% (분포 폭 좁음, conf 0.82)
|
||
• Screener Top-3: 외인+거래량 강세
|
||
• AI 뉴스: +6.2 (HBM 양산 가시화)
|
||
• 분봉 모멘텀: 강세 (5분봉 5연속 양봉)
|
||
• KOSPI: +0.4% (약강세)
|
||
|
||
⚠️ 주의:
|
||
• 코스피 약세 구간 진입 가능성
|
||
• 분할 매수 권고
|
||
|
||
현재가: 78,500원
|
||
```
|
||
|
||
### 7.2 아내 (간소화)
|
||
|
||
```
|
||
📈 추천: 삼성전자 매수 검토
|
||
사유: 외국인 매수 강세 + 호재 뉴스
|
||
추천 강도: ★★★★☆ (높음)
|
||
현재가: 78,500원
|
||
```
|
||
|
||
추천 강도 표시: `final_confidence` 기준
|
||
- ★★★★★ (0.85+)
|
||
- ★★★★☆ (0.7-0.85)
|
||
- ★★★☆☆ (0.55-0.7) — 텔레그램 발송은 0.7 임계값이라 도달 안 함
|
||
|
||
### 7.3 매도 메시지 (본인/아내 양쪽)
|
||
|
||
본인:
|
||
```
|
||
🚨 매도 신호: SK하이닉스 (000660)
|
||
💡 신뢰도 78/100
|
||
|
||
📊 사유:
|
||
• 평단 대비 -7.2% (손절선 도달)
|
||
• Chronos-2 다음날 -1.5% 예측 (conf 0.75)
|
||
• 분봉 강한 매도세
|
||
|
||
매도 검토 권고. 평단 152,000원 → 현재 141,100원
|
||
```
|
||
|
||
아내:
|
||
```
|
||
⚠️ 매도 검토: SK하이닉스
|
||
사유: 손절선 도달, 약세 신호
|
||
손익: -7.2%
|
||
```
|
||
|
||
---
|
||
|
||
## 8. 운영 모드
|
||
|
||
| 시간대 | web-ai 동작 | 폴링 주기 | 비용 |
|
||
|--------|------------|----------|------|
|
||
| **장전 (07:00-09:00)** | settings + screener pull + NXT 가격 + sentiment | 5분 | 0 |
|
||
| **장중 (09:00-15:30)** | KIS 분봉 + 호가 + Chronos-2 추론 + 시그널 + Qwen3 검증 | 1분 | 0 (LLM 로컬) |
|
||
| **장후 (15:30-20:00)** | NXT 가격 + 보유 종목 PnL 추적 + 손절/익절 알림 | 5분 | 0 |
|
||
| **야간 (20:00-07:00)** | (재학습 cron 없음 — Chronos-2 zero-shot) | — | 0 |
|
||
|
||
**예상 LLM 비용**:
|
||
- **월 LLM API 비용 = 0** (Qwen3 14B Q4 로컬 호스팅)
|
||
- 전기료만 (Windows PC 상시 가동, RTX 5070 Ti 평균 idle ~30W + 추론 spike ~200W)
|
||
- 일 신호 3-5건 × ~13초 추론 = 일 GPU full load ~1분 정도, 무시 가능
|
||
- **Chronos-2 추론은 GPU 로컬, 비용 0**
|
||
|
||
---
|
||
|
||
## 9. Phase 1-7 분해
|
||
|
||
```
|
||
Phase 1: stock-lab API 보강 (1주)
|
||
- /api/portfolio 외부 노출 (현재 web-ui 내부용)
|
||
- /api/stock/screener/news-sentiment endpoint 추가
|
||
- /api/stock/screener/run preview 옵션 검증
|
||
|
||
Phase 2: web-ai Pull Worker + Signal API Client (2주)
|
||
- 기존 main_server.py + bot.py 분리
|
||
- stock-lab API client (httpx + retry + cache)
|
||
- 시간대별 폴링 스케줄러
|
||
- rate limit DB
|
||
|
||
Phase 3: KIS WebSocket + 분봉 + Chronos-2 추론 (2주, ↓ 1주)
|
||
- KIS WebSocket client (정규장 분봉 + 호가)
|
||
- NXT 폴링 client (스냅샷 + 네이버 백업)
|
||
- Chronos-2 zero-shot 추론 파이프라인 (HuggingFace 모델 로드 + 배치 추론)
|
||
- 분봉 모멘텀 분류기
|
||
- (재학습 인프라 X — Chronos-2 zero-shot)
|
||
|
||
Phase 4: Signal Generator (1주)
|
||
- 매수 룰 (Chronos-2 quantile + 분봉 + 호가 + screener)
|
||
- 매도 룰 (손절/익절/이상)
|
||
- confidence 계산 + 임계값
|
||
|
||
Phase 5: agent-office /signal + Ollama Qwen3 검증 + 이중 텔레그램 (2주)
|
||
- POST /signal 라우터 (agent-office)
|
||
- web-ai 에 Ollama 서버 + Qwen3 14B Q4 설치
|
||
- agent-office → web-ai Ollama HTTP client (Anthropic SDK 대체)
|
||
- Qwen3 prompt (system + user + assistant prefill JSON)
|
||
- 본인/아내 dispatcher
|
||
- **A/B 테스트 1주 — 본인 chat 에 Qwen3/Claude Haiku 메시지 동시 발송 후 한 쪽 채택**
|
||
|
||
Phase 6: web-ai 기존 trading bot 정리 (1주)
|
||
- 자체 watchlist_manager 삭제
|
||
- 자체 뉴스 크롤링 (Ollama) 삭제
|
||
- 기존 자동 매매 (KIS 실주문) 비활성화 또는 별도 모드 분리
|
||
|
||
Phase 7: 운영 모니터링 + 4주 IC 검증 (1주 + 4주)
|
||
- 신호 hit-rate 추적 (forward return correlation)
|
||
- false positive rate
|
||
- 임계값 점진 조정
|
||
- Phase 8 (자동 매매) 검토
|
||
```
|
||
|
||
총 10-12주 (개인 페이스). 각 Phase 마다 자체 spec + plan + 검증 사이클.
|
||
|
||
---
|
||
|
||
## 10. Backlog (V2 본 spec NOT)
|
||
|
||
미래 슬라이스로 분리:
|
||
- **관심종목 (watchlist) 모니터링** — Top-N + portfolio 외, 사용자 관심종목의 변동성 spike / 거래량 급증 알람
|
||
- **자동 매매 (KIS 실주문)** — Phase 8 검토. 4주 신호 hit-rate ≥ 60% 후 단계적
|
||
- **DART 공시 통합** — LLM 검증 컨텍스트에 공시 추가
|
||
- **백테스트 화면** — 과거 신호 정확도 시각화
|
||
- **신호 hit-rate 대시보드** — web-ui 신규 페이지
|
||
- **분할 매수/매도 전략 추천** — Phase 7 이후
|
||
- **옵션/선물/해외 주식** — V3 검토
|
||
- **Qwen3 14B "개발자 보조" 별도 endpoint** — 전략 해석/코드 자동화/디버그 도구. V2 흐름 외 사용자 챗봇 형태 (텔레그램 또는 web-ui chat). 같은 Ollama 인스턴스 재활용
|
||
- **Claude API 폴백** — web-ai/Ollama 장애 시 anthropic 으로 자동 전환 (가용성 보강)
|
||
- **Kimi K2.6 API 옵션** — Qwen3 응답 품질 부족 시 ~80% 저비용 외부 API 대안
|
||
|
||
---
|
||
|
||
## 11. 위험 및 완화
|
||
|
||
| 위험 | 완화 |
|
||
|------|------|
|
||
| Windows PC 다운 시 신호 zero | stock-lab은 정상. web-ai down 시 헬스체크 → 텔레그램 운영자 알림. Ollama도 함께 다운 (같은 머신) → Claude API 폴백은 백로그 |
|
||
| KIS API 장애 | NXT는 네이버 모바일 API 폴백. 분봉은 단기 재시도 + 일정 시간 후 alert |
|
||
| **Qwen3 14B 한국어 메시지 품질 부족** | **Phase 5 A/B 테스트 1주 — Qwen3 vs Claude Haiku 메시지 동시 발송 후 우월한 쪽 채택. Qwen3 부족 시 Claude Haiku 로 폴백** |
|
||
| False positive 다수 | 4주 IC + Phase 7 모니터링. 임계값 점진 상향 |
|
||
| Chronos-2 분포 drift | 주간 ablation (forward return correlation 추적). drift 시 다른 foundation 모델 (Moirai-2.0) 으로 교체 검토 |
|
||
| 메시지 본인-아내 drift | LLM 단일 콜에서 양쪽 동시 생성 (drift 회피, 같은 reasoning) |
|
||
| 매도 신호 지연 | 분봉 1분 폴링. 손절선은 보유 종목 단순 비교 (Chronos-2 무관 즉시 트리거) |
|
||
| stock-lab API 응답 지연 | web-ai 측 timeout 10s + 캐시 (마지막 성공 응답 ttl 5분) |
|
||
| 종목 갱신 race condition | screener Top-20 변동 시 rate limit 키 = (ticker, action, date) |
|
||
| **Qwen3 응답 13초로 분봉 1분 안에 한 사이클 끝낼 수 없을 위험** | 신호 발생 빈도 일 3-5건이라 동시 처리 거의 없음. 큐 직렬 처리로 충분. 대량 신호 시 backpressure → Phase 7 모니터링 |
|
||
| **VRAM 빡빡 (Chronos-2 + Qwen3 = 9.3GB / 15.5GB)** | 여유 6GB 안전. 동시 로딩 시점 분리 (Chronos-2 추론 → 결과 메모리 보관 → Qwen3 호출). swap 발생 시 Phase 7 에서 Qwen3 8B 로 다운그레이드 검토 |
|
||
|
||
---
|
||
|
||
## 12. 명시적 NOT 범위 (Phase 0)
|
||
|
||
- **자동 매매 (실주문)**: V2 는 신호만. 사용자가 수동 매매. Phase 8 별도 검토
|
||
- **종목 매수 가격/수량 추천**: 사용자 결정. 신호는 "검토 권고" 수준
|
||
- **분할 매수/매도 전략**: Phase 7 이후 별도 슬라이스
|
||
- **옵션/선물/해외 주식**: KRX 정규장 + NXT 한정
|
||
- **관심종목 모니터링**: 백로그 (§10)
|
||
- **신호 hit-rate 시각화 UI**: 백로그
|
||
|
||
---
|
||
|
||
## 13. 완료 조건 (Phase 0 DoD)
|
||
|
||
본 spec 완료 = 다음 조건 모두 충족:
|
||
- [x] 사용자가 spec 검토 + 승인 (2026-05-15)
|
||
- [x] git commit (`docs/superpowers/specs/2026-05-15-confidence-signal-pipeline-v2-architecture.md`)
|
||
- [x] 8 핵심 결정 명시적 (데이터 채널, 데이터 소스, Chronos-2 예측, Qwen3 검증, context augmentation, 매수+매도, 이중 텔레그램, 운영 모드)
|
||
- [x] 4개 API 계약 (3 stock-lab pull + 1 agent-office push) 모두 schema 정의
|
||
- [x] Phase 1-7 분해 + 각 Phase 추정 기간 (Phase 3 -1주, Phase 5 +0주 → 총 10-11주)
|
||
- [x] backlog + 위험/완화 매트릭스 + NOT 범위
|
||
- [x] **Amend (2026-05-15): Chronos-2 + Qwen3 14B Q4 채택 + 11 보정**
|
||
|
||
Phase 0 자체에는 코드 변경 0. 본 spec 승인 후 Phase 1 brainstorming 으로 자연스럽게 이어진다.
|