Phase C dry-run·문서화·DB 증분 저장 및 운영 env 동기화

- 1분봉 다운로드 제외, MONITOR_PERSIST로 05/06 수집 시 coins.db INSERT
- Phase C paper_fires 로그·07 모의 리포트, hybrid 시뮬 산출물·reference 문서 갱신
- .env Phase C(LIVE=0), bootstrap dotenv override=True

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-06-01 23:32:47 +09:00
parent 3cbfa40aab
commit b9ee241d14
19 changed files with 877 additions and 333 deletions

View File

@@ -1,48 +1,99 @@
# 3단계 — 오픈 (실거래)
# 2~3단계 — dry-run·실거래 (hybrid primary)
## 정의
## 운영 모델 (시뮬과 동일)
**실제 KRW가 빗썸 주문으로 나가는 단계**입니다. 05 텔레그램 알림만으로는 3단계가 아닙니다.
dry-run(Phase C)과 실거래(Phase B) 모두 **시뮬 `sim_primary` = `sim_causal_hybrid`** 와 같은 경로이다.
## 선행 조건
| 구분 | 내용 |
|------|------|
| 신호 | `matched_rules.json``monitor_rules` 2개 |
| 매수 규칙 | `buy_compound_tight` |
| 매도 규칙 | `sell_mtf_cross_all_tf` |
| 배분 | hybrid DD tier + past-leg, **`enhanced=False`** |
| 금지 | `sim_tier_enhanced` (conviction), GT oracle 타점 |
1. `python scripts/04_simulation_report.py`**Go/No-Go: GO**
2. [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md) — Phase C 완료 후 B-1
3. [env.recommended.md](../05_ops/env.recommended.md) — Phase별 `.env`
4. 본 문서·`RISK.md`·`OPERATIONS.md` 숙지
코드: `deepcoin/ops/live_trader.py` (`GT_SIGNAL_CAUSAL=1``plan_buy_amount_krw(..., enhanced=False)`)
## 실행
## Phase C — dry-run (주문 없음, 3단계 전)
**정의:** 빗썸 **시장가 주문 없음**. 신호·tier·알림·로그만 검증.
| 항목 | 설정 |
|------|------|
| `LIVE_TRADING_ENABLED` | **0** |
| 스크립트 | `05_run_monitor.py`, `06_verify_live_dryrun.py`, `06_execute_live.py --once` |
| 기간 | 배포 체크리스트 기준 ~Phase C 종료(금요일 Go/No-Go) |
```bash
# Phase A: hybrid tier·한도 점검 (주문 없음)
python scripts/06_verify_live_dryrun.py
# .env: LIVE_TRADING_ENABLED=0, GT_SIGNAL_CAUSAL=1, SIM_PRIMARY_SIZING=auto
python scripts/01_download.py # 1일 1회
python scripts/06_verify_live_dryrun.py # 설정·tier·규칙 점검
python scripts/05_run_monitor.py # 텔레그램 알림 (상시)
python scripts/06_execute_live.py --once # dry_run 로그만 (선택)
```
# 반드시 LIVE_TRADING_ENABLED=1 일 때만 주문
python scripts/06_execute_live.py --once # 1회 점검
python scripts/06_execute_live.py # 상시 (알림+주문)
- 06은 발화 시 `dry_run (LIVE_TRADING_ENABLED=0)` 만 기록, **API 매수·매도 호출 없음**
- 잔고 조회는 알림·tier 계산용으로 API를 쓸 수 있음
상세: [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md) §4 · [env.recommended.md](../05_ops/env.recommended.md) Phase C
## Phase B — 실거래 (3단계 오픈)
**정의:** 실제 KRW가 빗썸 주문으로 나간다. 05 알림만으로는 3단계가 아니다.
### 선행 조건
1. [SIMULATION.md](SIMULATION.md) — 시뮬 **GO** (완료)
2. Phase C **GO** (5일 모니터·verify·알림 안정)
3. [env.recommended.md](../05_ops/env.recommended.md) Phase B-1 `.env`
4. [RISK.md](RISK.md), [OPERATIONS.md](OPERATIONS.md) 숙지
### 실행
```bash
python scripts/06_verify_live_dryrun.py # B-1 당일 재확인
# LIVE_TRADING_ENABLED=1 확인 후
python scripts/06_execute_live.py --once
python scripts/06_execute_live.py # 상시
```
## 환경 변수
| 변수 | 기본 | 설명 |
|------|------|------|
| `LIVE_TRADING_ENABLED` | 0 | **1**일 때만 실주문 |
| `LIVE_ORDER_KRW` | 100000 | 1회 주문 금액(원) |
| `LIVE_DAILY_KRW_MAX` | 300000 | 일일 총 주문 한도 |
| `LIVE_COOLDOWN_MIN` | 180 | 동일 규칙 재주문 최소 간격(분) |
| `LIVE_MAX_TRADES_PER_DAY` | 10 | 일일 최대 체결 시도 |
| `LIVE_DAILY_LOSS_LIMIT_KRW` | 50000 | 일 손실 한도(추가 주문 중단) |
| 변수 | Phase C | Phase B-1 (예) | 설명 |
|------|---------|----------------|------|
| `LIVE_TRADING_ENABLED` | 0 | 1 | 1일 때만 실주문 |
| `GT_SIGNAL_CAUSAL` | 1 | 1 | hybrid sizing |
| `SIM_PRIMARY_SIZING` | auto | auto | primary=hybrid |
| `LIVE_ORDER_KRW` | 100000 | 100000 | 매도·비-hybrid fallback 참고 |
| `LIVE_DAILY_KRW_MAX` | 300000 | 1,000,000 | **sim 대비 체결 상한** |
| `LIVE_COOLDOWN_MIN` | 180 | 180 | 규칙별 재주문 간격 |
| `LIVE_MAX_TRADES_PER_DAY` | 10 | 10 | 일 최대 시도 |
| `LIVE_DAILY_LOSS_LIMIT_KRW` | 50000 | 50000 | 일 손실 한도 |
| `MONITOR_LOOP_SLEEP_SEC` | 180 | 180 | 05/06 루프 주기 |
| `MONITOR_ALERT_COOLDOWN_MIN` | 180 | 180 | 텔레그램 중복 방지 |
## 주문 규칙
Phase별 전체 블록: [env.recommended.md](../05_ops/env.recommended.md)
- `matched_rules.json`**`monitor_rules`** 만 사용 (매수·매도 각 1개)
- 매수: 시장가 매수 (`buyCoinMarket`)
- 매도: 보유 수량 기준 시장가 매도 (`sellCoinMarket`)
## 주문·배분 동작
- **매수:** EV/WF 통과 규칙만 hybrid tier 원화 산출 → `_can_trade` (일한도·쿨다운) → 시장가 매수
- **매도:** 보유 WLD 전량 기준 시장가 매도 (`LIVE_ORDER_KRW`는 매도 경로에서 수량 우선)
- **스킵:** 현금 부족, 일한도, hybrid planned > `LIVE_DAILY_KRW_MAX`, 미승인 규칙
## 로그
- `data/ops/live_trades.jsonl` — 주문 시도·결과
| 경로 | 내용 |
|------|------|
| `data/ops/live_trades.jsonl` | 06 주문·dry-run 시도 (JSONL) |
| `docs/05_ops/live_verification_*.md` | Phase C/B 일별 기록 |
## 4단계 연결
오픈 후 **1~2주** 실계좌 PnL·슬리피지·장애를 `docs/05_ops/live_verification_*.md`에 기록합니다.
오픈 후 **1~2주** 실계좌 PnL·슬리피지·장애를 verification 문서에 기록 → B-2 한도 검토.
## 관련 문서
- [SIMULATION.md](SIMULATION.md) — Go/No-Go·`sim_primary`
- [OPERATIONS.md](OPERATIONS.md) — 일상 루틴·장애
- [RISK.md](RISK.md) — Kill switch·한도