# config.py 최적화 권장사항 ## 📊 백테스트 분석 결과 요약 (2022~2023) - **총 거래 횟수**: 402회 - **전체 승률**: 71.1% - **평균 수익률**: 6.80% - **누적 수익률**: 2735.33% (단순 합산) - **실제 Total Return**: 11.84% --- ## 🔍 EXIT REASON별 상세 분석 ### 1. PROFIT_TAKE_10PCT_HALF (192회, 승률 100%, 평균 14.17%) **현황**: - 가장 많은 거래 (47.8%) - 승률 100%로 가장 안정적 - 평균 14.17% 수익으로 목표(10%) 대비 40% 초과 달성 **문제점**: - 절반만 매도하는 전략이지만, 나머지 절반이 후속 TRAILING_STOP에서 수익을 보존하지 못하는 경우 발생 - TOP 수익 거래들이 모두 PROFIT_TAKE에서 나왔음 (최고 35.84%) **개선 방향**: ```python # config.py SELL_PROFIT_TAKE_PCT = 0.15 # 10% → 15% 상향 (평균 14.17%를 반영) # 또는 단계적 익절 강화 SELL_PROFIT_TAKE_FIRST_PCT = 0.12 # 1차 익절: 12% SELL_PROFIT_TAKE_SECOND_PCT = 0.20 # 2차 익절: 20% ``` --- ### 2. STOP_LOSS_5PCT (36회, 승률 2.8%, 평균 -5.41%) **현황**: - 전체 거래의 9% - 승률 2.8% (거의 모든 스탑로스가 손실로 종료) - 평균 -5.41% 손실 (목표 -5%보다 약간 더 큰 슬리피지) **문제점**: - 한화오션 -18.24%, 고영 -23.51% 등 급락 종목에서 큰 손실 - 5% 손절선이 변동성 높은 종목에는 너무 타이트 - STOP_LOSS가 총 손실의 대부분(-194.80%)을 차지 **개선 방향**: ```python # config.py # 옵션 1: 손절선 완화 SELL_STOP_LOSS_PCT = -0.07 # -5% → -7% # 옵션 2: 변동성 기반 동적 손절 (ATR 활용) USE_DYNAMIC_STOP_LOSS = True STOP_LOSS_ATR_MULTIPLIER = 2.0 # ATR × 2배를 손절선으로 사용 # 옵션 3: 섹터별 차등 손절 STOP_LOSS_BY_SECTOR = { '반도체': -0.07, # 변동성 높은 섹터 '조선': -0.08, # 대형 프로젝트 기반 (변동성 큼) '금융': -0.05, # 안정적 섹터 'default': -0.06 } ``` --- ### 3. TRAILING_STOP_LT10PCT (151회, 승률 46.4%, 평균 0.36%) **현황**: - 두 번째로 많은 거래 (37.6%) - 승률 46.4% (50% 미만 → **문제**) - 평균 수익 0.36% (거의 본전 수준) **문제점**: - 승률이 50% 이하로 통계적으로 불리 - 수익폭이 0.36%로 거의 없음 (수수료/슬리피지 고려 시 실질 손실 가능) - PROFIT_TAKE 이후 남은 절반이 제대로 추가 수익을 내지 못하고 조기 청산 **개선 방향**: ```python # config.py # 현재 설정 (추정) SELL_TRAILING_STOP_ACTIVATION_PCT = 0.10 # 10% 수익 시 트레일링 시작 SELL_TRAILING_STOP_LT10PCT_STEP = 0.03 # 피크 대비 -3% 하락 시 매도 # 개선안 1: 트레일링 활성화 조건 완화 SELL_TRAILING_STOP_ACTIVATION_PCT = 0.08 # 10% → 8% # 개선안 2: 트레일링 스텝 확대 (조기 청산 방지) SELL_TRAILING_STOP_LT10PCT_STEP = 0.05 # -3% → -5% # 개선안 3: 최소 보유 기간 설정 MIN_HOLDING_DAYS_BEFORE_TRAILING = 10 # 10일 이상 보유 후 트레일링 시작 ``` --- ### 4. TRAILING_STOP_10_30PCT (21회, 승률 100%, 평균 6.86%) **현황**: - 소수 거래 (5.2%) - 승률 100% - 평균 6.86% 수익 **분석**: - 10~30% 수익 구간 트레일링은 효과적 - 거래 빈도가 낮아 개선 여지 큼 **개선 방향**: ```python # 10~30% 구간 진입 빈도를 높이기 위해 PROFIT_TAKE 1차 익절 비율 축소 SELL_PROFIT_TAKE_SELL_RATIO = 0.33 # 50% → 33% (1/3만 매도) ``` --- ## 🎯 종합 최적화 권장사항 ### Priority 1: STOP_LOSS 완화 (가장 큰 손실 요인) ```python # config.py # 기존 SELL_STOP_LOSS_PCT = -0.05 # 개선 SELL_STOP_LOSS_PCT = -0.07 # -5% → -7% # 또는 동적 손절 USE_DYNAMIC_STOP_LOSS = True STOP_LOSS_ATR_MULTIPLIER = 2.0 ``` **예상 효과**: - 한화오션(-18.24%), 고영(-23.51%) 같은 급락 종목은 여전히 손실이지만 - -5~-7% 구간 손절이 줄어들면서 **승률 +5~10%** 향상 기대 - 총 손실 -194.80% 중 약 30~40% 감소 예상 (-60~-80% 개선) --- ### Priority 2: PROFIT_TAKE 목표가 상향 ```python # config.py # 기존 SELL_PROFIT_TAKE_PCT = 0.10 # 개선 SELL_PROFIT_TAKE_PCT = 0.15 # 10% → 15% # 또는 단계적 익절 SELL_PROFIT_TAKE_FIRST_PCT = 0.12 SELL_PROFIT_TAKE_SECOND_PCT = 0.20 SELL_PROFIT_TAKE_SELL_RATIO = 0.33 # 1/3씩 매도 ``` **예상 효과**: - 현재 평균 14.17% 수익을 더 많이 확보 - TOP 15 수익 거래 (25~35%) 구간을 더 많이 노림 - **총 수익률 +30~50% 증가** 예상 --- ### Priority 3: TRAILING_STOP_LT10PCT 개선 ```python # config.py # 기존 (추정) SELL_TRAILING_STOP_LT10PCT_STEP = 0.03 # -3% 하락 시 매도 # 개선 SELL_TRAILING_STOP_LT10PCT_STEP = 0.05 # -5% 하락 시 매도 MIN_HOLDING_DAYS_BEFORE_TRAILING = 10 # 최소 10일 보유 후 트레일링 시작 ``` **예상 효과**: - 승률 46.4% → 55~60% 개선 - 평균 수익 0.36% → 2~3% 증가 - 조기 청산 방지로 **총 수익률 +10~15% 증가** --- ### Priority 4: 필터 조정 (진입 품질 향상) ```python # config.py # 현재 비활성화된 필터 재검토 USE_DISPARITY_FILTER = True GOLDEN_CROSS_DISPARITY_THRESHOLD = 5.0 # 5% 이상 이격도일 때만 매수 USE_STRONG_BREAKTHROUGH_FILTER = True STRONG_BREAKTHROUGH_VOLUME_RATIO = 1.5 # 평균 거래량 1.5배 이상 # 역배열 필터 강화 REVERSE_ARRAY_CONDITION = True # 이미 활성화 ``` **예상 효과**: - 진입 품질 향상으로 STOP_LOSS 빈도 감소 - 승률 +5~10% 개선 --- ## 📈 최종 예상 성과 ### 현재 (Baseline) - Total Return: 11.84% - 승률: 71.1% - 평균 거래당 수익: 6.80% ### 개선 후 (예상) - Total Return: **18~25%** (+50~100% 증가) - 승률: **75~80%** (+4~9% 증가) - 평균 거래당 수익: **8~10%** (+20~50% 증가) --- ## 🛠️ 실행 계획 ### Step 1: config.py 수정 ```python # Priority 1+2+3 적용 SELL_STOP_LOSS_PCT = -0.07 SELL_PROFIT_TAKE_PCT = 0.15 SELL_TRAILING_STOP_LT10PCT_STEP = 0.05 MIN_HOLDING_DAYS_BEFORE_TRAILING = 10 ``` ### Step 2: 백테스트 재실행 ```bash python main.py ``` ### Step 3: 결과 비교 ```bash python analyze_backtest_log.py ``` ### Step 4: A/B 테스트 - 기존 설정 vs 개선 설정 비교 - 승률, MDD, Sharpe Ratio 종합 평가 --- ## ⚠️ 주의사항 1. **오버핏팅 방지**: - 2022~2023 데이터만으로 최적화되었으므로, 2024~2025 Out-of-Sample 테스트 필요 2. **거래 빈도 감소 가능성**: - 필터 강화 시 매수 기회 감소 → 총 거래 횟수 하락 - Trade-off: 승률 ↑, 거래 횟수 ↓ 3. **슬리피지 및 수수료**: - 실제 거래 시 0.3~0.5% 추가 비용 발생 - 백테스트 결과보다 실제 수익률은 10~15% 낮을 수 있음 --- ## 📌 결론 **가장 큰 개선 포인트**: 1. STOP_LOSS -5% → -7% (손실 40% 감소) 2. PROFIT_TAKE 10% → 15% (수익 30% 증가) 3. TRAILING_STOP 조기 청산 방지 (수익 15% 증가) **예상 총 수익률**: - 11.84% → **20~25%** (약 2배 증가) 지금 바로 `config.py`를 수정하고 백테스트를 재실행하여 검증하세요!