- 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>
113 lines
4.4 KiB
Markdown
113 lines
4.4 KiB
Markdown
# 1단계 — 시뮬레이션
|
||
|
||
**상태 (2026-06-01):** `04_simulation_report.py` 실행 완료 · 규칙·hybrid·Option C 2차 **GO**
|
||
|
||
## 목적
|
||
|
||
1. `monitor_rules`가 holdout·walk-forward·수수료 스트레스를 통과하는지 검증한다.
|
||
2. 운영에 쓸 **배분 경로(primary)** 를 정한다. (실전 = **hybrid**, GT oracle 아님)
|
||
|
||
## 실행
|
||
|
||
```bash
|
||
python scripts/04_match_rules.py # 선행
|
||
python scripts/04_simulation_report.py
|
||
```
|
||
|
||
## 산출물
|
||
|
||
| 파일 | 내용 |
|
||
|------|------|
|
||
| `docs/04_matching/simulation_report.json` | Go/No-Go, `portfolio_compare`, walk-forward |
|
||
| `docs/04_matching/simulation_report.html` | GT·시뮬 경로별 카드·차트 |
|
||
|
||
## 배포 모델 (primary)
|
||
|
||
| 경로 | `portfolio_compare` 키 | 전기간 PnL (최근 실행) | 운영 |
|
||
|------|------------------------|------------------------|------|
|
||
| GT oracle (사후 ZigZag) | `ground_truth_chrono` | +4,291% | **미사용** (미래 허용 벤치마크) |
|
||
| **권장 primary** | `sim_primary` = `sim_causal_hybrid` | **+1,147%** | **dry-run·live 배분** |
|
||
| causal tier only | `sim_sized` | +75% | 미사용 |
|
||
| 인과 GT leg 엔진 | `sim_causal_gt` | +15% | 미사용 |
|
||
| conviction tier | `sim_tier_enhanced` | -51% | **금지** |
|
||
| 고정 금액 baseline | `sim_fixed_order` | -94% | 비교용 |
|
||
|
||
- `primary_sizing`: **hybrid** (`go_no_go_hybrid.primary_sizing`)
|
||
- hybrid: monitor 발화 + **DD tier + past-leg tier**, `enhanced=False`
|
||
- 코드: `deepcoin/ground_truth/causal_gt_hybrid.py`, `deepcoin/matching/simulation.py`
|
||
|
||
## Go/No-Go (최근 실행 요약)
|
||
|
||
### 규칙 (`go_no_go`)
|
||
|
||
| rule_id | holdout EV | WF+ 비율 | fee 2× EV | 결과 |
|
||
|---------|------------|----------|-----------|------|
|
||
| `buy_compound_tight` | 5.66 | 0.75 | 4.99 | PASS |
|
||
| `sell_mtf_cross_all_tf` | 7.13 | 1.00 | 7.12 | PASS |
|
||
|
||
→ **GO**
|
||
|
||
### hybrid primary (`go_no_go_hybrid`)
|
||
|
||
| 검사 | 값 | 결과 |
|
||
|------|-----|------|
|
||
| monitor_rules_go | - | PASS |
|
||
| hybrid_holdout_pnl | +62.35% | PASS |
|
||
| hybrid_max_mdd | 19.22% | PASS |
|
||
| hybrid_fee_stress_pnl | +975.74% | PASS |
|
||
| option_c_target_300pct (optional) | +1,147% | PASS |
|
||
|
||
→ **GO** · `primary_sizing=hybrid`
|
||
|
||
### Option C 2차 (`go_no_go_option_c_phase2`)
|
||
|
||
- 전기간 +1,000% 목표, GT capture ≥23%, WF 양수 월 비율, 슬리피지 스트레스 등 → **GO**
|
||
|
||
재실행 후 수치는 `simulation_report.json`을 기준으로 한다.
|
||
|
||
## 포트폴리오 비교 (`portfolio_compare`) — 읽는 법
|
||
|
||
| 키 | 설명 |
|
||
|----|------|
|
||
| `ground_truth_chrono` | GT 타점·`amount_krw` 시각순 체결 (상한 벤치마크) |
|
||
| `sim_primary` / `sim_causal_hybrid` | **운영 배분과 동일** (monitor + hybrid tier) |
|
||
| `sim_sized` | EV/WF·leg 가중 복리 (구 경로) |
|
||
| `sim_hybrid_holdout` | hybrid 전기간 복리 후 **holdout 구간** 자산 증감 |
|
||
| `sim_hybrid_fee_stress` | 수수료 스트레스 hybrid |
|
||
| `hybrid_dd_params` | `dd_large_pct`, `dd_medium_pct` (캘리브 JSON과 동기) |
|
||
|
||
## 검증 항목
|
||
|
||
| 항목 | 설명 |
|
||
|------|------|
|
||
| Holdout | 규칙별 EV≥0, PF≥1 |
|
||
| Walk-forward | 월별 EV·`SIM_GO_WF_POSITIVE_RATIO` |
|
||
| 수수료 스트레스 | `SIM_FEE_STRESS_MULT` (기본 2×) |
|
||
| hybrid | holdout PnL, MDD, fee stress, (선택) +300% |
|
||
| 슬리피지 | Option C 2차 — 체결가 불리 가정 후 흑자 여부 |
|
||
|
||
## 시뮬 vs 실운영 (기대 갭)
|
||
|
||
시뮬 hybrid는 **일한도 없이** 복리·전액 배분을 가정한다. 실거래는 `LIVE_DAILY_KRW_MAX` 등으로 체결이 잘리므로 **수익률이 sim_primary와 같지 않을 수 있다**. (배포 체크리스트 D6: 실현=sim 미달)
|
||
|
||
## 환경 변수
|
||
|
||
| 변수 | 용도 |
|
||
|------|------|
|
||
| `SIM_GO_*`, `SIM_FEE_STRESS_MULT`, `SIM_WALK_FORWARD_MIN_MONTHS` | 규칙 Go/No-Go |
|
||
| `SIM_PRIMARY_SIZING` | `auto` \| `hybrid` \| `causal_tier` (권장: **auto** → hybrid) |
|
||
| `GT_SIGNAL_CAUSAL` | 1 — hybrid live sizing 활성 |
|
||
| `CAUSAL_GT_DD_LARGE_PCT`, `CAUSAL_GT_DD_MEDIUM_PCT` | hybrid tier (캘리브와 동기) |
|
||
| `GT_BUY_PCT_*`, `GT_LARGE_LEG_TOP_PCT` | tier 비중 |
|
||
|
||
## NO-GO 시
|
||
|
||
1. `04_match_rules.py` 재실행 (프로필·선별)
|
||
2. `04_simulation_report.py` 재실행
|
||
3. `go_no_go` / `go_no_go_hybrid` checks 확인
|
||
|
||
## 다음 단계
|
||
|
||
- **2단계 문서화:** 본 문서 + [LIVE_TRADING.md](LIVE_TRADING.md), [RISK.md](RISK.md), [OPERATIONS.md](OPERATIONS.md)
|
||
- **3단계 이전:** [DEPLOYMENT_CHECKLIST.md](../05_ops/DEPLOYMENT_CHECKLIST.md) Phase C (dry-run)
|