Commit Graph

13 Commits

Author SHA1 Message Date
5f0f839039 전략 취약점 15건 수정 (코드 리뷰 기반)
## CRITICAL/HIGH (S1-S8)
- S1: Aggressive 모드 %B 스케일링 캡 1.3 (BB 중앙선 위 매수 방지)
- S2: ML scaler train-only fit (데이터 누수 제거)
- S3: SIDEWAYS = ADX<20 AND slope≈0 (트렌드 초기 차단 해소)
- S4: EOD 청산 실패 시 재시도 + CRITICAL 로그
- S5: 일일 손실 한도에 미실현 P&L 포함
- S6: trailing stop 고점 매 사이클 갱신
- S7: 섹터 필터 미매핑 종목 "기타" 분류 (max 3 적용)
- S8: 스캐너 RSI 기준 25→46, BB 점수 -3%~+1.5% 구간

## MEDIUM (M1-M7)
- M1: 스캐너 최소 거래량 100만→10만주
- M2: ADX 히스테리시스 18/22 (국면 플리핑 방지)
- M3: 분할매도 최소 수익 1.0%→0.5%
- M4: ORB 갭 필터 4% + 레인지 폭 0.3% 최소
- M5: 쿨다운 스트릭 부분매도 시 미변경
- M6: MDD 강제매도 loss_tracker 기록 제거 (허위 ban 방지)
- M7: RSI Wilder 스무딩으로 통일

## 인프라/보안
- 인증 누락 엔드포인트 수정 (analysis, journals)
- nginx 보안 헤더 location 블록 누락 수정
- Alembic 마이그레이션 IF NOT EXISTS 가드 추가
- SellRequest/UsOrderRequest 입력 검증 강화
- 차트 네이버 폴백 추가 (DB 데이터 없을 때)
- 서버 이전 시 자동 DB 마이그레이션 + KRX 초기 수집
- CLAUDE.md 섹션 5.1 백테스트 값 동기화 (4%→6%, -6%→-7%)
- MAX_SWING_POSITIONS 25→20 (CLAUDE.md 준수)
- mdd_manager failed_count에서 skip 종목 제외

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:44:14 +09:00
844ee8944f fix: ADX 계산 버그 수정 + Crisis 손절 소급 적용
Some checks failed
CI/CD Pipeline / test-backend (push) Has been cancelled
CI/CD Pipeline / test-frontend (push) Has been cancelled
CI/CD Pipeline / build-and-push (push) Has been cancelled
1. mean_reversion_strategy.py: ADX 초기값을 sum→mean으로 변경
   — ADX가 252로 0-100 범위를 초과하던 버그 수정
   — SIDEWAYS 국면 감지가 정상 작동하도록 복원
   — _wilder_smooth() 함수는 변경하지 않음 (ATR/DM은 합산이 정상)

2. swing/exit_service.py: 고정비율 손절에 적응형 모드 손절값 반영
   — Crisis 모드 전환 시 기존 포지션에도 -3% 손절이 소급 적용됨
   — min(config값, adaptive값)으로 타이트한 쪽 선택

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 11:06:31 +09:00
de7921d270 fix: CRITICAL/HIGH 버그 30건 수정 + 전체 코드 주석 추가 + 중복 정리
## CRITICAL 수정 (20건)
- day_trading: global 선언 누락, loss_tracker 연동, ban 체크 추가
- trade_executor: BUY 체결가 order_price로 수정, remaining_pct 누적 계산
- risk_validator: get_current_price dict 파싱, MAX_POSITION_SIZE 동기화, DB 세션 누수
- risk_management/recommendations: date.today() → KST 변환
- mdd_manager: Lock 밖 executed_key 참조 수정
- correlation_filter: output → output2 키 수정
- portfolio: 해외 종목 USD/KRW 환율 적용 분리
- Sharpe Ratio 거래빈도 기반 연간화
- telegram_notifier: send_message() 공개 래퍼 추가
- position_manager: 앱 재시작 시 DB 포지션 복원
- swing exit_service: remaining_pct 조건 범위 수정
- run_backtest: original_qty 기반 remaining_pct 계산
- us_market_schedule: 2027년 미국 공휴일 추가
- Login.tsx: res.ok 검증 추가
- mean_reversion_strategy: RSI 로그 하드코딩 수정

