0a51702a9a
Phase 2 implementation complete: P3 - 손절 체계 재정의 (Stop Loss Taxonomy): - spec/exit/stop_loss.yaml: P3 섹션 추가 - calcAbsoluteRiskStopV1_: 절대 손실 금지선 (entry * 0.92 vs ATR * 1.5) - calcRelativeUnderperfAlertV1_: 상대 성과 추적 (WATCH/TRIM_30/TRIM_50/EXIT_100) - calcStopActionLadderV1_: 사다리식 액션 결정 P4 - 라우팅 단일화 (Unified Routing): - spec/xx_routing_contract.yaml: 4가지 스타일 가중치 정의 - buildRoutePacket_: SCALP/SWING/MOMENTUM/POSITION 점수 + best_style 결정 P5 - 뒷북 차단 (Anti-Late Entry): - spec/exit/pre_distribution_gate.yaml: 배분 위험 조기 감지 - calcAlphaLeadV1_: Alpha Lead Entry Gate (alpha_lead_score >= 75) - calcDistributionRiskV1_: Pre-Distribution Early Warning (risk >= 70) P6 - 현금확보 (Cash Recovery): - spec/exit/cash_recovery.yaml: K2 50/50 분할 + value_damage <= 10% - calcCashRecoveryOptimizerV1_: 현금 최적화 (부족액 4,134만원) UI/UX 개선 (MudBlazor 6.10.0): - Dashboard.razor: 단순 버전 (컴파일 에러 제거) - MainLayout.razor: Typo enum 수정 (H5→h5, H6→h6) - NavMenu.razor: Icons.Material.Filled.Portfolio → Inventory2 릴리스 빌드: - dotnet publish -c Release 성공 - publish 폴더 24MB (배포 준비 완료) 실전 운영 계획: - spec/realtime/live_outcome_ledger_plan.yaml: 30건 신호 샘플링 계획 - honest_proof_score: 56.57 → 95.0 개선 경로 정의 - 예상 기간: 2026-06-25 ~ 2026-08-10 (약 6주) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
162 lines
7.5 KiB
YAML
162 lines
7.5 KiB
YAML
---
|
|
schema_version: "live_outcome_ledger_plan_v1"
|
|
generated: "2026-06-25"
|
|
description: "실전 거래신호 추적 및 CALIBRATED 전환 계획"
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 목표
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
purpose: |
|
|
실제 거래 신호 30개를 T+20 기준으로 평가하여
|
|
UNVALIDATED → PROVISIONAL → CALIBRATED 상태 전환
|
|
honest_proof_score: 56.57 → 95.0 달성
|
|
|
|
current_state:
|
|
honest_proof_score: 56.57
|
|
target_score: 95.0
|
|
improvement_needed: 38.43
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 레저 구조 (19 필드)
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
ledger_fields:
|
|
- "signal_id: 거래신호 고유 ID"
|
|
- "date: 신호 발생 일자 (YYYY-MM-DD)"
|
|
- "ticker: 종목코드"
|
|
- "signal_type: BUY|SELL"
|
|
- "signal_score: 신호 강도 (0-100)"
|
|
- "entry_price: 진입가 (KRW)"
|
|
- "entry_quantity: 진입 수량"
|
|
- "entry_time: 진입 시간 (HH:MM)"
|
|
- "style: SCALP|SWING|MOMENTUM|POSITION"
|
|
- "routing_confidence: 라우팅 확신도 (0-100)"
|
|
- "price_t5: T+5 종가"
|
|
- "price_t10: T+10 종가"
|
|
- "price_t20: T+20 종가"
|
|
- "return_pct_t20: T+20 수익률 (%)"
|
|
- "outcome: WIN|LOSS|BREAKEVEN"
|
|
- "win_margin: 수익률 절대값 (%)"
|
|
- "validation_status: UNVALIDATED|PROVISIONAL|CALIBRATED"
|
|
- "notes: 평가 메모"
|
|
- "last_updated: 마지막 업데이트 (ISO 8601)"
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 상태 전환 규칙
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
state_transitions:
|
|
UNVALIDATED:
|
|
condition: "신호 생성 직후"
|
|
action: "T+20 가격 데이터 대기"
|
|
duration: "약 20 거래일"
|
|
|
|
PROVISIONAL:
|
|
condition: "T+20 데이터 수집 완료"
|
|
criteria:
|
|
- "return_pct_t20 계산됨"
|
|
- "outcome 판정됨"
|
|
- "win_margin 기록됨"
|
|
action: "신호 품질 임시 검증"
|
|
|
|
CALIBRATED:
|
|
condition: "30개 신호 누적 + 평균 win_rate >= 60%"
|
|
criteria:
|
|
- "sample_count >= 30"
|
|
- "avg_win_rate >= 60%"
|
|
- "win_margin >= 2.0% (평균)"
|
|
action: "해당 스타일 알고리즘 locked (배포)"
|
|
honest_proof_score_gain: "+15점"
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 샘플링 일정
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
sampling_schedule:
|
|
start_date: "2026-06-25"
|
|
target_date: "2026-08-10" # 약 6주 (30개 신호 × 20거래일 수집)
|
|
expected_completion: "30개 신호 완료"
|
|
|
|
sampling_targets:
|
|
SCALP: "10개" # 초단타
|
|
SWING: "8개" # 중단기
|
|
MOMENTUM: "7개" # 모멘텀
|
|
POSITION: "5개" # 장기
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 품질 기준 (W/L 판정)
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
quality_criteria:
|
|
WIN:
|
|
condition: "return_pct_t20 > 2.0%"
|
|
example: "진입 50,000 → T+20 51,000원 (+2%)"
|
|
|
|
LOSS:
|
|
condition: "return_pct_t20 < -2.0%"
|
|
example: "진입 50,000 → T+20 49,000원 (-2%)"
|
|
|
|
BREAKEVEN:
|
|
condition: "-2.0% <= return_pct_t20 <= 2.0%"
|
|
action: "통계에서 제외 (noise)"
|
|
|
|
success_threshold: "avg_win_rate >= 60% (30개 중 18개 WIN)"
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# honest_proof_score 개선 경로
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
honest_proof_improvement_path:
|
|
current: 56.57
|
|
|
|
phase_1_complete:
|
|
name: "P0 거짓 100% 제거"
|
|
gain: "+10점"
|
|
new_score: 66.57
|
|
|
|
phase_2_30_samples:
|
|
name: "live_outcome_ledger 30건"
|
|
gain: "+20점"
|
|
new_score: 86.57
|
|
|
|
phase_3_p3_to_p6:
|
|
name: "P3~P6 체계 운영"
|
|
gain: "+8점"
|
|
new_score: 94.57
|
|
|
|
final_target: 95.0
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 추적 시스템
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
tracking_system:
|
|
spreadsheet: "live_outcome_ledger (GAS 연동 스프레드시트)"
|
|
|
|
daily_tasks:
|
|
- "신규 신호 entry 작성 (시작할 때)"
|
|
- "T+5, T+10, T+20 가격 입력 (자동 수집)"
|
|
- "outcome 자동 계산"
|
|
- "validation_status 자동 전환"
|
|
|
|
weekly_review:
|
|
- "누적 신호 수 확인"
|
|
- "win_rate 추이 분석"
|
|
- "스타일별 성적 비교"
|
|
- "honest_proof_score 예상치 갱신"
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# 체크리스트
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
checklist:
|
|
- [ ] "live_outcome_ledger 스프레드시트 생성 (GAS 연동)"
|
|
- [ ] "신호 기록 템플릿 작성"
|
|
- [ ] "T+20 가격 수집 자동화 (GAS)"
|
|
- [ ] "daily commit: 신호 추가 시마다"
|
|
- [ ] "30개 신호 누적 (약 6주)"
|
|
- [ ] "win_rate >= 60% 달성"
|
|
- [ ] "CALIBRATED 전환"
|
|
- [ ] "honest_proof_score 95 달성"
|