# 전략 제안서 — 2026-06-15 ## 요약 `TIME/FORCE` 청산 후에는 같은 당일 돌파 신호를 그대로 재사용하지 않고, 목표가 아래로 한 번 식었다가 다시 돌파할 때만 재진입하도록 필터 추가. **적용 완료:** 2026-06-15 --- ## 관찰된 문제 오늘(2026-06-15) 삼성전자(005930)가 두 차례 진입됐다. 1차는 09:20 돌파 진입이었고, 10:51 `TIME` 청산 후 60분 쿨다운이 끝난 11:51에 다시 진입됐다. | 진입 | 진입가 | 목표가(TP) | 차이 | 결과 | |---|---|---|---|---| | 1차 09:20 | 340,000 | 334,000 | -6,000 | TIME -21,681원 | | 2차 11:51 | 338,500 | 334,000 | -4,500 | TIME -1,422원 | 주의: 코드상 `목표가`는 익절가가 아니라 변동성 돌파 진입 기준가다. 따라서 `현재가 >= 목표가`를 무조건 막으면 전략 전체 진입이 중단된다. 실제 구조적 문제는 `TIME/FORCE` 청산 후에도 현재가가 목표가 위에 머물면, 새로운 돌파가 없는데도 쿨다운 종료만으로 같은 신호를 재사용해 재진입할 수 있다는 점이다. --- ## 제안 내용 ### TIME/FORCE 후 재돌파 조건 추가 `mark_final_exit()`에서 `TIME` 또는 `FORCE` 청산 종목을 재돌파 대기 목록에 넣고, `check_entry()`에서 해당 종목이 목표가 아래로 내려오기 전까지 진입을 차단한다. ```python if ticker in self._rebreak_required_tickers: if current_price >= target: result["reason"] = f"재돌파 대기 ({current_price:,} >= {target:,.0f})" return result self._rebreak_required_tickers.discard(ticker) ``` 적용 위치: `app/strategy/volatility_breakout.py` — `check_entry()` 함수 내 진입 조건 검사 직전. --- ## 기대 효과 - 오늘 기준: 삼성전자 2차 TIME 재진입(-1,422원) 방어 가능. - 같은 날 같은 돌파 신호를 쿨다운 후 반복 사용하는 구조 차단. - SL/TIME 낭비 거래 제거 → R:R 개선. --- ## 위험 및 주의사항 - 최초 돌파 진입은 기존과 동일하게 허용된다. - TIME/FORCE 뒤에도 가격이 목표가 아래로 내려갔다가 다시 돌파하면 재진입 가능하다. - 샘플: 오늘 1건의 명확한 재진입 사례 관찰. 통계적 근거로는 부족하나, 이는 파라미터 조정이 아니라 **논리적 버그 수정**에 해당하므로 소량 샘플로도 충분히 정당화됨. --- ## 증거 | 날짜 | 티커 | 진입가 | 목표가 | 차이 | 손익 | |---|---|---|---|---|---| | 2026-06-15 | 삼성전자(005930) 1차 | 340,000 | 334,000 | -6,000 | -21,681원 | | 2026-06-15 | 삼성전자(005930) 2차 | 338,500 | 334,000 | -4,500 | -1,422원 | --- ## 승인 조건 - [x] `volatility_breakout.py` 내 돌파 목표가 변수(`target`) 접근 확인. - [x] `TIME/FORCE` 청산 후 같은 신호 재사용 경로 확인. - [x] 수동 코드 검토 후 적용. **FORCE_EXIT = "14:50"** 변경 없음. SL 우선순위 변경 없음.