2.9 KiB
2.9 KiB
전략 제안서 — 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()에서 해당 종목이 목표가 아래로 내려오기 전까지 진입을 차단한다.
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원 |
승인 조건
volatility_breakout.py내 돌파 목표가 변수(target) 접근 확인.TIME/FORCE청산 후 같은 신호 재사용 경로 확인.- 수동 코드 검토 후 적용.
FORCE_EXIT = "14:50" 변경 없음. SL 우선순위 변경 없음.