Files
Stock-trading-programming/reports/proposals/2026-06-15_strategy_proposal.md
T
2026-06-15 18:52:42 +09:00

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.pycheck_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 우선순위 변경 없음.