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:
@@ -1,42 +1,143 @@
|
||||
# 운영 가이드
|
||||
|
||||
## 로드맵과 현재 위치 (2026-06-01)
|
||||
|
||||
| 순서 | 단계 | 상태 |
|
||||
|------|------|------|
|
||||
| 1 | 시뮬레이션 | **완료** (GO) — [SIMULATION.md](SIMULATION.md) |
|
||||
| 2 | 문서화 | **본 문서군** — SIMULATION / LIVE / RISK / OPERATIONS |
|
||||
| 3 | 오픈 (실거래) | Phase C 후 B-1 — [LIVE_TRADING.md](LIVE_TRADING.md) |
|
||||
| 4 | 실계좌 검증 | 1~2주 |
|
||||
| 5 | 지속 운영 | 06 상시 + 월간 재시뮬 |
|
||||
|
||||
배포 모델: **hybrid primary** (= 시뮬 `sim_causal_hybrid`). 상세: [LIVE_TRADING.md](LIVE_TRADING.md)
|
||||
|
||||
---
|
||||
|
||||
## 단계별 스크립트
|
||||
|
||||
| 단계 | 스크립트 |
|
||||
|------|----------|
|
||||
| 데이터 | `01_download.py` |
|
||||
| GT | `02_ground_truth.py` |
|
||||
| 분석 | `03_analyze_enrich.py`, `03_analyze_trades.py` |
|
||||
| 매칭 | `04_match_rules.py` |
|
||||
| 시뮬 | `04_simulation_report.py` |
|
||||
| 알림 | `05_run_monitor.py` |
|
||||
| 실거래 | `06_execute_live.py` |
|
||||
| 단계 | 스크립트 | 산출·역할 |
|
||||
|------|----------|-----------|
|
||||
| 01 | `01_download.py` | `coins.db` (3~1440분, 1분 제외) |
|
||||
| (자동) | 05/06·`load_frames_from_db` | API 수집 시 `MONITOR_PERSIST_CANDLES=1`이면 **즉시 DB INSERT** |
|
||||
| 02 | `02_ground_truth.py` | GT JSON·차트 |
|
||||
| 03 | `03_analyze_enrich.py` | `docs/03_analysis/latest/` |
|
||||
| 03b | `03_analyze_trades.py` | GT MTF 스냅샷 CSV |
|
||||
| 03c | `03_gt_mtf_profile.py` | GT 프로필 (04 입력) |
|
||||
| 04 | `04_match_rules.py` | `matched_rules.json` |
|
||||
| 04 시뮬 | `04_simulation_report.py` | Go/No-Go 리포트 |
|
||||
| 05 | `05_run_monitor.py` | 알림 (주문 없음) |
|
||||
| 06 | `06_execute_live.py` | 알림+주문 (LIVE=1) |
|
||||
| 점검 | `06_verify_live_dryrun.py` | hybrid·한도·규칙 PASS |
|
||||
| 환경 | `verify_env.py` | `.env`·경로 검증 |
|
||||
|
||||
## 일상 운영 (5단계 이후)
|
||||
구조: [STRUCTURE.md](STRUCTURE.md)
|
||||
|
||||
1. `01_download.py` — 일 1회 권장
|
||||
2. `06_execute_live.py` — 상시 (`LIVE_TRADING_ENABLED=1`)
|
||||
3. 주간 — `04_simulation_report.py`로 EV·Go 재확인
|
||||
---
|
||||
|
||||
## Phase C — 지금~금요일 (dry-run, 주문 없음)
|
||||
|
||||
### `.env` 핵심
|
||||
|
||||
```env
|
||||
LIVE_TRADING_ENABLED=0
|
||||
GT_SIGNAL_CAUSAL=1
|
||||
SIM_PRIMARY_SIZING=auto
|
||||
MONITOR_LOOP_SLEEP_SEC=180
|
||||
MONITOR_ALERT_COOLDOWN_MIN=180
|
||||
```
|
||||
|
||||
전체: [env.recommended.md](../05_ops/env.recommended.md)
|
||||
|
||||
### 매일 루틴
|
||||
|
||||
| 순서 | 명령 | 빈도 |
|
||||
|------|------|------|
|
||||
| 1 | `python scripts/01_download.py` | 1일 1회 |
|
||||
| 2 | `python scripts/06_verify_live_dryrun.py` | 1일 1회 |
|
||||
| 3 | `python scripts/06_execute_live.py` | 상시 (`LIVE=0`, 발화→`paper_fires.jsonl`) |
|
||||
| 4 | 금요일 | `python scripts/07_phase_c_paper_report.py` (모의 forward % 참고) |
|
||||
|
||||
실계좌 수익률은 dry-run에서 나오지 않음. B-1 전 C Go 판정 후 `LIVE_TRADING_ENABLED=1`.
|
||||
|
||||
### 일별 기록
|
||||
|
||||
- 파일: `docs/05_ops/live_verification_20260601.md`
|
||||
- 금요일: [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md) §4.4 C Go/No-Go
|
||||
|
||||
---
|
||||
|
||||
## Phase B-1 — 실거래 시작 (C GO 이후)
|
||||
|
||||
1. [env.recommended.md](../05_ops/env.recommended.md) Phase B-1 블록 적용
|
||||
2. `LIVE_TRADING_ENABLED=1` 확인
|
||||
3. `06_verify_live_dryrun.py` → PASS
|
||||
4. `06_execute_live.py --once` → `live_trades.jsonl` 확인
|
||||
5. `06_execute_live.py` 상시
|
||||
|
||||
체크리스트: [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md) §5
|
||||
|
||||
---
|
||||
|
||||
## Phase B-2 이후 (검증 통과 시)
|
||||
|
||||
- `LIVE_DAILY_KRW_MAX` 등 한도 상향 (리스크 문서·본인 판단)
|
||||
- 주간 `04_simulation_report.py`로 EV·hybrid Go 재확인
|
||||
|
||||
---
|
||||
|
||||
## 텔레그램
|
||||
|
||||
- 05/06: 규칙 발화·**체결 결과** (06)
|
||||
- `MONITOR_ALERT_COOLDOWN_MIN` / `LIVE_COOLDOWN_MIN` 으로 중복 완화
|
||||
| 스크립트 | 내용 |
|
||||
|----------|------|
|
||||
| 05 | 규칙 발화·MTF 요약 (주문 없음) |
|
||||
| 06 | 발화 + 체결/dry-run 결과 (`LIVE=1` 시 체결) |
|
||||
|
||||
중복 완화: `MONITOR_ALERT_COOLDOWN_MIN`, `LIVE_COOLDOWN_MIN`
|
||||
|
||||
---
|
||||
|
||||
## 장애 대응
|
||||
|
||||
| 증상 | 조치 |
|
||||
|------|------|
|
||||
| 주문 실패 | 로그·빗썸 API 키·잔고 확인, `LIVE_TRADING_ENABLED=0` |
|
||||
| 알림만 오고 주문 없음 | `LIVE_TRADING_ENABLED` 확인 |
|
||||
| 과다 알림 | 쿨다운 증가·`monitor_rules` 축소 |
|
||||
| 주문 실패 | `live_trades.jsonl`, API 키·잔고 → `LIVE_TRADING_ENABLED=0` |
|
||||
| 알림만, 주문 없음 | C: 정상. B: `LIVE_TRADING_ENABLED` 확인 |
|
||||
| verify FAIL | `.env`, `matched_rules` 2개, `GT_SIGNAL_CAUSAL=1` |
|
||||
| hybrid 금액 0 | 현금·EV/WF·tier 스킵 로그 확인 |
|
||||
| 과다 알림 | 쿨다운 증가 |
|
||||
| 시뮬과 수익 괴리 | 일한도·슬리피지 — [RISK.md](RISK.md) |
|
||||
|
||||
## 오픈 체크리스트 (3단계 당일)
|
||||
---
|
||||
|
||||
- [ ] [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md) Phase C Go
|
||||
- [ ] [env.recommended.md](../05_ops/env.recommended.md) Phase B-1 적용
|
||||
- [ ] 시뮬 Go/No-Go **GO**
|
||||
- [ ] `.env` 한도 확인
|
||||
- [ ] `LIVE_TRADING_ENABLED=1` 의도적 설정
|
||||
- [ ] `--once` 1회 테스트
|
||||
- [ ] `live_trades.jsonl` 기록 확인
|
||||
## 데이터·산출물 경로
|
||||
|
||||
| 경로 | 용도 |
|
||||
|------|------|
|
||||
| `data/coins.db` 또는 루트 `coins.db` | OHLCV |
|
||||
| `data/ground_truth/ground_truth_trades.json` | GT |
|
||||
| `docs/04_matching/matched_rules.json` | 운영 규칙 |
|
||||
| `docs/04_matching/simulation_report.html` | 시뮬 리포트 |
|
||||
| `data/ops/live_trades.jsonl` | 06 로그 |
|
||||
|
||||
---
|
||||
|
||||
## 오픈 당일 체크리스트 (3단계)
|
||||
|
||||
- [ ] Phase C **GO**
|
||||
- [ ] 시뮬·hybrid Go/No-Go **GO**
|
||||
- [ ] Phase B-1 `.env`
|
||||
- [ ] `06_verify_live_dryrun.py` PASS
|
||||
- [ ] `LIVE_TRADING_ENABLED=1` 의도 확인
|
||||
- [ ] `--once` 후 `live_trades.jsonl`
|
||||
- [ ] [RISK.md](RISK.md) Kill switch 숙지
|
||||
|
||||
---
|
||||
|
||||
## 관련 문서
|
||||
|
||||
- [ROADMAP.md](ROADMAP.md)
|
||||
- [SIMULATION.md](SIMULATION.md)
|
||||
- [LIVE_TRADING.md](LIVE_TRADING.md)
|
||||
- [RISK.md](RISK.md)
|
||||
- [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md)
|
||||
|
||||
Reference in New Issue
Block a user