shuim
a0973812fb
fix: 매수 차단·백테스트 왜곡 유발한 버그 5종 수정
수개월간 매수 0건 + 백테스트가 손실로 보이던 근본 원인들을 수정.
- ADX 발산(mean_reversion_strategy, run_backtest): Wilder 평활에 /period
누락으로 ADX가 100 초과 발산 → 실서비스 SIDEWAYS 게이트(ADX<20) 영구
무력화. 공식 복원(표준 Wilder와 대수적으로 동일 검증).
- 백테스트 워밍업(run_backtest): 국면판정 220봉을 start_date부터 세서
14개월 미만 백테스트의 ~90%가 강제 BEAR → 가짜 손실. start_date 340일
전부터 프리로드하고 성과는 sim_start_date부터만 집계. CAGR 분모도 워밍업
제외한 실제 거래일로 수정. → 최근1년 -0.33%→+6.95%, 가산성 회복.
- ML HOLD 게이트(trade_executor): 신뢰도 무관 매수 차단 → 데이터 부족으로
ML이 실패(conf=0)한 HOLD까지 모든 매수를 막던 것을 conf>=0.6 조건부로.
- 빈 Redis 추천 캐시(swing/scheduler): 빈 캐시를 '히트'로 처리해 DB 폴백을
건너뛰던 것을 recommendations_by_rule 비면 DB 폴백하도록.
- alembic 로깅(env.py, main.py): lifespan의 alembic upgrade가 fileConfig로
앱 로거를 꺼 startup 이후 로그 전멸 → 스킵(스키마는 create_all 담당).
검증: code-verifier 통과(실전 경로 CONFIRMED 버그 없음), walk-forward 6/9구간
양(+)·과적합 아님(조건부 견고). 서바이버십 편향은 별도 이슈로 검증 진행 중.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HBmzf1HDnvFHLraJ8eaaKJ
2026-09-16 10:03:56 +09:00
..
2026-04-06 18:15:13 +09:00
2026-09-16 10:03:56 +09:00
2026-03-27 14:47:49 +09:00
2026-03-27 14:47:49 +09:00
2026-02-24 13:31:23 +09:00
2026-03-27 14:47:49 +09:00
2026-04-03 11:44:14 +09:00
2026-03-26 16:05:41 +09:00
2026-04-09 08:42:57 +09:00
2026-03-27 14:47:49 +09:00
2026-03-26 16:05:41 +09:00
2026-02-22 17:23:20 +09:00
2026-03-26 16:05:41 +09:00
2026-04-02 11:28:15 +09:00
2026-03-06 10:45:51 +09:00
2026-03-27 21:40:01 +09:00
2026-04-03 11:44:14 +09:00
2026-03-27 14:47:49 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-04-03 11:44:14 +09:00
2026-09-16 10:03:56 +09:00
2026-04-03 11:44:14 +09:00
2026-09-16 10:03:56 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-06 19:10:39 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-06 19:10:39 +09:00
2026-03-26 16:05:41 +09:00
2026-03-07 13:16:01 +09:00
2026-03-26 16:05:41 +09:00
2026-03-27 14:47:49 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-06 20:46:08 +09:00
2026-04-06 13:16:15 +09:00
2026-09-16 10:03:56 +09:00
2026-03-26 16:05:41 +09:00
2026-03-27 14:47:49 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-03-26 16:05:41 +09:00
2026-02-26 14:40:12 +09:00
2026-03-26 16:05:41 +09:00