2026-05-28 15:34:50 +09:00
|
|
|
# 전략 파라미터 변경 제안 — 2026-05-28
|
|
|
|
|
|
2026-05-28 20:39:37 +09:00
|
|
|
**상태: 승인 후 적용 완료 (2026-05-28)**
|
2026-05-28 15:34:50 +09:00
|
|
|
**작성: Claude Evening / 2026-05-28**
|
|
|
|
|
|
2026-05-28 20:39:37 +09:00
|
|
|
적용 결과:
|
|
|
|
|
- 제안 1 적용: `ENTRY_START = "09:20"`.
|
|
|
|
|
- 제안 2 적용: `app/main.py`에서 `check_entry()` 호출 시 `sector` 전달.
|
|
|
|
|
- `ticker_sectors` 캐시와 보수적인 종목명 기반 회피 섹터 힌트 추가.
|
|
|
|
|
- `FORCE_EXIT = "14:50"` 변경 없음.
|
|
|
|
|
- 검증: compile check, 대우건설/건설업 섹터 추론 확인, 학습 파이프라인 end-to-end 실행 통과.
|
|
|
|
|
|
2026-05-28 15:34:50 +09:00
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 제안 1: ENTRY_START 추가 지연 — 09:15 → 09:20
|
|
|
|
|
|
|
|
|
|
### 현재값
|
|
|
|
|
```python
|
|
|
|
|
ENTRY_START = "09:15"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 제안값
|
|
|
|
|
```python
|
|
|
|
|
ENTRY_START = "09:20"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 근거
|
|
|
|
|
|
|
|
|
|
2026-05-27 제안을 적용해 09:05 → 09:15로 변경했으나, 오늘(05/28) 09:15:21(세미파이브), 09:15:30(LG디스플레이)에서 2건 모두 SL.
|
|
|
|
|
|
|
|
|
|
| 날짜 | 09:05~09:10 SL | 09:15~09:20 SL | 구간 손실 |
|
|
|
|
|
|------|----------------|----------------|-----------|
|
|
|
|
|
| 05/27 | 4건 (09:05 이전 기준) | — | -183,969 |
|
|
|
|
|
| 05/28 | — | 2건 | -88,364 |
|
|
|
|
|
|
|
|
|
|
이틀 연속으로 장 시작 직후 5분 내 진입 건이 전패. 변동성 돌파 신호가 개장 직후에는
|
|
|
|
|
호가 스프레드 확대 + 단기 허수 갭에 의해 오염된다는 패턴이 반복 확인됨.
|
|
|
|
|
|
|
|
|
|
09:20 이후 구간 오늘 성과: 10거래 / 승률 40% / -76,572원
|
|
|
|
|
→ SL 비율이 낮아지고 TP 비율이 높아지는 경향.
|
|
|
|
|
|
|
|
|
|
### 기대 효과
|
|
|
|
|
- 장 초반 허수 브레이크아웃 추가 필터링
|
|
|
|
|
- 일 손실의 50%+ 를 차지하는 09:15~09:20 구간 회피
|
|
|
|
|
|
|
|
|
|
### 위험
|
|
|
|
|
- 09:15~09:20 진짜 모멘텀 신호 포기 가능
|
|
|
|
|
- 근거: 이틀(2일) 데이터 → 여전히 통계적으로 불충분
|
|
|
|
|
|
|
|
|
|
### 증거 충분성
|
|
|
|
|
**불충분하나 패턴 일관성 높음.** 2거래일 연속 동일 구간 전패. 즉시 적용 권장.
|
|
|
|
|
|
|
|
|
|
### 구현
|
|
|
|
|
`app/config.py` 1줄 수정 — 승인 후 즉시 반영 가능.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 제안 2: 섹터 필터 버그 수정 (main.py 수정 필요)
|
|
|
|
|
|
|
|
|
|
### 현상
|
|
|
|
|
`daily_context.json`에 `avoid_sectors: ["건설업", ...]` 명시에도 불구하고
|
|
|
|
|
대우건설(건설업, 047040)이 09:29에 진입됨. 손실 -31,752원.
|
|
|
|
|
|
|
|
|
|
### 근본 원인
|
|
|
|
|
|
|
|
|
|
**`app/main.py:736`** 의 `check_entry()` 호출:
|
|
|
|
|
```python
|
|
|
|
|
# 현재 코드
|
|
|
|
|
signal = self.strategy.check_entry(
|
|
|
|
|
ticker=ticker,
|
|
|
|
|
name=name,
|
|
|
|
|
current_price=current,
|
|
|
|
|
)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`sector=` 인수가 누락되어 기본값 `""` 전달.
|
|
|
|
|
`app/strategy/volatility_breakout.py:173`:
|
|
|
|
|
```python
|
|
|
|
|
if sector and any(s in sector for s in avoid): # sector가 ""이면 항상 스킵
|
|
|
|
|
```
|
|
|
|
|
→ **avoid_sectors 필터가 현재 완전히 비작동 상태**.
|
|
|
|
|
|
|
|
|
|
### 해결 방안
|
|
|
|
|
|
|
|
|
|
섹터 정보를 ticker에 매핑해야 한다. 두 가지 옵션:
|
|
|
|
|
|
|
|
|
|
**옵션 A (권장 — 즉시 구현 가능)**: 유니버스 선정 시 KIS 종목 정보 API로 섹터를 받아
|
|
|
|
|
`ticker_sectors` dict를 빌드하고 `check_entry` 호출 시 전달.
|
|
|
|
|
|
|
|
|
|
**옵션 B (단순)**: 섹터 체크를 `check_entry` 내부가 아닌 main.py 루프에서 직접 수행.
|
|
|
|
|
`ticker_sectors` dict가 없는 경우 universe 필터 단계에서 종목별 섹터 정보를 저장.
|
|
|
|
|
|
|
|
|
|
### 제안 수정 (옵션 A)
|
|
|
|
|
|
|
|
|
|
`app/main.py` 수정 — **별도 승인 필요**.
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
# main.py 유니버스 빌드 시 섹터 저장 (기존 코드 확장)
|
|
|
|
|
# self.ticker_sectors: dict[str, str] = {}
|
|
|
|
|
|
|
|
|
|
# check_entry 호출 변경
|
|
|
|
|
signal = self.strategy.check_entry(
|
|
|
|
|
ticker=ticker,
|
|
|
|
|
name=name,
|
|
|
|
|
current_price=current,
|
|
|
|
|
sector=self.ticker_sectors.get(ticker, ""),
|
|
|
|
|
)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 증거 충분성
|
|
|
|
|
**버그 확인됨.** 코드 레벨 확증. 수정 즉시 효과 발휘.
|
|
|
|
|
|
|
|
|
|
### 리스크
|
2026-05-28 20:39:37 +09:00
|
|
|
- main.py 수정은 사용자 승인 후 적용 완료.
|
|
|
|
|
- 섹터 데이터 미확보 시 공백이 될 수 있어 `ticker_sectors` 캐시와 보수적 종목명 기반 힌트를 함께 적용함.
|
2026-05-28 15:34:50 +09:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 우선순위 권고
|
|
|
|
|
|
|
|
|
|
| 순위 | 제안 | 난이도 | 즉시 적용 |
|
|
|
|
|
|------|------|--------|-----------|
|
2026-05-28 20:39:37 +09:00
|
|
|
| 1 | 섹터 필터 버그 수정 | 중간 (main.py) | 적용 완료 |
|
|
|
|
|
| 2 | ENTRY_START → 09:20 | 낮음 (config.py) | 적용 완료 |
|
2026-05-28 15:34:50 +09:00
|
|
|
|
2026-05-28 20:39:37 +09:00
|
|
|
두 제안 모두 사용자 승인 후 반영 완료.
|
2026-05-28 15:34:50 +09:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-05-28 20:39:37 +09:00
|
|
|
## 검토 항목 (적용 후)
|
2026-05-28 15:34:50 +09:00
|
|
|
|
2026-05-28 20:39:37 +09:00
|
|
|
- [x] `ticker_sectors` 캐시 추가.
|
|
|
|
|
- [x] `check_entry()`에 sector 전달.
|
|
|
|
|
- [x] ENTRY_START 09:20 적용.
|
|
|
|
|
- [ ] ENTRY_START 09:20 적용 후 최소 3거래일 관찰.
|