# 1단계 — 시뮬레이션 ## 목적 실거래(3단계) 전에 `monitor_rules`가 **과적합이 아닌지** 숫자로 검증합니다. ## 실행 ```bash python scripts/04_match_rules.py # 선행: 04 전체 또는 select python scripts/04_simulation_report.py ``` ## 산출물 | 파일 | 내용 | |------|------| | `docs/04_matching/simulation_report.json` | walk-forward·민감도·Go/No-Go | | `docs/04_matching/simulation_report.html` | GT 동일 카드(초기 금액·총보유자산·증감율)·차트·타점·규칙 기준 | ## 검증 항목 | 항목 | 설명 | |------|------| | Holdout | 최근 15% 구간 EV≥0, PF≥1 | | Walk-forward | 월별 EV, 양수 월 비율 ≥ `SIM_GO_WF_POSITIVE_RATIO` | | 수수료 스트레스 | 수수료 2배(`SIM_FEE_STRESS_MULT`) 후에도 EV≥0 | | 실거래 한도 가정 | `LIVE_ORDER_KRW`·`LIVE_DAILY_KRW_MAX` 내 체결 가능 비율 | ## Go/No-Go - **GO**: `monitor_rules` 전 규칙이 checks 통과 → 2·3단계 진행 가능 - **NO-GO**: 04 재선별·규칙 축소 후 재실행 ## 환경 변수 (`config.py` / `.env`) - `SIM_GO_MIN_HOLDOUT_EV`, `SIM_GO_MIN_HOLDOUT_PF` - `SIM_GO_WF_POSITIVE_RATIO` (기본 0.5) - `SIM_WALK_FORWARD_MIN_MONTHS` (기본 3) - `SIM_FEE_STRESS_MULT` (기본 2.0)