- Added functionality to fetch live trade data from the dashboard API. - Implemented weekly report generation that includes backtest results, live trade statistics, and performance trends. - Enhanced error handling for API requests and improved logging for better traceability. - Updated tests to cover new features and ensure reliability of the report generation process.
4.9 KiB
4.9 KiB
전략 파라미터 스윕 계획
날짜: 2026-03-06 상태: 완료
목표
Walk-Forward 백테스트를 활용하여 기본 기술 지표 전략(ML OFF)의 수익성 높은 파라미터 조합을 탐색하고, PF >= 1.0을 ML 재설계의 기반으로 확보한다.
배경
Walk-Forward 백테스트 결과 현재 XRP 전략이 비수익적(PF 0.71, -641 PnL)으로 확인되었다. 전략 파라미터 스윕은 5개 파라미터의 324개 조합을 체계적으로 테스트하여 수익 구간을 탐색한다.
스윕 파라미터
| 파라미터 | 값 | 설명 |
|---|---|---|
atr_sl_mult |
1.0, 1.5, 2.0 | 손절 ATR 배수 |
atr_tp_mult |
2.0, 3.0, 4.0 | 익절 ATR 배수 |
signal_threshold |
3, 4, 5 | 진입을 위한 최소 가중치 지표 점수 |
adx_threshold |
0, 20, 25, 30 | ADX 필터 (0=비활성, N=ADX>=N 필요) |
volume_multiplier |
1.5, 2.0, 2.5 | 거래량 급증 감지 배수 |
총 조합: 3 x 3 x 3 x 4 x 3 = 324
구현
수정된 파일
src/indicators.py—get_signal()에signal_threshold,adx_threshold,volume_multiplier파라미터 추가src/dataset_builder.py—_calc_signals()에 동일 파라미터를 받아 벡터화 계산에 적용src/backtester.py—BacktestConfig에 전략 파라미터 포함;WalkForwardBacktester가 테스트 폴드에 전파
신규 생성 파일
scripts/strategy_sweep.py— 파라미터 그리드 스윕 CLI 도구
버그 수정
WalkForwardBacktester가signal_threshold,adx_threshold,volume_multiplier,use_ml을 폴드BacktestConfig에 전달하지 않는 버그 수정. 모든 신호 파라미터가 기본값으로 적용되어 ADX/거래량/임계값 스윕이 효과 없이 실행되고 있었음.
결과 (XRPUSDT, Walk-Forward 3/1)
상위 10개 조합
| 순위 | SL×ATR | TP×ATR | 신호 | ADX | 거래량 | 거래 수 | 승률 | PF | MDD | PnL | 샤프 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.5 | 4.0 | 3 | 30 | 2.5 | 19 | 52.6% | 2.39 | 7.0% | +469 | 61.0 |
| 2 | 1.5 | 2.0 | 3 | 30 | 2.5 | 19 | 68.4% | 2.23 | 6.5% | +282 | 61.2 |
| 3 | 1.0 | 2.0 | 3 | 30 | 2.5 | 19 | 57.9% | 1.98 | 5.0% | +213 | 50.8 |
| 4 | 1.0 | 4.0 | 3 | 30 | 2.5 | 19 | 36.8% | 1.80 | 7.7% | +248 | 37.1 |
| 5 | 1.5 | 3.0 | 3 | 30 | 2.5 | 19 | 52.6% | 1.76 | 10.1% | +258 | 40.9 |
| 6 | 1.5 | 4.0 | 3 | 25 | 2.5 | 28 | 42.9% | 1.75 | 13.1% | +381 | 36.8 |
| 7 | 2.0 | 4.0 | 3 | 30 | 1.5 | 39 | 48.7% | 1.67 | 16.9% | +572 | 35.3 |
| 8 | 1.0 | 2.0 | 3 | 25 | 2.5 | 28 | 50.0% | 1.64 | 5.8% | +205 | 35.7 |
| 9 | 1.5 | 2.0 | 3 | 25 | 2.5 | 28 | 57.1% | 1.62 | 10.3% | +229 | 35.7 |
| 10 | 2.0 | 2.0 | 3 | 25 | 2.5 | 27 | 66.7% | 1.57 | 12.0% | +217 | 33.3 |
현재 프로덕션 (324개 중 93위)
| SL×ATR | TP×ATR | 신호 | ADX | 거래량 | 거래 수 | 승률 | PF | MDD | PnL |
|---|---|---|---|---|---|---|---|---|---|
| 1.5 | 3.0 | 3 | 0 | 1.5 | 118 | 30.5% | 0.71 | 65.9% | -641 |
핵심 발견 사항
- ADX 필터가 가장 영향력 있는 단일 파라미터. 상위 10개 결과 모두 ADX >= 25를 사용하며, 상위 5개는 ADX=30이 지배적. 횡보/박스권 시장에서 노이즈 신호를 필터링한다.
- 거래량 배수 2.5가 지배적. 높은 거래량 임계값은 진정한 돌파에서만 진입을 보장한다 (노이즈 대비 실질 돌파).
- 신호 임계값 3이 최적. 더 높은 임계값(4, 5)은 대부분의 ADX 필터링 구간에서 거래가 너무 적거나 0건이었다.
- SL/TP 비율보다 진입 필터가 더 중요. 상위 결과는 모든 SL/TP 조합에 걸쳐 있지만, 모두 ADX=25-30 + Vol=2.5를 공유한다.
- 필터 적용 시 거래 수가 크게 감소. 상위 조합은 19-39건 vs 현재 118건. 적지만 높은 품질의 진입.
- 324개 중 41개 조합이 PF >= 1.0 달성 (12.7%).
권장 다음 단계
- 프로덕션 기본값 업데이트: ADX=25, volume_multiplier=2.0을 보수적 선택으로 적용 (ADX=30보다 더 많은 거래 확보)
- TRXUSDT, DOGEUSDT에서 검증: ADX 필터가 XRP에만 특화된 것이 아닌지 확인
- ML 모델 재학습: 업데이트된 전략 파라미터로 — ML 필터가 수익성 있는 기반 위에서 개선 가능
- 수익 구간 주변 세밀 스윕: ADX [25-35], Vol [2.0-3.0]