feat(spot): 2단계 인과 기법 분석 파이프라인 마무리
common/spot/futures 경로 정비, 캔들 데이터 모듈 복원, MTF 규칙 자동 저장 및 2단계 설계·최종 정리 문서를 반영해 3단계 착수 기반을 확정한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
315
docs/spot/2_analysis/stage2_design_guide.md
Normal file
315
docs/spot/2_analysis/stage2_design_guide.md
Normal file
@@ -0,0 +1,315 @@
|
||||
# 현물 2단계 설계 가이드
|
||||
|
||||
> DeepCoin 현물 파이프라인 2단계(인과 기법 분석)의 목적, 구조, 설계 근거를 정리한 문서입니다.
|
||||
> 작성 기준: 2026-06-12 · 기본 TF: 3분봉 · GT: v3
|
||||
|
||||
---
|
||||
|
||||
## Plan (계획)
|
||||
|
||||
### 목적
|
||||
|
||||
현물 2단계는 **0단계 Ground Truth(GT) 타점을 인과적으로 재현할 수 있는 매매 기법을 검증·순위화**하고, 3단계 실거래(`composite_v3` + MTF 필터)에 넘길 전략을 확정하는 단계입니다.
|
||||
|
||||
| 단계 | 핵심 질문 | 미래 데이터 |
|
||||
|------|-----------|-------------|
|
||||
| 0단계 | 10년 3분봉에서 이론상 최적 매수/매도는 어디였나? | 사용 (사후 분석, 실거래 불가) |
|
||||
| 1단계 | GT를 완벽히 따라가면 수익 상한은? | GT 자체가 사후 타점 |
|
||||
| **2단계** | **과거 데이터만으로 GT 타점을 얼마나 맞출 수 있나?** | **미사용 (인과)** |
|
||||
| 3단계 (예정) | 검증된 전략을 실거래에 연결 | 실시간 인과 |
|
||||
|
||||
### GT v3 신호 유형 (정답지)
|
||||
|
||||
0단계 GT v3는 3분봉 `bar_index` 기준으로 아래 6종 신호를 포함합니다.
|
||||
|
||||
| 코드 | 유형 | 의미 |
|
||||
|------|------|------|
|
||||
| B | swing_low | 스윙 매수 |
|
||||
| B* | pullback | 눌림목 매수 |
|
||||
| B^ | breakout | 돌파 매수 |
|
||||
| Bd | div_bull | 상승 다이버전스 매수 |
|
||||
| S | swing_high | 스윙 매도 |
|
||||
| Sd | div_bear | 하락 다이버전스 매도 |
|
||||
|
||||
### 설계 원칙: 3분 = 타이밍, 상위 TF = 맥락
|
||||
|
||||
2단계는 **두 레이어**로 나뉩니다.
|
||||
|
||||
| 레이어 | 타임프레임 | 역할 |
|
||||
|--------|------------|------|
|
||||
| **기법 (2-1 ~ 2-3)** | 3분봉 | **언제** 사고팔지 — GT 타점 재현 |
|
||||
| **MTF (2-4, 3단계)** | 1분 ~ 월봉 | **그때 해도 되는지** — 과매수·추세·변동성 보조 |
|
||||
|
||||
3분봉만 사용하는 것은 상위 TF를 무시한다는 뜻이 **아닙니다**. GT 정답지가 3분봉에 정의되어 있으므로 기법 평가는 동일 TF에서 수행하고, 일/주/월봉 맥락은 MTF 레이어에서 붙입니다.
|
||||
|
||||
### 2단계가 하지 **않는** 것
|
||||
|
||||
아래는 2단계의 목적과 맞지 않거나, 별도 설계가 필요한 접근입니다.
|
||||
|
||||
- 39개 기법을 1분 ~ 월봉 **모든 TF**에 각각 실행
|
||||
- **모든 봉**에 시장 상태 라벨을 붙여 매수/매도를 처음부터 탐색
|
||||
- GT 없이 상태 분류만으로 전략을 발견
|
||||
|
||||
---
|
||||
|
||||
## Do (실행)
|
||||
|
||||
### 파이프라인 실행
|
||||
|
||||
```bash
|
||||
cd DeepCoin
|
||||
export PYTHONPATH=src
|
||||
bash scripts/2_run_stage2_all.sh
|
||||
```
|
||||
|
||||
### 4단계 세부
|
||||
|
||||
| 순서 | 스크립트 | 입력 | 산출물 |
|
||||
|------|----------|------|--------|
|
||||
| 2-1 | `2_run_techniques.py` | 3분봉 3650일, GT v3 | `data/spot/techniques/*.json`, `comparison_report.html` |
|
||||
| 2-2 | `2_run_causal_sim.py` | 2-1 결과 | `causal_sim_report.html`, 기법별 sim 차트 |
|
||||
| 2-3 | `2_run_signal_type_align.py` | 2-1 결과 (캐시) | `signal_type_report.html` |
|
||||
| 2-4 | `2_run_mtf_analysis.py` | GT v3, 1분~월봉 피처 | `mtf_correlation_report.html`, `data/spot/mtf/mtf_rules_v3.json` |
|
||||
|
||||
### 2-1. 기법 실행
|
||||
|
||||
**처리 흐름**
|
||||
|
||||
1. `coins.db`에서 BTC **3분봉** 3650일 로드 (`GT_INTERVAL_MIN=3`)
|
||||
2. 등록된 **39개 인과 기법** 각각 `generate_signals()` 실행
|
||||
3. 조건 충족 봉에서만 `buy` / `sell` **이벤트** 생성 (모든 봉에 상태 라벨 X)
|
||||
4. 신호를 매수·매도 **레그(leg)** 로 묶고 수익률 계산
|
||||
5. GT v3 타점과 **정합(alignment)** 평가 — 기본 허용 오차 ±480봉 (약 24시간)
|
||||
|
||||
**정합 지표**
|
||||
|
||||
- recall, precision, F1
|
||||
- leg recall (매수·매도 쌍 단위)
|
||||
- 종합 **score** (터미널 `score=91.1` 등)
|
||||
|
||||
**39개 기법 구성**
|
||||
|
||||
- 단일 기법 33종: 스윙, 눌림목, 돌파, 다이버전스, 지표, 추세, 모멘텀, 변동성, 구조, 거래량
|
||||
- 복합 기법 6종: `composite_swing`, `composite_pullback`, `composite_breakout`, `composite_divergence`, **`composite_v3`**, `composite_full`
|
||||
|
||||
`composite_v3`는 v3 GT 6종 신호를 가중 투표로 재현하는 **3단계 실거래 후보 전략**입니다.
|
||||
|
||||
### 2-2. 인과 sim
|
||||
|
||||
- 2-1에서 저장한 기법 신호를 **최근 3년** (`GT_SIM_LOOKBACK_DAYS=1095`) 구간으로 sim
|
||||
- 1단계 GT sim(정답지 수익 상한)과 비교
|
||||
- 기법별 HTML sim 차트 생성
|
||||
|
||||
### 2-3. 신호 유형별 정합
|
||||
|
||||
- GT v3의 B / B* / B^ / Bd / S / Sd **유형별 recall** 분석
|
||||
- 예: `ema_pullback`은 B*(눌림목)에 강한가, `rsi_divergence`는 Bd/Sd에 강한가
|
||||
- 유형별 최고 recall 기법 리포트
|
||||
|
||||
### 2-4. MTF 상관 분석
|
||||
|
||||
39기법을 TF마다 다시 돌리지 **않습니다**. 대신:
|
||||
|
||||
1. GT v3 **매수/매도 시점**(양성 샘플)에서 1분 ~ 월봉 피처 스냅샷 추출
|
||||
2. GT가 아닌 **랜덤 3분봉 시점**(음성 샘플, 기본 2000건)에서 동일 추출
|
||||
3. 양성 vs 음성 피처 차이(Cohen's d) 분석
|
||||
4. 신호 유형별 MTF **필터 규칙** 도출 → `mtf_rules_v3.json`
|
||||
|
||||
**사용 TF** (`DEFAULT_DOWNLOAD_INTERVALS`)
|
||||
|
||||
1, 3, 5, 10, 15, 30, 60, 240분, 일(1440), 주(10080), 월(43200)
|
||||
|
||||
**TF별 피처** (`src/deepcoin/mtf/features.py`)
|
||||
|
||||
| 피처 | 용도 |
|
||||
|------|------|
|
||||
| `rsi14` | 과매수 / 과매도 |
|
||||
| `bb_position` | 볼린저 밴드 내 위치 |
|
||||
| `close_vs_ema60_pct` | EMA60 대비 이격 (추세·과열) |
|
||||
| `ema60_slope_5_pct` | EMA60 기울기 |
|
||||
| `trend_bias` | bullish / bearish |
|
||||
| `atr_pct` | 변동성 |
|
||||
| `zigzag_direction`, `zigzag_leg_pct` | 인과 ZigZag 상태 |
|
||||
|
||||
모든 피처는 **인과적** — 해당 시점에 확정된 봉만 사용, 미래 데이터·미완성 상위 TF 봉 미사용.
|
||||
|
||||
### 3단계 연동 (예정)
|
||||
|
||||
```
|
||||
3분 composite_v3 신호 발생
|
||||
→ MtfFeatureExtractor: 그 시점 1분~월봉 스냅샷
|
||||
→ HtfTrendGate: 60분·일봉 EMA 이격으로 극단 구간 차단
|
||||
→ MtfSignalFilter: 신호 유형별 MTF 규칙 N개 이상 충족
|
||||
→ 통과 신호만 실거래
|
||||
```
|
||||
|
||||
**고TF 추세 게이트** (`HtfTrendGate`) 기본값
|
||||
|
||||
| 조건 | 동작 |
|
||||
|------|------|
|
||||
| 일봉 EMA60 대비 -25% 이하 | 매수 차단 (과매도·칼날) |
|
||||
| 60분 EMA60 대비 -15% 이하 | 매수 차단 |
|
||||
| 일봉 EMA60 대비 +35% 이상 | 매도 차단 (과열) |
|
||||
| 60분 EMA60 대비 +20% 이상 | 매도 차단 |
|
||||
|
||||
### 데이터 흐름
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
GT["0단계 GT v3\n(3분봉 정답 타점)"]
|
||||
Candles["3분봉 3650일\n(coins.db)"]
|
||||
|
||||
subgraph step21 ["2-1 기법 실행"]
|
||||
T["39개 인과 기법"]
|
||||
T --> Sig["매수/매도 신호"]
|
||||
Sig --> Align["GT 정합 score"]
|
||||
end
|
||||
|
||||
subgraph step22 ["2-2 sim"]
|
||||
Sim["최근 3년 수익률"]
|
||||
end
|
||||
|
||||
subgraph step23 ["2-3 신호유형"]
|
||||
Type["B/B*/B^/Bd/S/Sd별 recall"]
|
||||
end
|
||||
|
||||
subgraph step24 ["2-4 MTF"]
|
||||
MTF["1분~월봉 피처"]
|
||||
MTF --> Rules["mtf_rules_v3.json"]
|
||||
end
|
||||
|
||||
subgraph step3 ["3단계 (예정)"]
|
||||
Filter["composite_v3 + MtfSignalFilter"]
|
||||
end
|
||||
|
||||
GT --> Align
|
||||
Candles --> step21
|
||||
Align --> step22
|
||||
Align --> step23
|
||||
GT --> step24
|
||||
MTF --> Rules
|
||||
Rules --> Filter
|
||||
Sig --> Filter
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Check (검토)
|
||||
|
||||
### 접근 방식 비교
|
||||
|
||||
#### A. 현재 방식 (채택)
|
||||
|
||||
3분봉 × 39기법 GT 정합 + 4단계 MTF 상관 분석
|
||||
|
||||
#### B. 대안: 모든 기법 × 모든 TF × 모든 봉 상태
|
||||
|
||||
| 구분 | A: 현재 2단계 | B: 전 TF·전 봉 상태 | C: 절충 (선택 실험) |
|
||||
|------|---------------|---------------------|---------------------|
|
||||
| **품질 (Q)** | GT와 동일 TF·bar_index로 평가 **명확** | TF마다 신호 의미 상이, **평가 기준 혼란** | 핵심 기법만 상위 TF 추가 검증 |
|
||||
| **비용 (C)** | 39기법 × 1 TF ≈ 1~2시간 | 39 × 11 TF ≈ 10~20시간+, 봉별 상태 저장 부담 큼 | +2~3 TF 시 +30~50% |
|
||||
| **일정 (D)** | 파이프라인·3단계 **구현 완료** | 정합·스키마·리포트 **전면 재설계** | 기존 유지 + 실험 브랜치 |
|
||||
| **리스크 (R)** | 단일 TF 편향 (MTF로 보완) | 차원 폭발 → **과적합** | 실험 범위 제한으로 통제 |
|
||||
| **장점 (S)** | 인과·실거래·GT 정합 **일관** | TF별 탐색적 발견 | A 명확성 + B 인사이트 일부 |
|
||||
| **단점 (W)** | 2-1 단독으론 상위 TF 안 보임 | GT(3분)와 **축 불일치** | 실험 설계 부담 |
|
||||
| **비고** | **현 단계 최적** | 2단계 **대체안 부적합** | 장기 개선 1순위 |
|
||||
|
||||
**결론: A(현재 방식) 유지. 필요 시 C로 확장.**
|
||||
|
||||
### 3분봉만으로 상위 TF 과매수/과매도 판단이 어렵지 않은가?
|
||||
|
||||
**맞습니다.** 3분봉 신호만 따르면:
|
||||
|
||||
- 일봉 RSI 과매수 구간 3분 눌림목 매수 → 역추세 진입
|
||||
- 주봉 하락 추세 3분 돌파 매수 → 가짜 돌파
|
||||
- 월봉 과매도 3분 매도 → 바닥 청산
|
||||
|
||||
등의 문제가 발생합니다. DeepCoin은 이를 **MTF 레이어**로 보완합니다.
|
||||
|
||||
| 상황 | MTF 해석 | 의도 |
|
||||
|------|----------|------|
|
||||
| 3분 B* + 주봉 RSI 과매도 + 일봉 trend bullish | MTF 규칙 다수 충족 | 적극 매수 (3단계 확장) |
|
||||
| 3분 B* + 일봉 RSI 과매수 | 게이트/규칙 미충족 | 보류 |
|
||||
| 3분 S + 월봉 과열 + 60분 기울기 꺾임 | 매도 규칙 충족 | 적극 매도 (3단계 확장) |
|
||||
|
||||
현재 구현은 **차단(필터)** 중심이며, MTF 점수 기반 **포지션 크기 조절**은 3단계에서 확장 가능합니다.
|
||||
|
||||
### KPI · 확인 방법
|
||||
|
||||
| KPI | 확인 위치 | 기준 예시 |
|
||||
|-----|-----------|-----------|
|
||||
| GT 정합 score | `comparison_report.html` | composite_v3 상위권 |
|
||||
| leg recall | `data/spot/techniques/*.json` | 70% 이상 (기법별 상이) |
|
||||
| sim 수익률 (3년) | `causal_sim_report.html` | 1단계 GT sim 대비 합리적 |
|
||||
| 신호 유형 recall | `signal_type_report.html` | B/B*/B^/Bd/S/Sd 유형별 1위 기법 |
|
||||
| MTF Cohen's d | `mtf_correlation_report.html` | \|d\| ≥ 1.2 규칙 후보 |
|
||||
| MTF 규칙 통과율 | 3단계 `MtfSignalFilter` | kept/rejected 비율 |
|
||||
|
||||
### 주요 환경 변수
|
||||
|
||||
| 변수 | 설명 | 기본값 |
|
||||
|------|------|--------|
|
||||
| `GT_INTERVAL_MIN` | GT·기법 기준 인터벌(분) | `3` |
|
||||
| `GT_LOOKBACK_DAYS` | GT·기법 기간(일) | `3650` |
|
||||
| `GT_SIM_LOOKBACK_DAYS` | sim·MTF 분석 구간(일) | `1095` |
|
||||
| `GT_ALIGN_TOLERANCE_BARS` | GT 정합 허용 봉 수 | `480` |
|
||||
| `TECHNIQUES_DIR` | 기법 결과 JSON | `data/spot/techniques/` |
|
||||
| `MTF_RULES_JSON` | MTF 규칙 | `data/spot/mtf/mtf_rules_v3.json` |
|
||||
|
||||
---
|
||||
|
||||
## Act (개선)
|
||||
|
||||
### 현재 한계
|
||||
|
||||
| 항목 | 상태 | 비고 |
|
||||
|------|------|------|
|
||||
| 2-1 ~ 2-3 | MTF 미적용 | 의도적 — GT 정합 단계 |
|
||||
| `HtfTrendGate` | 60분·일봉만 | 주·월봉 RSI/BB 게이트 추가 가능 |
|
||||
| MTF 필터 | 통과/실패 이진 | 점수 기반 사이즈 조절 (3단계) |
|
||||
| 2-4 → rules JSON | `derive_rules_from_report()` 존재 | 2-4 스크립트 자동 저장 연동 검토 |
|
||||
|
||||
### 권장 개선 (절충 C)
|
||||
|
||||
2단계 골격은 유지하고, 아래만 **별도 실험**으로 진행합니다.
|
||||
|
||||
1. **TF별 핵심 기법**: 스윙 5종 + `composite_v3`를 60분·일봉에 추가 실행 — 상위 TF 스윙과 3분 GT 정합 비교
|
||||
2. **MTF 4단계 강화**: 음성 샘플 수, 피처, `min_cohens_d` 조정
|
||||
3. **주·월봉 게이트**: `HtfTrendGate`에 RSI/BB 기반 조건 추가
|
||||
4. **레짐 라벨 모듈**: EMA/ADX 등 봉별 장세 라벨 — 39기법 전 TF 재실행 없이 보조
|
||||
|
||||
### 하지 말아야 할 것
|
||||
|
||||
- 39기법 × 11 TF × 175만 3분봉 상태를 2단계 **기본 산출물**로 포함
|
||||
- GT(3분)와 다른 TF 신호를 **동일 tolerance**로 무조건 비교
|
||||
|
||||
### 실행 체크리스트
|
||||
|
||||
- [ ] 0단계 GT v3 생성 완료 (`0_ground_truth.py --tier all`)
|
||||
- [ ] 1단계 GT sim 완료 (벤치마크 참조용)
|
||||
- [ ] `bash scripts/2_run_stage2_all.sh` 완료
|
||||
- [ ] `comparison_report.html` — 기법 순위 확인
|
||||
- [ ] `signal_type_report.html` — 유형별 강점 기법 확인
|
||||
- [ ] `mtf_correlation_report.html` — 일/주/월 RSI·EMA 패턴 확인
|
||||
- [x] `mtf_rules_v3.json` — 3단계 필터 규칙 반영 (`data/spot/mtf/mtf_rules_v3.json`)
|
||||
|
||||
---
|
||||
|
||||
## 참고: 관련 소스
|
||||
|
||||
| 모듈 | 경로 |
|
||||
|------|------|
|
||||
| 기법 실행 | `scripts/2_run_techniques.py`, `src/deepcoin/techniques/runner.py` |
|
||||
| GT 정합 | `src/deepcoin/evaluation/gt_align.py` |
|
||||
| MTF 피처 | `src/deepcoin/mtf/features.py`, `extractor.py`, `store.py` |
|
||||
| MTF 규칙 | `src/deepcoin/mtf/rules.py` |
|
||||
| MTF 필터 | `src/deepcoin/mtf/filter.py`, `trend_gate.py` |
|
||||
| 통합 기법 | `src/deepcoin/techniques/composite_v3.py` |
|
||||
|
||||
---
|
||||
|
||||
## 변경 이력
|
||||
|
||||
| 날짜 | 내용 |
|
||||
|------|------|
|
||||
| 2026-06-12 | 초版 작성 — 2단계 목적, 4단계 구조, MTF 보완, 접근 방식 비교 정리 |
|
||||
290
docs/spot/2_analysis/stage2_final_summary.md
Normal file
290
docs/spot/2_analysis/stage2_final_summary.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# 현물 2단계 최종 정리 — 결과 해석 및 운영 권고
|
||||
|
||||
> DeepCoin 현물 파이프라인 2단계(인과 기법 분석) 완료 후 종합 정리 문서
|
||||
> 작성 기준: 2026-06-12 · 데이터: BTC · 3분봉 · GT v3 · 분석 기간 3650일 · sim 기간 최근 3년(1095일)
|
||||
|
||||
---
|
||||
|
||||
## 요약 (Executive Summary)
|
||||
|
||||
| 질문 | 결론 |
|
||||
|------|------|
|
||||
| **sim 1위 `fractal_swing`을 바로 실거래에 써도 되나?** | **아니요.** 연구·벤치마크용으로는 유효하나, 체결 빈도·비용·슬리피지를 고려하면 실거래 부적합 |
|
||||
| **2단계에서 무엇을 얻었나?** | GT v3 타점을 **인과적으로** 재현하는 기법 39종의 **정합 순위**, **3년 sim 비교**, **신호 유형별 강점**, **MTF 상관 패턴** |
|
||||
| **운영 후보는?** | 원안 **`composite_v3` + MTF 필터(3단계)** — 단, 현재 sim 기준 composite_v3는 **-97.5%**로 **3단계 튜닝 전 실거래 금지** |
|
||||
| **당장 관찰용으로 쓸 만한 기법** | `zigzag_causal`(3년 sim +92,711%, 체결 97회), `minor_swing`(+286,537%, 831회) — **모의·소액 검증 후** 판단 |
|
||||
|
||||
---
|
||||
|
||||
## Plan (계획) — 2단계가 무엇을 했는가
|
||||
|
||||
### 목적
|
||||
|
||||
0단계에서 도출한 **Ground Truth v3(사후 최적 타점)** 을, **미래 데이터 없이** 인과 규칙만으로 얼마나 재현할 수 있는지 검증하고, 3단계 실거래 전략의 근거를 마련하는 단계입니다.
|
||||
|
||||
| 단계 | 역할 | 미래 데이터 |
|
||||
|------|------|-------------|
|
||||
| 0단계 | 10년 3분봉 이론적 최적 매수/매도(GT v3) | 사용 (연구용) |
|
||||
| 1단계 | GT 타점을 그대로 sim했을 때 3년 수익 **벤치마크** | GT 자체가 사후 타점 |
|
||||
| **2단계** | **39개 인과 기법**으로 GT 재현도·sim·MTF 분석 | **미사용** |
|
||||
| 3단계 (예정) | 검증된 전략 + MTF 필터 실거래 연결 | 실시간 인과 |
|
||||
|
||||
### GT v3 신호 체계 (정답지)
|
||||
|
||||
| 코드 | 유형 | 10년 GT 건수(매수/매도) |
|
||||
|------|------|-------------------------|
|
||||
| B | swing_low (스윙 매수) | 944 |
|
||||
| B* | pullback (눌림목) | 406 |
|
||||
| B^ | breakout (돌파) | 122 |
|
||||
| Bd | div_bull (상승 다이버전스) | 115 |
|
||||
| S | swing_high (스윙 매도) | 944 |
|
||||
| Sd | div_bear (하락 다이버전스) | 144 |
|
||||
|
||||
### 실행 구조 (2-1 ~ 2-4)
|
||||
|
||||
| 순서 | 내용 | 주요 산출물 |
|
||||
|------|------|-------------|
|
||||
| 2-1 | 39개 기법 신호 생성 + GT 정합 score | `data/spot/techniques/*.json`, `comparison_report.html` |
|
||||
| 2-2 | 동일 sim 엔진으로 최근 3년 수익률 비교 | `causal_sim_report.html`, `causal_sim_chart_best_technique.html` |
|
||||
| 2-3 | B/B*/B^/Bd/S/Sd 유형별 recall | `signal_type_report.html` |
|
||||
| 2-4 | GT 시점 vs 랜덤 시점 MTF 피처 상관 | `mtf_correlation_report.html` |
|
||||
|
||||
설계 상세는 [`stage2_design_guide.md`](stage2_design_guide.md)를 참고하세요.
|
||||
|
||||
---
|
||||
|
||||
## Do (실행) — 핵심 결과
|
||||
|
||||
### 1. GT 정합 score 상위 (2-1, 10년 전체)
|
||||
|
||||
정합 허용 오차: **±480봉(약 24시간)**. score는 recall·precision·leg recall 등을 종합한 0~1 지표입니다.
|
||||
|
||||
| 순위 | 기법 | score | buy/sell recall | leg recall | 비고 |
|
||||
|------|------|-------|-----------------|------------|------|
|
||||
| 1 | **fractal_swing** | **0.914** | 100% / 100% | 75.3% | 프랙탈(span=2) 극저점·극고점 |
|
||||
| 2 | **pivot_swing** | **0.911** | 100% / 100% | 74.6% | 피벗 기반 스윙 |
|
||||
| 3 | **minor_swing** | **0.864** | 87.9% / 95.0% | 73.2% | 소형 스윙 하이브리드 |
|
||||
| 4 | local_extrema | 0.839 | 86.3% / 90.7% | 70.6% | 국소 극값 |
|
||||
| 5 | **zigzag_causal** | **0.776** | 59.9% / 86.8% | 74.2% | 인과 ZigZag — **스윙(B/S)에 특화** |
|
||||
| … | composite_v3 | 0.546 | 97.5% / 89.0% | **22.9%** | 3단계 운영 후보이나 leg 정합 낮음 |
|
||||
|
||||
**해석:** 상위 3종은 모두 **스윙 타이밍** 기법입니다. `composite_v3`는 개별 신호 recall은 높지만 **매수·매도 쌍(leg) 정합이 22.9%**에 그쳐, “타점은 근처에 있으나 한 사이클로 묶기 어렵다”는 특성이 있습니다.
|
||||
|
||||
### 2. 3년 인과 sim (2-2) — 1단계 GT v3 벤치마크 대비
|
||||
|
||||
- **sim 기간:** 2023-06-12 ~ 2026-06-11 (1095일)
|
||||
- **초기 자본:** 200,000원
|
||||
- **엔진:** 1단계와 동일 `simulate_gt_signals_pnl` (클러스터 분할, 매수 상한, 수수료 반영, 슬리피지 미반영)
|
||||
|
||||
#### 1단계 벤치마크
|
||||
|
||||
| 항목 | 1단계 GT v3 sim |
|
||||
|------|-----------------|
|
||||
| 3년 수익률 | **+94,154%** |
|
||||
| 최종 평가 | 약 1.89억 원 |
|
||||
| 체결 | 매수 239 / 매도 151 |
|
||||
| 기간 내 신호 | 390건 |
|
||||
|
||||
#### 2단계 sim 상위
|
||||
|
||||
| 순위 | 기법 | 3년 sim 수익률 | 최종 평가 | 매수/매도 체결 | GT 정합 |
|
||||
|------|------|----------------|-----------|----------------|---------|
|
||||
| 1 | fractal_swing | **+7,560,826%** | 약 151억 | **56,893 / 56,892** | 0.914 |
|
||||
| 2 | pivot_swing | +4,687,495% | 약 94억 | 12,656 / 12,658 | 0.911 |
|
||||
| 3 | minor_swing | +286,537% | 약 5.7억 | 831 / 887 | 0.864 |
|
||||
| 4 | keltner_reversal | +203,632% | 약 4.1억 | 26,554 / 24,839 | 0.723 |
|
||||
| … | **zigzag_causal** | **+92,711%** | 약 1.86억 | **97 / 97** | 0.776 |
|
||||
| … | **composite_v3** | **-97.5%** | 약 5,000원 | 1,885 / 1,237 (스킵 다수) | 0.546 |
|
||||
|
||||
**일평균 체결 빈도(매수 기준, 3년):**
|
||||
|
||||
| 기법 | 연간 약 | 일평균 약 |
|
||||
|------|---------|-----------|
|
||||
| fractal_swing | 18,964회 | **52회/일** |
|
||||
| pivot_swing | 4,219회 | 12회/일 |
|
||||
| minor_swing | 277회 | 0.8회/일 |
|
||||
| zigzag_causal | 32회 | **0.09회/일** |
|
||||
| GT v3 (1단계) | 80회 | 0.2회/일 |
|
||||
|
||||
### 3. sim 1위가 GT 벤치마크보다 높은 이유 (핵심 메커니즘)
|
||||
|
||||
동일 sim 엔진임에도 수익률이 역전되는 이유는 **전략 품질이 아니라 체결 구조** 때문입니다.
|
||||
|
||||
| 요인 | GT v3 (1단계 sim) | fractal_swing (sim 1위) |
|
||||
|------|-------------------|-------------------------|
|
||||
| 신호 수 (3년) | 390 | **113,786** |
|
||||
| 클러스터 | 평균 1.62신호/클러스터, 다중 매수 분할 | **99.7%가 1신호=1체결** |
|
||||
| 매매 패턴 | 드문 타점, 보수적 분할·상한 | **매수·매도 거의 매 스윙마다 교대** |
|
||||
| 수수료 (3년 sim) | 상대적으로 적음 | **약 65억 원** (이상적 체결 가정) |
|
||||
| sim의 의미 | “최적 타점을 보수적으로 따라감” | “초고빈도 복리 + 상승장 + 슬리피지 없음” |
|
||||
|
||||
**정리:** fractal의 높은 sim 수익률은 **GT 재현 우수성의 증거가 아니라**, tolerance(±24시간) 안에서 **모든 미세 스윙이 GT에 걸리는 구조**와 **과매매 복리**가 합쳐진 **백테스트 착시**에 가깝습니다.
|
||||
|
||||
### 4. 신호 유형별 정합 (2-3) — v3 6종 커버리지
|
||||
|
||||
#### fractal_swing — tolerance 내 “전 유형 100% recall”
|
||||
|
||||
±480봉 허용 시 스윙·눌림·돌파·다이버전스 **모든 GT 유형에 recall 100%**로 집계됩니다. 이는 각 유형을 **정확히 구분해 맞춘다**는 뜻이 아니라, **3분봉 미세 스윙이 24시간 안에 GT 타점과 겹친다**는 통계적 결과입니다.
|
||||
|
||||
#### zigzag_causal — 스윙 특화, 복합 유형 약함
|
||||
|
||||
| GT 유형 | zigzag recall | 해석 |
|
||||
|---------|---------------|------|
|
||||
| B (swing_low) | **100%** | 스윙 매수에 최적 |
|
||||
| S (swing_high) | **100%** | 스윙 매도에 최적 |
|
||||
| B* (pullback) | 38.4% | 눌림목은 별도 기법 필요 |
|
||||
| B^ (breakout) | 15.6% | 돌파 약함 |
|
||||
| Bd (div_bull) | 4.4% | 다이버전스 거의 미포착 |
|
||||
| Sd (div_bear) | 2.8% | 다이버전스 거의 미포착 |
|
||||
|
||||
→ v3 **6종 전체**를 한 기법으로 운영하려면 **스윙 + 눌림 + 돌파 + 다이버전스**를 조합한 `composite_v3` 또는 유형별 전문 기법 조합이 필요합니다.
|
||||
|
||||
#### composite_v3 (3단계 설계 후보)
|
||||
|
||||
- 10년 정합 score **0.546** (39종 중 하위권)
|
||||
- leg recall **22.9%** — 신호는 많지만 **한 사이클(매수→매도) 단위 정합 낮음**
|
||||
- 3년 sim **-97.5%**, buys_skipped **6,090건** — 신호 과다 + 자본·상한·클러스터 규칙과 충돌
|
||||
|
||||
### 5. MTF 상관 분석 (2-4)
|
||||
|
||||
GT v3 **매수/매도 시점(양성)** vs **랜덤 3분봉(음성)** 에서 1분~월봉 피처를 비교했습니다.
|
||||
|
||||
**대표 패턴 (|Cohen's d| 큰 항목 예시):**
|
||||
|
||||
| 상황 | TF | 피처 | 방향 |
|
||||
|------|-----|------|------|
|
||||
| 스윙 매도(S) | 15분 | RSI14 | GT 시점이 랜덤보다 RSI 높음 (과매수 근처) |
|
||||
| 눌림목(B*) | 3분 | close_vs_ema60_pct | GT 눌림이 EMA60 대비 더 아래 |
|
||||
| 스윙 매수(B) | 30분 | ema60_slope | GT 매수 시 기울기가 상대적으로 완만/하락 |
|
||||
|
||||
**의미:** 3분 신호만으로는 부족한 **상위 TF 과열·추세** 정보가 GT 타점과 통계적으로 연관됩니다. 3단계 `HtfTrendGate` + `MtfSignalFilter`로 보완하는 설계가 타당합니다.
|
||||
|
||||
**현재 상태:** `mtf_correlation_report.html`·`.json`은 생성됨. `data/spot/mtf/mtf_rules_v3.json`은 **아직 자동 저장 미연동** — 3단계 전 규칙 JSON 확정·연동 필요.
|
||||
|
||||
---
|
||||
|
||||
## Check (검토) — “가장 좋은 기법”을 운영에 써도 되는가?
|
||||
|
||||
### 결론: **fractal_swing 단독 실거래는 권장하지 않습니다**
|
||||
|
||||
| 검토 항목 | fractal_swing | 실거래 적합성 |
|
||||
|-----------|---------------|---------------|
|
||||
| 체결 빈도 | 일 **약 52회** 매수 | 거래소 API·수수료·세금·운영 부담 과다 |
|
||||
| 슬리피지 | sim **미반영** | 고빈도일수록 체결 가격 악화 누적 |
|
||||
| 수수료 | 3년 sim만 **약 65억** 가정 | 실제로도 수익 잠식 극심 |
|
||||
| 신호 의미 | 미세 스윙 전부 | 노이즈·휩소에 취약 |
|
||||
| GT 정합 | score 최상 | **±24h tolerance** 효과 — “정확한 v3 타입 재현”과 다름 |
|
||||
| 3단계 설계 | 원안은 composite_v3 + MTF | fractal은 **연구 1위**, **운영 1안 아님** |
|
||||
|
||||
**가능한 예외 (제한적):**
|
||||
|
||||
- **연구·모니터링:** 차트·알림으로 “스윙 후보” 참고용
|
||||
- **극소액 실험:** 일 체결 상한(예: 1~2회/일), 포지션 캡, 슬리피지 가정 추가 후 **모의거래 3개월 이상**
|
||||
|
||||
### 운영 후보 비교 (QCD)
|
||||
|
||||
| 구분 | A. fractal_swing 단독 | B. composite_v3 + MTF (원안) | C. zigzag + 유형별 보조 + MTF | D. minor_swing + MTF |
|
||||
|------|----------------------|------------------------------|------------------------------|----------------------|
|
||||
| **Q (품질)** | 스윙 타이밍만, 유형 혼동 | v3 6종 통합 의도 | B/S 강함, B*/B^/Bd 약 — 보조 기법 필요 | 스윙+하이브리드, 균형 |
|
||||
| **C (비용)** | 수수료·API 호출 **최대** | 신호 필터 후 감소 예정 | **낮음** (연 ~32매수) | **중간** (연 ~277매수) |
|
||||
| **D (일정)** | 즉시 가능하나 **리스크 최대** | 3단계 구현·튜닝 필요 | MTF·모의 1~2개월 | MTF·모의 1~2개월 |
|
||||
| **R (리스크)** | 과매매·슬리피지·장애 **극高** | 현재 sim -97.5% — **튜닝 전 위험** | 신호 적어 기회 손실 | 중간 빈도 휩소 |
|
||||
| **S (장점)** | GT 정합 1위, 구현 단순 | v3 철학과 일치, 확장성 | **GT sim과 유사 체결(97회)**, 해석 용이 | 정합 3위, sim 양호 |
|
||||
| **W (단점)** | 실거래 **비현실** | leg recall 낮음, 과다 스킵 | 6종 중 4종 약함 | pivot/fractal 대비 정합 낮음 |
|
||||
| **비고** | **운영 부적합** | **장기 정석**(튜닝 후) | **단기 모의 1순위** | 모의 2순위 |
|
||||
|
||||
**최종 의견:**
|
||||
- **지금 당장 실거래:** 위 네 안 모두 **완료 전제 미충족**. 최소 **3단계 MTF 필터 + 모의거래 + composite/조합 튜닝** 후 소액.
|
||||
- **2단계 성과의 올바른 사용:** sim 1위 기법을 “운영 전략”으로 고르지 말고, **정합·유형·체결 빈도·MTF**를 함께 보고 **3단계 설계 입력**으로 사용.
|
||||
- **단기 모의 우선순위:** **C (zigzag_causal + MTF)** → **D (minor_swing + MTF)**.
|
||||
- **중장기 운영 정석:** **B (composite_v3 + MTF)** — 임계값·스킵 로직·leg 정합 개선 후.
|
||||
|
||||
### KPI 달성 여부 (2단계 관점)
|
||||
|
||||
| KPI | 목표(가이드) | 결과 | 판정 |
|
||||
|-----|--------------|------|------|
|
||||
| 인과 기법 39종 실행 | 완료 | 완료 | 달성 |
|
||||
| GT 정합 ranking | 상위 기법 식별 | fractal/pivot/minor | 달성 |
|
||||
| 1단계 sim 대비 3년 비교 | 해석 가능한 보고 | causal_sim_report | 달성 (단, sim만으로 운영 선정 금지) |
|
||||
| 유형별 recall | B~Sd별 1위 기법 | signal_type_report | 달성 |
|
||||
| MTF Cohen's d | 필터 규칙 후보 | mtf_correlation_report | 달성 |
|
||||
| mtf_rules_v3.json | 3단계 입력 | `data/spot/mtf/mtf_rules_v3.json` (6유형×4규칙) | 달성 |
|
||||
|
||||
---
|
||||
|
||||
## Act (개선) — 3단계로 넘기기 전 체크리스트
|
||||
|
||||
### 하지 말아야 할 것
|
||||
|
||||
1. **causal_sim_report 수익률 1위 = 실거래 전략**으로 간주
|
||||
2. **fractal_swing 풀오토** (일 50회+ 체결)
|
||||
3. **composite_v3 미튜닝 실거래** (현재 3년 sim -97.5%)
|
||||
4. **0단계 전기간 GT 수익**과 2단계 3년 sim **직접 비교** (sim 규칙이 다름)
|
||||
|
||||
### 권장 다음 단계
|
||||
|
||||
| 순서 | 작업 | 목적 |
|
||||
|------|------|------|
|
||||
| 1 | `mtf_rules_v3.json` 생성·`MtfSignalFilter` 연동 | 3단계 필터 기반 확보 |
|
||||
| 2 | `composite_v3` 임계값·스킵 원인 분석 (buys_skipped 6,090) | leg 정합·자본 효율 개선 |
|
||||
| 3 | **zigzag_causal** + MTF **모의거래** (슬리피지 0.05~0.1% 가정) | 현실적 체결 검증 |
|
||||
| 4 | 유형별 보조: B*→ema_pullback, B^→donchian, Bd→rsi_divergence 등 **composite 재가중** | v3 6종 커버리지 |
|
||||
| 5 | sim에 **슬리피지·일 최대 체결 횟수** 옵션 추가 | 고빈도 기법 과대평가 방지 |
|
||||
| 6 | 소액 실거래 전 **최소 3개월 paper trading** KPI | MDD, 승률, 실체결률 |
|
||||
|
||||
### 관련 산출물 위치
|
||||
|
||||
| 문서/데이터 | 경로 |
|
||||
|-------------|------|
|
||||
| 기법 정합 순위 | `docs/spot/2_analysis/comparison_report.html` |
|
||||
| 3년 sim 순위 | `docs/spot/2_analysis/causal_sim_report.html` |
|
||||
| 1위 vs 1단계 GT 비교 차트 | `docs/spot/2_analysis/causal_sim_chart_best_technique.html` |
|
||||
| 신호 유형별 recall | `docs/spot/2_analysis/signal_type_report.html` |
|
||||
| MTF 상관 | `docs/spot/2_analysis/mtf_correlation_report.html` |
|
||||
| 기법별 sim 차트 (39종) | `docs/spot/2_analysis/technique_chart_sim_*.html` |
|
||||
| 기법 JSON | `data/spot/techniques/*.json` |
|
||||
| 2단계 설계 가이드 | `docs/spot/2_analysis/stage2_design_guide.md` |
|
||||
|
||||
---
|
||||
|
||||
## 부록 A — 지표 읽는 법
|
||||
|
||||
### GT 정합 score vs sim 수익률
|
||||
|
||||
- **score:** “GT 타점 **근처**에 인과 신호가 있었는가” (위치 품질)
|
||||
- **sim 수익률:** “그 신호를 **현재 체결 규칙**으로 얼마나 자주·얼마나 크게 탔는가” (빈도·복리)
|
||||
|
||||
두 지표는 **상관이 없을 수 있음**. fractal이 대표 사례.
|
||||
|
||||
### 1단계 GT sim이 “상한”이 아닌 이유
|
||||
|
||||
- 클러스터 **분할 매수** (v3 평균 매수 클러스터 ~2신호)
|
||||
- **매수 상한** (총평가 1억/10억/100억 구간별 10%/5%/1%)
|
||||
- 3년 구간 **신호 390건**에 한정
|
||||
|
||||
0단계 `simulate_gt_pnl`(레그당 전액 in/out)과는 다른 척도입니다.
|
||||
|
||||
### fractal이 모든 signal_type recall 100%인 이유
|
||||
|
||||
정합 tolerance **±480봉(24시간)**. 3분봉 fractal은 하루에도 수십 개 스윙을 내므로, GT의 스윙·눌림·돌파·다이버전스 타점 대부분이 **시간 창 안에至少 하나의 fractal 신호**와 매칭됩니다. **유형 분류 정확도**와 혼동하지 말 것.
|
||||
|
||||
---
|
||||
|
||||
## 부록 B — 3년 sim 참고 표 (체결 빈도별)
|
||||
|
||||
| 기법 | sim 수익률 | 매수 체결 | GT 정합 | 운영 관점 |
|
||||
|------|-------------|-----------|---------|-----------|
|
||||
| fractal_swing | +7,560,826% | 56,893 | 0.914 | 연구용, 실거래 비권장 |
|
||||
| pivot_swing | +4,687,495% | 12,656 | 0.911 | 고빈도, 실거래 비권장 |
|
||||
| minor_swing | +286,537% | 831 | 0.864 | 모의 후보 |
|
||||
| zigzag_causal | +92,711% | 97 | 0.776 | **모의 1순위** (GT sim과 유사 빈도) |
|
||||
| GT v3 (1단계) | +94,154% | 239 | — | 벤치마크 |
|
||||
| composite_v3 | -97.5% | 1,885 | 0.546 | 3단계 튜닝 필수 |
|
||||
|
||||
---
|
||||
|
||||
## 변경 이력
|
||||
|
||||
| 날짜 | 내용 |
|
||||
|------|------|
|
||||
| 2026-06-12 | 2단계 완료 후 최종 정리 — 운영 권고, sim 역전 해석, 3단계 체크리스트 |
|
||||
Reference in New Issue
Block a user