GT 총자산 비율 매수·leg 티어 배분과 시뮬/실거래 포지션 사이징을 통합한다.
타점·비중을 gt_model로 일반화하고, amount_krw 시각순 배분·EV/WF·상위 leg 대형 매수를 position_sizing과 시뮬 HTML(고정 ₩/회 비교)에 반영한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,12 +2,12 @@
|
||||
|
||||
## 목적
|
||||
|
||||
실거래(3단계) 전에 `monitor_rules`가 **과적합이 아닌지** 숫자로 검증합니다.
|
||||
`monitor_rules`가 과적합이 아닌지 검증하고, **Ground Truth와 동일한 자본 배분 원칙**으로 holdout 체결 수익을 비교합니다.
|
||||
|
||||
## 실행
|
||||
|
||||
```bash
|
||||
python scripts/04_match_rules.py # 선행: 04 전체 또는 select
|
||||
python scripts/04_match_rules.py # 선행
|
||||
python scripts/04_simulation_report.py
|
||||
```
|
||||
|
||||
@@ -15,26 +15,40 @@ python scripts/04_simulation_report.py
|
||||
|
||||
| 파일 | 내용 |
|
||||
|------|------|
|
||||
| `docs/04_matching/simulation_report.json` | walk-forward·민감도·Go/No-Go |
|
||||
| `docs/04_matching/simulation_report.html` | GT 동일 카드(초기 금액·총보유자산·증감율)·차트·타점·규칙 기준 |
|
||||
| `docs/04_matching/simulation_report.json` | Go/No-Go, `portfolio_compare`, `gt_model` |
|
||||
| `docs/04_matching/simulation_report.html` | 카드 3줄: **GT · 시뮬(총자산%) · 시뮬(고정₩/회)** |
|
||||
|
||||
## 포트폴리오 비교 (`portfolio_compare`)
|
||||
|
||||
| 키 | 설명 |
|
||||
|----|------|
|
||||
| `ground_truth_chrono` | GT 타점 + `amount_krw` 시각순 체결 |
|
||||
| `sim_sized` | holdout 발화 + **총자산×비중×EV/WF·leg상위** (`position_sizing`) |
|
||||
| `sim_fixed_order` | 동일 발화 + **고정 `LIVE_ORDER_KRW`/회** (baseline) |
|
||||
|
||||
## 시뮬 매수 배분 (GT와 동일 원칙)
|
||||
|
||||
- **통과 규칙만** 대형: holdout EV·PF, walk-forward, 수수료 2× 스트레스 (`load_ev_wf_approved_rule_ids`)
|
||||
- **leg 상위** `GT_LARGE_LEG_TOP_PCT` + 근접 GT leg 매칭 → `LIVE_BUY_PCT_LARGE`
|
||||
- 그 외 → `LIVE_BUY_PCT_SMALL`
|
||||
- 일한도·일최대거래: `select_capped_fires` (동적 planned 원화로 `LIVE_DAILY_KRW_MAX` 적용)
|
||||
|
||||
## 검증 항목
|
||||
|
||||
| 항목 | 설명 |
|
||||
|------|------|
|
||||
| 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` 내 체결 가능 비율 |
|
||||
| Holdout | EV≥0, PF≥1 |
|
||||
| Walk-forward | 양수 월 비율 ≥ `SIM_GO_WF_POSITIVE_RATIO` |
|
||||
| 수수료 스트레스 | 수수료 2× 후 EV≥0 |
|
||||
| 실거래 한도 | 동적 매수액 기준 일한도 시뮬 |
|
||||
|
||||
## Go/No-Go
|
||||
|
||||
- **GO**: `monitor_rules` 전 규칙이 checks 통과 → 2·3단계 진행 가능
|
||||
- **NO-GO**: 04 재선별·규칙 축소 후 재실행
|
||||
- **GO**: monitor_rules 전 규칙 checks 통과
|
||||
- **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)
|
||||
- `SIM_GO_*`, `SIM_WALK_FORWARD_MIN_MONTHS`, `SIM_FEE_STRESS_MULT`
|
||||
- `LIVE_ORDER_KRW`, `LIVE_DAILY_KRW_MAX` (고정 baseline·한도)
|
||||
- `LIVE_BUY_PCT_LARGE`, `LIVE_BUY_PCT_SMALL` (시뮬·실거래 비율 매수)
|
||||
|
||||
Reference in New Issue
Block a user