## HIGH 수정 (10건)
- db_worker: DLQ 파일 백업 메커니즘 추가
- korea_investment_api: 만료 토큰 임의 연장 제거
- market_data: chart_cache 최대 100개 + TTL 만료
- main.py: rate_limit_store 1시간 미접근 IP 정리
- recommendations: fire-and-forget try/except 추가
- swing/scheduler: DB 세션 3개 분리
- Dashboard: wsMessages 전체 순회
- Layout: /health 엔드포인트 + 30초 폴링
- ml_ensemble: POST /train require_api_key 추가
- day_trading: record_trade_result_safe() 전환

## 코드 정리
- 프론트엔드: isUsStock, formatTime 공통 유틸 추출
- 백엔드: dead code 제거, 중복 import 통합
- MCP: JSON 파싱 헬퍼 추출 (~60줄 감소)
- 전체 ~100개 파일 한국어 주석 추가
- 테스트 13건 코드 기준 수정 (468 passed)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:05:41 +09:00
a477072bdc feat: 리스크 관리 강화 — 포트폴리오 락, MDD 단기전략 비활성화, 상관관계 필터
- portfolio.py: summary_lock으로 동시성 보호, apply_buy/apply_sell async화
- mdd_manager.py: MDD -10% 시 단기전략 비활성화 (is_short_term_strategy_paused)
- loss_tracker.py: DB 직접 접근 → db_worker 큐 기반 전환
- db_worker.py: upsert_stock_ban 태스크 추가
- correlation_filter.py: 섹터 집중도 + 피어슨 상관관계 검증 (CLAUDE.md 5.4)
- trade_executor.py: 상관관계 필터 통합, await 적용
- mean_reversion_strategy.py: config 값 타입 안전성 (float 변환)
- main.py/day_trading.py: MDD 체크 후 자동매매/데이트레이딩 차단

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:26:13 +09:00
096e087a9a 코드 변경 2026-03-10 09:49:03 +09:00
9104d1a0e7 fix(strategy): 평균회귀 전략 손실 원인 3가지 수정
1. check_buy_signal: 거래량 OR 조건 제거 + RSI 반등 확인 파라미터 추가
   - `vol_ok AND rsi<=50` 조건 삭제 (모멘텀 진입이 평균회귀 청산과 충돌)
   - `rsi_prev` 파라미터 추가: RSI가 반등 중일 때만 진입 허용
   - BULL 조건: RSI<=30 AND BB하단 AND 거래량>=100% AND (RSI 반등 중)

2. check_exit_signal: 1차 익절 RSI 상한 제거
   - `55 <= rsi <= 65` → `rsi >= 55` (빠른 반등 시 익절 기회 놓치지 않음)

3. check_exit_signal: ATR 손절 기준을 entry_price 기준으로 변경
   - `lowest_since_entry - 2.5*ATR` → `entry_price - 2.5*ATR`
   - 기존: 저점 기준이라 매수 직후 손절이 너무 느슨함
   - 개선: 진입가 기준으로 손절 즉시 발동 가능
2026-03-03 10:18:22 +09:00
ec02f27200 레디스 및 구조 수정중 2026-02-25 16:56:34 +09:00
6d9c9cb010 DB오류 처리중 2026-02-23 16:01:17 +09:00
81c16a8115 전략및 버그 수정 2026-02-22 23:51:10 +09:00
7867ced1b6 전략수정 및 버그수정 2026-02-22 23:29:22 +09:00
d49c6209cb 수정사항 2026-02-22 23:16:04 +09:00
7c0b4fb3fd perf: 수익 극대화 — R:R 2:1, RSI 완화, 동적 포지션 사이징
① check_exit_signal R:R 개선
  - 손절: -8% → -6% (타이트 손절로 손실 제한)
  - 1차 익절: RSI 45~50 → 55~65 (더 오래 홀드, 수익 극대화)
  - 2차 익절: 전량매도 → 50% 부분익절 + 트레일링 스탑 전환
  - trailing_high 파라미터 추가 (기존 호출부 호환 유지)
  - 예상 R:R: 1:1 → 약 2:1

② check_buy_signal RSI 완화
  - BULL RSI ≤ 25 → ≤ 30 (진입 기회 약 2배 증가)

③ calculate_position_size 동적 포지션 사이징
  - rsi, adx 파라미터 추가 (기존 호출부 호환 유지)
  - RSI ≤ 20: 1.5× (6%), RSI ≤ 25: 1.25× (5%), RSI ≤ 30: 1.0× (4%)
  - ADX < 15 (강한 횡보): +0.25× 추가 보너스 (최대 2× = 8%)
2026-02-22 20:26:31 +09:00
32e2263f0a 수정본 2026-02-22 17:23:20 +09:00