8f13bb4a48
- PostgreSQL history contract와 schema/validator를 추가했습니다. - .NET history store, snapshot reader, repository, migration을 연결했습니다. - history-first 운영 모델 문서와 daily signal tracking 문구를 정리했습니다.
275 lines
5.7 KiB
Markdown
275 lines
5.7 KiB
Markdown
# 📊 Daily Signal Tracking Guide
|
|
|
|
**목표**: 30개 거래신호 수집 → CALIBRATED 전환 → honest_proof_score 95 달성
|
|
|
|
**기간**: 2026-06-25 ~ 2026-08-10 (약 6주)
|
|
|
|
---
|
|
|
|
## 📋 매일 해야 할 일
|
|
|
|
### 1️⃣ 신호 발생 시 (거래 진입 시점)
|
|
|
|
```python
|
|
# Python 또는 DB 마이그레이션 도구에서 실행
|
|
signal = {
|
|
"date": "2026-06-25",
|
|
"ticker": "000660", # SK하이닉스 등
|
|
"signal_type": "BUY", # BUY 또는 SELL
|
|
"signal_score": 78, # 0-100
|
|
"entry_price": 50000, # KRW
|
|
"entry_quantity": 10, # 주
|
|
"entry_time": "10:30", # HH:MM
|
|
"style": "SWING", # SCALP|SWING|MOMENTUM|POSITION
|
|
"routing_confidence": 82, # buildRoutePacket_ 결과
|
|
"notes": "MA20 돌파 + 스마트머니 매수"
|
|
}
|
|
|
|
# 운영 표준: PostgreSQL의 signal/factor history 테이블에 적재
|
|
```
|
|
|
|
**✅ 체크리스트:**
|
|
- [ ] signal_id 자동 생성됨 (YYYYMMDD_HHMM 형식)
|
|
- [ ] validation_status = "UNVALIDATED"
|
|
- [ ] PostgreSQL 이력 행 추가됨
|
|
|
|
---
|
|
|
|
### 2️⃣ T+5 (5거래일 후)
|
|
|
|
```
|
|
거래일 기준:
|
|
- 월요일 진입 → 다음주 월요일이 T+5
|
|
- 금요일 진입 → 그다음주 금요일이 T+5
|
|
```
|
|
|
|
**해야 할 일:**
|
|
1. T+5일의 종가 조회
|
|
2. `updatePriceT5_(signalId, priceT5)` 실행
|
|
3. 또는 PostgreSQL `price_t5` 이력 열에 직접 입력
|
|
|
|
**예시:**
|
|
```
|
|
signal_id: 20260625_1030
|
|
진입가: 50,000
|
|
T+5 종가: 51,000
|
|
```
|
|
|
|
---
|
|
|
|
### 3️⃣ T+20 (20거래일 후) ⭐ 가장 중요
|
|
|
|
```
|
|
T+5 이후 추가 15거래일 경과
|
|
```
|
|
|
|
**해야 할 일:**
|
|
1. T+20 종가 조회
|
|
2. `updatePriceT20_(signalId, priceT20)` 실행
|
|
3. **자동으로 계산됨:**
|
|
- `return_pct_t20` = (priceT20 - entryPrice) / entryPrice * 100
|
|
- `outcome` = WIN / LOSS / BREAKEVEN
|
|
- `win_margin` = |return_pct_t20|
|
|
- `validation_status` = PROVISIONAL (자동으로 UNVALIDATED → PROVISIONAL 전환)
|
|
|
|
**판정 기준:**
|
|
```
|
|
return_pct_t20 > 2% → WIN
|
|
-2% ≤ ret_pct ≤ 2% → BREAKEVEN (통계 제외)
|
|
return_pct_t20 < -2% → LOSS
|
|
```
|
|
|
|
**예시:**
|
|
```
|
|
signal_id: 20260625_1030
|
|
진입가: 50,000
|
|
T+20 종가: 51,050
|
|
수익률: (51,050-50,000)/50,000 * 100 = 2.1%
|
|
outcome: WIN ✅
|
|
win_margin: 2.1
|
|
validation_status: PROVISIONAL
|
|
```
|
|
|
|
---
|
|
|
|
## 📈 주간 리뷰 (매주 금요일)
|
|
|
|
### 확인 사항
|
|
|
|
```javascript
|
|
// GAS 콘솔에서 실행
|
|
stats = calculateStats_();
|
|
Logger.log(JSON.stringify(stats, null, 2));
|
|
```
|
|
|
|
**출력 예시:**
|
|
```json
|
|
{
|
|
"total": 8,
|
|
"completed": 4,
|
|
"win_count": 3,
|
|
"loss_count": 1,
|
|
"breakeven_count": 0,
|
|
"win_rate": "75.00",
|
|
"avg_win_margin": "2.45",
|
|
"calibrated_progress": "4/30"
|
|
}
|
|
```
|
|
|
|
### 분석
|
|
|
|
- ✅ **win_rate >= 60%?** → YES면 순조로운 진행
|
|
- 📊 **avg_win_margin** → 평균 수익률 확인
|
|
- 🎯 **calibrated_progress** → 남은 신호 수 (30 - 완료)
|
|
|
|
### 보고
|
|
|
|
```markdown
|
|
## 주간 리포트 (Week 1)
|
|
|
|
| 항목 | 값 |
|
|
|------|-----|
|
|
| 누적 신호 | 8개 |
|
|
| 완료됨 | 4개 |
|
|
| 승률 | 75% |
|
|
| 평균 수익 | 2.45% |
|
|
| 진행률 | 4/30 |
|
|
| 예상 완료 | 2026-07-20 |
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 마일스톤
|
|
|
|
### Week 1-2 (2026-06-25 ~ 2026-07-08)
|
|
- **목표**: 6-8개 신호
|
|
- **누적**: 6-8개
|
|
- **예상 승률**: 50-70%
|
|
|
|
### Week 3-4 (2026-07-09 ~ 2026-07-22)
|
|
- **목표**: 추가 8-10개
|
|
- **누적**: 14-18개
|
|
- **T+20 데이터 수집 시작** (첫 신호들 마감)
|
|
|
|
### Week 5-6 (2026-07-23 ~ 2026-08-05)
|
|
- **목표**: 추가 8-10개
|
|
- **누적**: 22-28개
|
|
- **승률 검증** 시작
|
|
|
|
### Week 7 (2026-08-06 ~ 2026-08-10)
|
|
- **목표**: 최종 2-8개
|
|
- **누적**: 30개 완료
|
|
- **CALIBRATED 전환 확인**
|
|
|
|
---
|
|
|
|
## 🚀 CALIBRATED 전환
|
|
|
|
### 자동 확인
|
|
|
|
```javascript
|
|
// 매일 또는 주간 실행
|
|
check = checkCalibrationReady_();
|
|
Logger.log(JSON.stringify(check, null, 2));
|
|
```
|
|
|
|
### 조건
|
|
|
|
```
|
|
✅ sample_count >= 30
|
|
✅ avg_win_rate >= 60%
|
|
```
|
|
|
|
### 전환 프로세스
|
|
|
|
```javascript
|
|
// 조건 충족 시 실행
|
|
calibrateIfReady_();
|
|
|
|
// 결과
|
|
// → 모든 PROVISIONAL → CALIBRATED
|
|
// → honest_proof_score +15점 (86.57 → 101.57... 실제로는 cap 95)
|
|
// → 알고리즘 locked 배포
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 honest_proof_score 개선 경로
|
|
|
|
```
|
|
현재: 56.57
|
|
|
|
Phase 1 (P0): +10점
|
|
→ 66.57
|
|
|
|
Phase 2 (30건 샘플): +20점
|
|
→ 86.57
|
|
|
|
Phase 3 (P3~P6 운영): +8점
|
|
→ 94.57 ≈ 95 목표 달성 ✅
|
|
```
|
|
|
|
---
|
|
|
|
## ⚠️ 주의사항
|
|
|
|
### 신호 품질
|
|
|
|
- **거짓 신호 추가 금지** (spec 위반)
|
|
- **뒷북 신호 제외** (P5 Alpha Lead 미충족)
|
|
- **배분 위험 신호 차단** (P5 Distribution Risk Gate)
|
|
|
|
### 데이터 정확성
|
|
|
|
- **T+20 가격**: KIS/OpenAPI/Yahoo Finance에서 정확하게 수집
|
|
- **수익률 계산**: 수수료·세금 제외 (순가격 기준)
|
|
- **시간대**: 모든 시간대는 KRW/KST 기준
|
|
|
|
### 매뉴얼 점검
|
|
|
|
- 주당 1회 통계 검증
|
|
- 월당 1회 샘플 품질 감사
|
|
- 승률 급락 시 즉시 신호 정책 재검토
|
|
|
|
---
|
|
|
|
## 📝 템플릿
|
|
|
|
### 신호 기록 양식
|
|
|
|
```
|
|
신호 ID: [자동 생성]
|
|
종목: SK하이닉스 (000660)
|
|
진입가: 50,000원
|
|
진입 수량: 10주
|
|
진입 시간: 10:30
|
|
신호 강도: 78/100
|
|
라우팅 신뢰도: 82/100 (buildRoutePacket_)
|
|
스타일: SWING
|
|
이유: 5일선 돌파 + 스마트머니 순매수 + 기관 매수
|
|
```
|
|
|
|
### T+20 기록
|
|
|
|
```
|
|
T+20 종가: 51,050원
|
|
수익률: +2.1%
|
|
판정: WIN
|
|
마진: 2.1%
|
|
메모: 목표가 도달, 손절 전 청산
|
|
```
|
|
|
|
---
|
|
|
|
## 🔗 관련 문서
|
|
|
|
- `spec/realtime/live_outcome_ledger_plan.yaml` — 마스터 계획(역사적)
|
|
- `src/google_apps_script/live_outcome_ledger.gs` — 역사적 GAS 원장 어댑터
|
|
- `spec/02_data_contract.yaml` — PostgreSQL history-first 운영 계약
|
|
- `V9_HARDENING_IMPLEMENTATION_ROADMAP.md` — 전체 로드맵
|
|
|
|
---
|
|
|
|
**마지막 업데이트**: 2026-06-25
|
|
**다음 리뷰**: 2026-07-04 (금요일)
|