refactor: GT·시뮬·운영 3축 정리 및 hybrid 실거래 정합

Phase C/dry-run·미사용 모듈·재생성 HTML을 제거하고, 운영 체결을
sim_causal_hybrid와 동일한 hybrid 로직으로 통합한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
xavis
2026-06-03 23:50:28 +09:00
parent a16c942be4
commit d7848df6f7
85 changed files with 177180 additions and 196131 deletions

View File

@@ -1,108 +1,43 @@
# Phase별 `.env` 권장값
# 운영 `.env` 권장값 (Operations)
프로젝트 루트 `.env`**해당 Phase 블록** 반영하세요. API 키·토큰은 기존 값 유지.
**일정:** Phase C ~2026-06-05 (금) → Phase B-1 ~2026-06-06 (토)부터
설계: [ARCHITECTURE.md](../reference/ARCHITECTURE.md). dry-run·Phase C 블록**사용하지 않습니다**.
---
## 공통 (C·B 모두 동일)
## 공통 (GT · Simulation · Operations)
```env
SYMBOL=WLD
CHART_LOOKBACK_DAYS=365
# 인과 sim · hybrid live sizing (필수)
# 10TF (주·월봉 포함)
GENERAL_ANALYSIS_INTERVALS=3,5,10,15,30,60,240,1440,10080,43200
TREND_INTERVALS=60,240,1440,10080,43200
# 인과 sim · live hybrid (필수)
GT_SIGNAL_CAUSAL=1
SIM_CAUSAL_TIER=1
SIM_PRIMARY_SIZING=auto
# hybrid DD (캘리브 결과 — 변경 시 04_hybrid_dd_calibrate 재실행)
# docs/04_matching/hybrid_dd_calibration.json 과 동기
# hybrid DD (hybrid_dd_calibration.json 과 동기)
CAUSAL_GT_DD_LARGE_PCT=5.0
CAUSAL_GT_DD_MEDIUM_PCT=2.0
# GT tier (sim·live hybrid)
GT_BUY_PCT_LARGE_LEG=1.0
GT_BUY_PCT_SMALL_LEG=0.05
GT_BUY_PCT_MEDIUM_LEG=0.25
GT_LARGE_LEG_TOP_PCT=0.2
GT_MIN_ORDER_KRW=5000
# 시뮬·GT·paper·live hybrid 배분 공통 초기 자금
GT_INITIAL_CASH_KRW=400000
# 원화 한도 비율 (초기 40만 기준, 100만 시대 대비 ×0.4)
# | 변수 | 비율 | 값 |
# | MONITOR_ALERT_KRW_AMOUNT, LIVE_ORDER_KRW | ×10% | 40,000 |
# | LIVE_DAILY_LOSS_LIMIT_KRW (Phase C) | ×5% | 20,000 |
# | LIVE_DAILY_KRW_MAX (Phase C) | ×10 | 4,000,000 |
# | LIVE_DAILY_KRW_MAX (B-1) | ×1 | 400,000 |
# monitor 규칙 (04 matched_rules — 코드에서 로드, env 변경 불필요)
MATCH_MONITOR_MAX_PER_SIDE=1
# conviction tier — 코드 기본 enhanced=False 유지, env로 켜지 않음
SIM_TIER_CONVICTION_DD_PCT=10.0
```
---
## Phase C — 알림만 (월~금, 주문 없음)
**적용 기간:** ~2026-06-05
**실행:** `python scripts/05_run_monitor.py`
## Operations (실거래)
```env
# === Phase C ===
LIVE_TRADING_ENABLED=0
# 05 알림 · 06 루프 — 3분봉 1주기(180초)
MONITOR_ALERT_COOLDOWN_MIN=3
MONITOR_ALERT_KRW_AMOUNT=40000
MONITOR_LOOP_SLEEP_SEC=180
# 06 dry-run (시뮬 정합: 일한도·거래횟수 무제한, 쿨다운=봉간격 3분)
# LIVE=0 + paper 모드 시 06은 _can_trade에서 LIVE 한도 검사 생략.
LIVE_ORDER_KRW=40000
LIVE_DAILY_KRW_MAX=4000000
LIVE_COOLDOWN_MIN=3
LIVE_MAX_TRADES_PER_DAY=999
LIVE_DAILY_LOSS_LIMIT_KRW=20000
LIVE_SLIPPAGE_PCT=0.05
LIVE_BUY_PCT_LARGE=1.0
LIVE_BUY_PCT_SMALL=0.05
```
| 항목 | Phase C 값 | 설명 |
|------|------------|------|
| `GT_INITIAL_CASH_KRW` | **400,000** | 시뮬·GT·paper·06 배분 시작 자금 |
| `MONITOR_ALERT_KRW_AMOUNT` | **40,000** | 초기 자금의 10% (알림 참고) |
| `LIVE_ORDER_KRW` | **40,000** | fallback·참고 (실매수는 hybrid 산출) |
| `LIVE_DAILY_KRW_MAX` | **4,000,000** | 초기×10 — Phase C hybrid 전액 매수 여유 |
| `LIVE_DAILY_LOSS_LIMIT_KRW` | **20,000** | 초기×5% — 일 손실 중단 |
| `LIVE_MAX_TRADES_PER_DAY` | 999 | 분할 매수·매도 횟수 제한 없음 |
| `LIVE_COOLDOWN_MIN` | **3** | 규칙별 최소 1봉(3분) — 시뮬 발화 간격과 동일 |
| `MONITOR_ALERT_COOLDOWN_MIN` | **3** | 동일 규칙 텔레그램도 1봉당 1회 수준 |
| `MONITOR_LOOP_SLEEP_SEC` | **180** | 06/05 루프 주기 = 3분 |
| `MATCH_LIVE_CACHE_SEC` | **180** | `live_eval` 캐시 ≤ 루프 주기 (06은 `force_refresh` 사용) |
### Phase C 확인 명령
```bash
python scripts/06_verify_live_dryrun.py
python scripts/05_run_monitor.py --once
python scripts/06_execute_live.py --once
```
---
## Phase B-1 — 소액 실거래 (토요일~)
**적용 시점:** 2026-06-06 (토) 00:00 이후 (금요일 C Go 후)
**실행:** `python scripts/06_execute_live.py`
```env
# === Phase B-1 ===
LIVE_TRADING_ENABLED=1
LIVE_ORDER_KRW=40000
@@ -111,71 +46,43 @@ LIVE_MAX_TRADES_PER_DAY=15
LIVE_COOLDOWN_MIN=3
LIVE_DAILY_LOSS_LIMIT_KRW=40000
LIVE_SLIPPAGE_PCT=0.05
LIVE_BUY_PCT_LARGE=1.0
LIVE_BUY_PCT_SMALL=0.05
MONITOR_ALERT_KRW_AMOUNT=40000
MONITOR_ALERT_COOLDOWN_MIN=3
MONITOR_LOOP_SLEEP_SEC=180
MATCH_LIVE_CACHE_SEC=180
```
| 항목 | 값 | 설명 |
| 변수 | 값 | 설명 |
|------|-----|------|
| 초기 자금 | ₩400,000 | 빗썸 가용 KRW (`GT_INITIAL_CASH_KRW`) |
| 일 매수 한도 | 400,000 | 초기 1배 — large tier 1회 |
| 일 손실 중단 | 40,000 | 초기 10% |
| 1회 참고 | ₩40,000 | 알림·fallback; **매수는 hybrid tier** |
| `GT_INITIAL_CASH_KRW` | 400,000 | 시뮬·운영 배분 기준 |
| `LIVE_DAILY_KRW_MAX` | 400,000 | 일 매수 한도 (large tier 1회와 정합) |
| `LIVE_DAILY_LOSS_LIMIT_KRW` | 40,000 | 일 손실 중단 |
### B-1 오픈 당일
### 기동 확인
```bash
python scripts/06_verify_live_dryrun.py
python scripts/06_verify_live.py
python scripts/check_balance.py
python scripts/06_execute_live.py --once
python scripts/06_execute_live.py
```
---
## Phase B-2 — sim hybrid 근접 (B-1 Go 후, 2~4주)
## 한도 상향 (검증 후만)
> +1,000% 경로. **리스크·MDD·슬리피지 감수 가능할 때만.**
```env
# === Phase B-2 ===
LIVE_TRADING_ENABLED=1
LIVE_ORDER_KRW=40000
LIVE_DAILY_KRW_MAX=2000000
LIVE_MAX_TRADES_PER_DAY=30
LIVE_COOLDOWN_MIN=3
LIVE_DAILY_LOSS_LIMIT_KRW=120000
LIVE_SLIPPAGE_PCT=0.05
LIVE_BUY_PCT_LARGE=1.0
LIVE_BUY_PCT_SMALL=0.05
```
| sim 대비 | B-1 | B-2 |
|----------|-----|-----|
| 일한도 | 40만 | 200만 |
| large tier 1회 ~100% | 종종 스킵 | 대부분 가능 |
| +1000% 가능성 | 낮음 | sim에 근접 (보장 없음) |
시뮬 hybrid에 근접하려면 `LIVE_DAILY_KRW_MAX` 등을 올릴 수 있으나 **MDD·슬리피지·실계좌 검증 후**에만 적용합니다.
---
## 절대 변경하지 말 것
```env
# conviction tier 배포 금지 — live_trader는 enhanced=False 고정
# GT_SIGNAL_CAUSAL=0 ← hybrid sizing 꺼짐, sim과 불일치
# SIM_PRIMARY_SIZING=causal_tier ← 구 +75% 경로
# LIVE_TRADING_ENABLED=0 → 06 기동 불가 (dry-run 제거됨)
# GT_SIGNAL_CAUSAL=0 → sim·live 불일치
# conviction tier 배포 금지 (enhanced=False 고정)
# 시뮬 sim_causal_hybrid 정합: fire_outcomes monitor 발화 부트스트랩
LIVE_HYBRID_BOOTSTRAP_FIRES=1
```
---
## Phase 전환 체크
| 전환 | 조건 | `.env` 변경 |
|------|------|-------------|
| C → B-1 | 금요일 C Go | `LIVE_TRADING_ENABLED=1`, B-1 한도 |
| B-1 → B-2 | 2~4주 검증 Go | `LIVE_DAILY_KRW_MAX` 등 B-2 값 |
상세: [DEPLOYMENT_CHECKLIST.md](./DEPLOYMENT_CHECKLIST.md)
체크리스트: [DEPLOYMENT_CHECKLIST.md](./DEPLOYMENT_CHECKLIST.md)