diff --git a/docs/plans/2026-03-30-fr-oi-backtest-result.md b/docs/plans/2026-03-30-fr-oi-backtest-result.md new file mode 100644 index 0000000..4a7199a --- /dev/null +++ b/docs/plans/2026-03-30-fr-oi-backtest-result.md @@ -0,0 +1,52 @@ +# FR × OI 변화율 백테스트 결과: 폐기 + +**Date**: 2026-03-30 +**Status**: REJECTED — 대칭성 실패 (Case 2), 시장 베타 의심 +**Decision**: 설계 기준 준수, 폐기 + +## 상관분석 결과 + +| 피처 | → 4h | N | +|------|------|---| +| FR × OI변화율(1h) | r = -0.1734 | 448 | +| FR × OI변화율 | r = -0.0944 | 451 | +| OI 변화율 (1h) | r = +0.0916 | 448 | + +## 백테스트 결과 (12개 조합) + +| 조합 | 거래수 | PF | PnL(bps) | +|------|--------|-----|----------| +| SHORT 1h P75 | 36 | **1.88** | +304 | +| SHORT 1h P50 | 63 | 1.07 | +54 | +| SHORT 1h P25 | 80 | 1.16 | +163 | +| SHORT 4h P75 | 17 | 1.68 | +314 | +| SHORT 4h P50 | 23 | 1.56 | +327 | +| SHORT 4h P25 | 26 | 1.50 | +303 | +| LONG 전 조합 | — | **0.34~0.50** | 전부 손실 | + +## 폐기 근거 (3단계 필터) + +1. **필터 1 통과**: SHORT 1h P75 PF=1.88 > 1.5 ✓ +2. **필터 2 경고**: 36건 (🟡 참고만, 50건 미달) ⚠️ +3. **필터 3 실패**: LONG 전 조합 PF < 0.5 = Case 2 (한쪽만 성공) ✗ + +**Case 2 = 시장 베타/우연. 폐기.** + +## 왜 SHORT만 작동했나 + +- 데이터 기간: 3/1~3/30 (29일) +- 이 기간 XRP: 하락 추세 +- SHORT가 잘 먹힌 건 시장 방향과 일치 (beta) +- 상승장에서는 LONG이 작동하고 SHORT가 실패할 것 + +## 4월 재검증 (선택사항) + +- 4/15: OI 29일 데이터로 동일 테스트 재실행 +- 상승장 구간 포함 시 SHORT PF 유지되는지 확인 +- 여전히 Case 2면 확정 폐기 + +## 교훈 + +- PF 1.88을 거절한 이유: 대칭성 없는 시그널은 시장 방향에 의존 +- "한 방향만 작동"은 가장 흔한 과적합 패턴 +- 설계 기준을 사전에 세우고 준수하는 것이 생존 전략 diff --git a/docs/plans/2026-03-30-ls-ratio-backtest-design.md b/docs/plans/2026-03-30-ls-ratio-backtest-design.md new file mode 100644 index 0000000..f45d438 --- /dev/null +++ b/docs/plans/2026-03-30-ls-ratio-backtest-design.md @@ -0,0 +1,76 @@ +# L/S Ratio 단독 백테스트 설계 + +**Date**: 2026-03-30 +**Status**: Approved +**Goal**: L/S ratio의 독립적 edge 유무를 빠르게 판정 + +## 배경 + +- 기존 시그널(RSI+MACD+BB+EMA+StochRSI)은 PF 0.89, 수익성 부족 확정 (2026-03-29) +- L/S ratio 수집 중 (3/22~, 프로덕션 716행) +- 이전 분석에서 XRP top_acct_ls_ratio → 1h return 상관계수 +0.1158 (Momentum) + +## Phase 1: Pure Edge Test + +### 데이터 +- L/S ratio: 프로덕션 수집 (716행, 3/22~3/30) +- Kline: Binance XRPUSDT 15m (같은 기간) +- 비교용: BTC/ETH L/S ratio + +### 전략 로직 +- 진입: `top_acct_ls_ratio` 백분위수 기반 임계값 +- 보유: 고정 4캔들 (1시간) +- 청산: 1시간 후 종가 +- 수수료: 0.04% × 2 = 0.08% +- 포지션: 1건씩만 + +### 테스트 조합 (6개) + +| 임계값 | 방향 | 신호 | +|--------|------|------| +| 75th %ile | LONG | 모멘텀 강함 | +| 75th %ile | SHORT | 모멘텀 약함 | +| 50th %ile | LONG | 모멘텀 중간 | +| 50th %ile | SHORT | 모멘텀 중간 | +| 25th %ile | LONG | 모멘텀 약함 | +| 25th %ile | SHORT | 모멘텀 강함 | + +### PF 계산 +- PF = Σ(Gross Profit - 비용) / Σ(|Gross Loss| + 비용) +- 비용: 0.08% per trade + +### 판정 기준 (3단계 필터) + +**필터 1: 명확한 신호** +- PF > 1.5 → edge 있음 +- PF < 0.5 → 실패 +- 0.5~1.5 → 판단 보류 + +**필터 2: 거래수 신뢰도** +- < 20건 → 🔴 폐기 +- 20~50건 → 🟡 참고만 +- 50~100건 → 🟢 검토 +- 100건+ → 🟢 우선 + +**필터 3: 대칭성** +- Case 1: LONG > 1.5 AND SHORT > 1.5 → 진정한 edge → Phase 2 진행 +- Case 2: 한쪽만 성공 → 시장 베타/우연 → 폐기 +- Case 3: 한쪽 강함 + 한쪽 애매 → 부분적 edge → 낮은 신뢰도로 Phase 2 + +## Phase 2: Bot Simulation (조건부) + +Phase 1 필터 통과 시에만: +- L/S ratio로 RSI/MACD 완전 대체 +- ATR SL 1.5x, TP 2.3x (기존 동일) +- 역신호 시 반대 포지션 재진입 + +## Phase 3: 4월 15일 재검증 + +- 4/1~4/15 데이터로 동일 로직 재실행 +- 기준: PF > 1.15 +- GO/STOP/HOLD 최종 판정 + +## 한계 +- 8일 = ~700 시그널 포인트, 조합당 ~115개 +- 극심한 과적합 위험 → 8일 결과는 "방향성 힌트" +- 최종 판정은 4월 15일 재검증 기반 diff --git a/docs/plans/2026-03-30-ls-ratio-backtest-result.md b/docs/plans/2026-03-30-ls-ratio-backtest-result.md new file mode 100644 index 0000000..a449f84 --- /dev/null +++ b/docs/plans/2026-03-30-ls-ratio-backtest-result.md @@ -0,0 +1,43 @@ +# L/S Ratio 백테스트 결과: Edge 없음 + +**Date**: 2026-03-30 +**Status**: CLOSED — Edge 없음 확정, 폐기 +**Decision**: Option B (결과 수용 + 방향 전환) + +## 테스트 요약 + +- 데이터: 8일 (3/22~3/30), 716 candles, XRPUSDT top_acct_ls_ratio +- 방법: 6개 조합 (3 percentile × 2 direction), 1시간 보유, 수수료 0.08% +- 판정 기준: PF > 1.5 + 거래수 > 20 + 양방향 대칭 + +## 결과 + +| 조합 | 거래수 | 승률 | PF | PnL(bps) | +|------|--------|------|----|----------| +| P75 LONG (모멘텀) | 39 | 35.9% | 0.53 | -306 | +| P75 SHORT (역모멘텀) | 39 | 46.2% | 0.51 | -314 | +| P50 LONG | 76 | 34.2% | 0.38 | -1252 | +| P50 SHORT | 75 | 44.0% | 0.63 | -699 | +| P25 LONG (역모멘텀) | 41 | 41.5% | 0.86 | -161 | +| P25 SHORT (모멘텀) | 41 | 48.8% | 0.64 | -466 | + +**6개 조합 전부 PF < 1.0. 최고값 0.86은 기존 시그널(0.89)보다 못함.** + +## 판정 근거 + +1. 상관분석 r=0.1158 (약함) → 거래비용 커버 불가 예상 → 백테스트로 확인 +2. Momentum도 Contrarian도 작동 안 함 +3. 추가 조합 테스트는 과적합 위험 (8일 데이터에 20+ 조합 = 우연의 승자 필연) + +## 다음 단계 + +- L/S ratio 단독 시그널 폐기 +- collector는 유지 (4/15 재검증용 + 향후 복합 피처 가능성) +- 새 데이터 소스 탐색: Funding Rate, OI Velocity, Close Ratio, USDT Perp Inflows +- 4/15: L/S ratio 24일 재검증 (마지막 확인, 여전히 실패 시 확정 폐기) + +## 교훈 + +- 약한 상관계수(r < 0.15)는 거래비용 후 수익 불가능 시사 +- "혹시 다른 형태로는?" = curve-fitting의 시작 +- 빠르게 실패하고 폐기하는 것이 생존 능력 diff --git a/docs/plans/2026-03-30-public-api-research-closed.md b/docs/plans/2026-03-30-public-api-research-closed.md new file mode 100644 index 0000000..8cba6f5 --- /dev/null +++ b/docs/plans/2026-03-30-public-api-research-closed.md @@ -0,0 +1,40 @@ +# Binance Public API Signal Research: 공식 종료 + +**Date**: 2026-03-30 +**Status**: CLOSED — 단독 edge 가진 피처 없음 + +## 전수 테스트 결과 + +| # | 피처 | 상관계수 | 백테스트 Best PF | 판정 | +|---|------|---------|-----------------|------| +| 1 | RSI+MACD+BB+EMA+StochRSI | — | 0.89 | 폐기 (수익성 부족) | +| 2 | top_acct_ls_ratio | r=+0.116 (1h) | 0.86 | 폐기 (전 조합 < 1.0) | +| 3 | global_ls_ratio | r=+0.048 (1h) | — | 약함, 미실시 | +| 4 | top_pos_ls_ratio | r=+0.032 (1h) | — | 약함, 미실시 | +| 5 | Funding Rate | r=-0.054 (4h) | — | 약함, 미실시 | +| 6 | FR × OI변화율(1h) | r=-0.173 (4h) | SHORT 1.88 / LONG 0.50 | 폐기 (대칭성 실패) | +| 7 | Taker Buy/Sell Ratio | r=-0.079 (1h) | 0.93 | 폐기 (전 조합 < 1.0) | +| 8 | Liquidation (allForceOrders) | API 폐기됨 | — | 사용 불가 | + +## 핵심 교훈 + +1. **r < 0.15는 거래비용(0.08%) 커버 불가** — 모든 피처에서 확인 +2. **대칭성(LONG+SHORT) 없는 시그널은 시장 베타** — FR×OI에서 확인 +3. **8일~29일 데이터는 "방향성 힌트"** — 최종 판정엔 더 긴 기간 필요 +4. **PF 1.88도 거절할 수 있어야 함** — 설계 기준 사전 수립이 핵심 + +## 4월 15일 재검증 + +- crontab 등록 완료 (프로덕션 10.1.10.24) +- `scripts/revalidate_apr15.py` — L/S ratio + FR×OI 동시 재실행 +- 추가 데이터(24일/29일)로 동일 테스트 +- 여전히 실패 시 확정 폐기 + +## 다음 방향 (4월 이후) + +Binance 공개 API 한정으로는 단독 edge 불가. 탐색 필요: +- 온체인 데이터 (whale wallet tracking, exchange inflow/outflow) +- 크로스 거래소 데이터 (OKX, Bybit OI/FR 차이) +- 소셜 센티먼트 (Fear & Greed, Twitter/X sentiment) +- 멀티피처 복합 시그널 (ML with L/S + FR + OI + Taker 조합) +- 다른 타임프레임 (1h, 4h candle 기반) diff --git a/docs/plans/2026-04-01-mtf_backtest.md b/docs/plans/2026-04-01-mtf_backtest.md new file mode 100644 index 0000000..55528a0 --- /dev/null +++ b/docs/plans/2026-04-01-mtf_backtest.md @@ -0,0 +1,30 @@ +【MTF 백테스트: 기존 vs 개선】 + +데이터: +├─ XRPUSDT kline (15m, 2026-02-01 ~ 현재) +├─ 타겟: 다음 4시간 수익률 +└─ 기간: 2개월 + +Step 1: 기존 신호 백테스트 +├─ 신호: 15분봉 RSI+MACD (메타필터 없음) +├─ SL: ATR 1.5x, TP: ATR 2.3x +├─ 결과 기대값: PF ≈ 0.89 (이미 알고 있는 값) +└─ 거래수: X건 + +Step 2: MTF 필터링 적용 백테스트 +├─ Meta Filter 1: 1h EMA 50 vs EMA 200 +├─ Meta Filter 2: 1h ADX > 20 +├─ Trigger: 15분봉 RSI+MACD (필터 조건과 일치할 때만) +├─ SL: ATR 1.5x, TP: ATR 2.3x (동일) +├─ 결과 기대값: PF > 1.0 (목표) +└─ 거래수: Y건 (X의 40~60%) + +Step 3: 비교 분석 +├─ 기존: Trades X, PF 0.89, PnL A +├─ MTF: Trades Y, PF ?, PnL B +├─ 개선도: (PF_new - 0.89) / 0.89 = ?% + +출력: +결과를 테이블 형식으로 정렬 +│ 구분 │ Trades │ Win Rate │ PF │ PnL │ 개선율 │ +└───────────────────────────────────────── diff --git a/docs/plans/2026-04-21-mtf-oos-dryrun-result.md b/docs/plans/2026-04-21-mtf-oos-dryrun-result.md new file mode 100644 index 0000000..a20d911 --- /dev/null +++ b/docs/plans/2026-04-21-mtf-oos-dryrun-result.md @@ -0,0 +1,40 @@ +# MTF Pullback Bot OOS Dry-run 중간 보고 + +## 가설 +MTF Pullback Bot의 멀티타임프레임 풀백 시그널이 XRPUSDT LONG/SHORT 양방향에서 수익을 낸다. + +## 데이터 +- 심볼: XRPUSDT +- 기간: 2026-04-02 ~ 2026-04-20 (19일) +- 거래 수: 24건 (LONG 17, SHORT 7) — 목표 50건 미달 +- 테스트 마감: 2026-04-30 + +## 중간 결과 + +### 방향별 상세 (Raw, 수수료 미반영) + +| 방향 | 거래 수 | 승률 | PF | CumPnL(bps) | 평균보유 | +|------|---------|------|----|-------------|---------| +| Total | 24 | 41.7% | 0.98 | -15.8 | 240m | +| LONG | 17 | 47.1% | 1.17 | +103.1 | 277m | +| SHORT | 7 | 28.6% | 0.58 | -118.9 | 150m | + +### 비용 보정 시나리오 + +| 시나리오 | Total PF | Total CumPnL | LONG PF | SHORT PF | +|----------|----------|-------------|---------|----------| +| fees_only | 0.79 | -207.8 | 0.95 | 0.46 | +| realistic | 0.74 | -264.8 | 0.90 | 0.42 | +| pessimistic | 0.66 | -369.8 | 0.80 | 0.37 | + +## 현재 상태 + +**판단 불가** — 거래 수 24건 < 50건 기준, 테스트 기간 잔여 9일 (4/30 마감) + +### 우려 사항 (최종 판정 시 확인 필요) +- SHORT 승률 28.6%, PF 0.58 — 역 edge 가능성 +- Raw PF 0.98 — 수수료 미반영으로도 손익분기 미달 +- LONG은 Raw PF 1.17이나 수수료 반영 시 PF 0.95로 하락 + +## 결론 +4/30 마감 후 50건 이상 누적 시 최종 판정 예정.