research: MTF + BTC 추세 필터 백테스트 — FAIL, MTF 전략 최종 폐기
- 메인 가설(BTC 1h EMA50/200 ADX>20) OOS fees PF 0.90, 베이스라인(0.94)보다 악화 - 12개 sweep 조합 중 합격(fees PF>=1.2) 0개 - 761일 데이터로 전략 근본적 edge 부재 확인 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
79
docs/plans/2026-05-04-mtf-btc-filter-design.md
Normal file
79
docs/plans/2026-05-04-mtf-btc-filter-design.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# MTF + BTC 추세 필터 백테스트 설계
|
||||
|
||||
## 가설
|
||||
|
||||
BTC 추세 방향과 일치하는 MTF 풀백 시그널만 실행하면 비용 반영 후에도 PF > 1.2를 달성한다.
|
||||
|
||||
## 메인 가설 (사전 확정 — commitment device)
|
||||
|
||||
> 메인 가설은 sweep 결과를 보기 **전에** BTC 1h + EMA 50/200 + ADX > 20으로 확정한다.
|
||||
> sweep 12개 결과에서 가장 좋은 조합으로 사후 변경하지 않는다.
|
||||
> 4h/1d 결과는 robustness 참고용이며, 메인 가설이 OOS 실패 시
|
||||
> "다른 조합이 됐으니 PASS"로 구제하지 않는다.
|
||||
|
||||
- **BTC 타임프레임**: 1h
|
||||
- **BTC EMA**: fast=50, slow=200
|
||||
- **BTC ADX 임계값**: 20
|
||||
- **선택 근거**: XRP MTF bot의 1h 메타필터와 동일 기준 → 시그널 정합성 확보, 사후 정당화 차단
|
||||
|
||||
## 필터 로직
|
||||
|
||||
```
|
||||
BTC_trend = (BTC EMA_fast > BTC EMA_slow) AND (BTC ADX > 20)
|
||||
? (EMA_fast > EMA_slow ? "UP" : "DOWN")
|
||||
: "NEUTRAL"
|
||||
|
||||
if BTC_trend == "UP": SHORT 차단, LONG만 허용
|
||||
if BTC_trend == "DOWN": LONG 차단, SHORT만 허용
|
||||
if BTC_trend == "NEUTRAL": 양방향 차단 (추세 불명확)
|
||||
```
|
||||
|
||||
## Sweep 파라미터 (robustness check용)
|
||||
|
||||
| 파라미터 | 후보 | 설명 |
|
||||
|---------|------|------|
|
||||
| BTC 타임프레임 | 1h, 4h, 1d | BTC 추세 판단 주기 |
|
||||
| BTC EMA fast | 20, 50 | 단기 EMA |
|
||||
| BTC EMA slow | 100, 200 | 장기 EMA |
|
||||
|
||||
총 조합: 3 × 2 × 2 = 12개. ADX > 20은 전 조합 고정.
|
||||
|
||||
## 데이터
|
||||
|
||||
- XRP: `data/xrpusdt/combined_15m.parquet` (기존)
|
||||
- BTC: `data/btcusdt/combined_15m.parquet` (fetch 필요)
|
||||
- 기간: 최소 6개월 (XRP와 동일 기간)
|
||||
- BTC 15m → 1h/4h/1d resample 후 EMA/ADX 계산
|
||||
- merge: `merge_asof(direction="backward")` — look-ahead bias 방지
|
||||
- fetch 후 XRP/BTC 첫/마지막 timestamp + bar 수 일치 검증 필수
|
||||
|
||||
## IS/OOS 분할
|
||||
|
||||
- 앞 70% IS, 뒤 30% OOS (단순 시간 분할)
|
||||
- ML 없고 sweep 12개뿐이므로 walk-forward 불필요
|
||||
|
||||
## 합격 기준
|
||||
|
||||
| 기준 | 값 | 비고 |
|
||||
|------|-----|------|
|
||||
| 메인 가설 OOS fees_only PF | >= 1.2 | 실거래 마진 확보 |
|
||||
| 메인 가설 OOS realistic PF | >= 1.0 | 슬리피지+펀딩 반영 후 흑자 |
|
||||
| LONG/SHORT 양쪽 fees_only PF | >= 0.8 | 대칭성 |
|
||||
| OOS 거래 수 | >= 50 | 통계적 유의성 |
|
||||
| IS/OOS PF 격차 | < 30% | 과적합 방지 |
|
||||
| 베이스라인 대비 OOS PF | 명확한 개선 | 절대값보다 차이 중요 |
|
||||
| IS 거래 수 | >= 100 | 미달 시 조합 자동 제외 |
|
||||
|
||||
## 판정 흐름
|
||||
|
||||
1. 베이스라인(BTC 필터 없는 MTF) IS/OOS 결과 먼저 산출
|
||||
2. 12개 조합 IS sweep, 모두 결과 저장 (IS 거래 수 < 100 자동 제외)
|
||||
3. 메인 가설(1h/EMA50-200/ADX20) OOS 검증 → 합격 기준 통과 시 PASS
|
||||
4. 나머지 11개도 OOS 검증 → robustness 보고서 (참고용)
|
||||
5. 메인 가설 실패 시 → 전략 폐기 (다른 조합으로 구제 안 함)
|
||||
|
||||
## 산출물
|
||||
|
||||
- `scripts/mtf_btc_filter_backtest.py` — 백테스트 스크립트
|
||||
- `docs/plans/2026-05-04-mtf-btc-filter-result.md` — 결과 문서
|
||||
- 거래 수준 로그 (CSV) — entry/exit/BTC trend/PnL 포함, 사후 분석용
|
||||
80
docs/plans/2026-05-04-mtf-btc-filter-result.md
Normal file
80
docs/plans/2026-05-04-mtf-btc-filter-result.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# MTF + BTC 추세 필터 백테스트 결과
|
||||
|
||||
## 가설
|
||||
|
||||
BTC 추세 방향과 일치하는 MTF 풀백 시그널만 실행하면 비용 반영 후에도 PF > 1.2를 달성한다.
|
||||
|
||||
메인 가설 (사전 확정): BTC 1h + EMA 50/200 + ADX > 20
|
||||
|
||||
## 데이터
|
||||
|
||||
- 심볼: XRPUSDT
|
||||
- 기간: 2024-04-02 ~ 2026-05-03 (761일, 73,123 bars)
|
||||
- IS: 2024-04-02 ~ 2025-09-17 (70%)
|
||||
- OOS: 2025-09-17 ~ 2026-05-03 (30%)
|
||||
- BTC OHLCV: XRP parquet 내 상관 컬럼 활용 (NaN 0%)
|
||||
|
||||
## 베이스라인 (BTC 필터 없음)
|
||||
|
||||
| 구분 | IS PF(fees) | OOS PF(fees) | OOS 거래수 |
|
||||
|------|------------|-------------|-----------|
|
||||
| Total | 1.02 | 0.94 | 206 |
|
||||
| LONG | 1.04 | 0.71 | 69 |
|
||||
| SHORT | 1.01 | 1.06 | 137 |
|
||||
|
||||
베이스라인 자체가 OOS에서 적자 (fees PF 0.94).
|
||||
|
||||
## 메인 가설 결과 (BTC 1h EMA50/200 ADX>20)
|
||||
|
||||
| 구분 | IS PF(fees) | OOS PF(fees) | OOS PF(real) | OOS 거래수 |
|
||||
|------|------------|-------------|-------------|-----------|
|
||||
| Total | 1.12 | **0.90** | 0.88 | 158 |
|
||||
| LONG | 1.24 | 0.81 | 0.78 | 56 |
|
||||
| SHORT | 1.02 | 0.95 | 0.92 | 102 |
|
||||
|
||||
## 합격 기준 체크
|
||||
|
||||
| 기준 | 결과 | 판정 |
|
||||
|------|------|------|
|
||||
| OOS fees_only PF >= 1.2 | 0.90 | **FAIL** |
|
||||
| OOS realistic PF >= 1.0 | 0.88 | **FAIL** |
|
||||
| OOS 거래수 >= 50 | 158 | PASS |
|
||||
| LONG/SHORT fees PF >= 0.8 | L:0.81 S:0.95 | PASS |
|
||||
| IS/OOS PF 격차 < 30% | 19.6% | PASS |
|
||||
| 베이스라인 대비 개선 | 0.90 vs 0.94 | **FAIL** |
|
||||
|
||||
## Sweep Robustness
|
||||
|
||||
| 조합 | IS N | IS FPF | OOS FPF | OOS rPF | 비고 |
|
||||
|------|------|--------|---------|---------|------|
|
||||
| BTC_1h_EMA20/100 | 327 | 1.19 | 0.84 | 0.81 | |
|
||||
| BTC_1h_EMA20/200 | 333 | 1.16 | 0.86 | 0.84 | |
|
||||
| BTC_1h_EMA50/100 | 335 | 1.14 | 0.83 | 0.80 | |
|
||||
| **BTC_1h_EMA50/200** | **333** | **1.12** | **0.90** | **0.88** | **메인 ★** |
|
||||
| BTC_4h_EMA20/100 | 310 | 1.00 | 1.04 | 1.01 | |
|
||||
| BTC_4h_EMA20/200 | 269 | 0.95 | 1.09 | 1.06 | |
|
||||
| BTC_4h_EMA50/100 | 271 | 0.91 | 1.07 | 1.04 | |
|
||||
| BTC_4h_EMA50/200 | 231 | 0.91 | 1.01 | 0.98 | |
|
||||
| BTC_1d_EMA20/100 | 151 | 1.10 | 1.17 | 1.13 | |
|
||||
| BTC_1d_EMA20/200 | 94 | 1.41 | 1.28 | 1.25 | IS<100 SKIP |
|
||||
| BTC_1d_EMA50/100 | 129 | 1.28 | 1.20 | 1.16 | |
|
||||
| BTC_1d_EMA50/200 | 96 | 1.44 | 1.14 | 1.11 | IS<100 SKIP |
|
||||
|
||||
- 1h 조합: **전멸** (OOS fees PF 0.83~0.90)
|
||||
- 4h 조합: 1.01~1.09 — BEP 수준, 1.2 미달
|
||||
- 1d 조합: 1.17~1.28 — 겉보기 좋으나 IS 거래수 94~151로 과적합 위험 + 사전 합의에 의해 구제 불가
|
||||
|
||||
12개 중 fees PF >= 1.2 통과는 **1개** (BTC_1d_EMA20/100, 1.17로 미달 → 실제 0개).
|
||||
|
||||
## 핵심 발견
|
||||
|
||||
1. **BTC 필터가 성과를 악화시킴**: 메인 가설 OOS PF 0.90 < 베이스라인 0.94. 필터가 오히려 좋은 거래를 걸러냄
|
||||
2. **IS/OOS 격차 패턴**: 1h 조합은 IS에서 과적합(1.12~1.19) → OOS 붕괴(0.83~0.90). 전형적 curve-fitting
|
||||
3. **1d가 좋아보이는 함정**: IS 거래수가 94~151로 적어 통계적 유의성 부족. 사전 합의대로 구제 불가
|
||||
4. **MTF Pullback 자체의 한계**: 베이스라인 OOS 0.94로 전략 자체에 edge 없음. 필터로 보완 불가능
|
||||
|
||||
## 결론
|
||||
|
||||
**FAIL** — MTF Pullback 전략 최종 폐기.
|
||||
|
||||
BTC 추세 필터(1h EMA50/200 ADX>20)는 OOS에서 베이스라인보다 오히려 악화. 12개 sweep 조합 중 합격 기준(fees PF >= 1.2)을 통과한 조합 0개. 베이스라인 자체도 OOS 적자(PF 0.94)로 전략의 근본적 edge 부재 확인.
|
||||
Reference in New Issue
Block a user