수동 타점(logos_trades.json) 흐름에 맞춘 순차 매매 로직을 추가하고, python simulation.py 실행 시 로고스 백테스트·HTML을 생성한다. 규칙 탐색·BB 안전장치 개선과 함께 reports HTML은 gitignore로 제외한다. Co-authored-by: Cursor <cursoragent@cursor.com>
224 lines
7.3 KiB
Markdown
224 lines
7.3 KiB
Markdown
# 로고스(Logos) 매매 타점 전략 설계
|
||
|
||
BB predicate 탐색(`discovered_rules`)과 **분리**된, 차트 구조·추세·과열을 우선하는 **3분 현물** 전략입니다.
|
||
수동 타점(`logos_trades.json`)은 이 전략의 **교사 데이터(벤치마크)** 로 사용합니다.
|
||
|
||
---
|
||
|
||
## Plan (계획)
|
||
|
||
### 목적
|
||
|
||
- **저점 근처 매수**, **고점·과열에서 매도**, **추격 매수·바닥 매도**를 시스템적으로 배제한다.
|
||
- 3분봉 실행, 1시간·일봉으로 **방향 필터**만 거는 MTF 구조를 유지한다.
|
||
- 체결은 **엣지(전환) 1회** + **쿨다운·최소 봉 간격**으로 휩소를 줄인다.
|
||
|
||
### 목표 KPI (백테스트·실거래 공통)
|
||
|
||
| KPI | 목표 |
|
||
|-----|------|
|
||
| 매도가 ≥ 직전 매수가 비율 | 60% 이상 |
|
||
| 월 거래 횟수 (3분 WLD) | 8~40회 (과다 체결 방지) |
|
||
| 최대 연속 손실 매도 | 3회 이하 |
|
||
| 수동 로고스 타점 일치율 | ±3봉(9분), ±2% 가격 이내 50% 이상 (캘리브레이션) |
|
||
|
||
### 전략 원칙 (5가지)
|
||
|
||
1. **구조 우선**: 지표 한 개보다 «바닥 형성 → 눌림 → 가속 → 과열» 순서를 본다.
|
||
2. **가치 매수만**: 하단 돌파·망치·밴드 하단 구간. 상단 구간 단독 매수 금지.
|
||
3. **익절은 강도로**: 밴드 상단 돌파만으로 팔지 않고, **위치·캔들·RSI·거래량**이 맞을 때만.
|
||
4. **추세 보유**: 눌림(예: 378)은 **상위 추세가 살아 있으면** 버틴다.
|
||
5. **현물 순환**: 공매도 없음. 매도 = 보유 청산 또는 익절 후 재진입 대기.
|
||
|
||
---
|
||
|
||
## Do (실행 구조)
|
||
|
||
### 아키텍처 (4계층)
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph L1 [L1 레짐 1D/1H]
|
||
R1[추세: up / range / down]
|
||
R2[일목: 구름 위·아래]
|
||
end
|
||
subgraph L2 [L2 구조 3m/15m/60m]
|
||
S1[스윙 고저 pivot]
|
||
S2[고저점 상승 HL / 하락 LH]
|
||
end
|
||
subgraph L3 [L3 트리거 3m]
|
||
B1[매수 A: 바닥·반등]
|
||
B2[매수 B: 추세 눌림]
|
||
X1[매도: 익절·과열]
|
||
X2[매도: 손절]
|
||
end
|
||
subgraph L4 [L4 체결]
|
||
E1[엣지 트리거]
|
||
E2[쿨다운·최소봉격]
|
||
end
|
||
L1 --> L2 --> L3 --> L4
|
||
```
|
||
|
||
### L1. 레짐 필터 (1D + 1H)
|
||
|
||
| 레짐 | 매수 | 매도(익절) |
|
||
|------|------|------------|
|
||
| **up** | A·B 허용 | 전량·분할 허용 |
|
||
| **range** | A만 (바닥형), B 제한 | 분할 위주 |
|
||
| **down** | A만 소량, B 금지 | 보유 시 손절·약익절만 |
|
||
|
||
판별(기존 `strategy.get_trend` 활용):
|
||
|
||
- 1H·1D MA 정배열/역배열 + 갭
|
||
- 보조: 일봉 `!ichi_below_cloud` (매수), 구름 아래 매수 금지
|
||
|
||
### L2. 구조 (스윙)
|
||
|
||
| 간격 | pivot order (3분봉 개수) | 용도 |
|
||
|------|--------------------------|------|
|
||
| 3m | 40 (~2시간) | 주요 고저 |
|
||
| 3m | 15 (~45분) | 보조 눌림 |
|
||
| 15m | 20 | 중기 저항 |
|
||
|
||
정의:
|
||
|
||
- **스윙 저점**: 좌우 `order` 봉보다 `Low`가 낮은 봉
|
||
- **스윙 고점**: 좌우 `order` 봉보다 `High`가 높은 봉
|
||
- **HL(상승)**: 직전 스윙 저점 < 현재 스윙 저점
|
||
- **과열 고점**: 종가가 120봉 최고가 대비 97% 이상
|
||
|
||
### L3-A. 매수 트리거
|
||
|
||
#### A. 바닥·투매 종료 (5/18 340 유형)
|
||
|
||
**엣지**로만 진입. 아래 **모두** 충족:
|
||
|
||
| # | 조건 |
|
||
|---|------|
|
||
| A1 | 3m `bb_pos` < 0.35 또는 `bb_zone_bottom` |
|
||
| A2 | `cross_up_lower` **또는** `hammer` (전봉 대비 신규) |
|
||
| A3 | RSI(14) < 42 **그리고** 전봉 대비 RSI 상승 |
|
||
| A4 | 120봉 최저가 대비 종가 ≤ 103% (진정한 바닥권) |
|
||
| A5 | 레짐 ≠ down 또는 일봉 구름 아래 아님 |
|
||
|
||
**금지**: `bb_pos` ≥ 0.55 단독, `bb_zone_top`, 당일 `shooting_star` + 고점권
|
||
|
||
#### B. 추세 눌림 재진입 (5/23 392, 5/25 427 유형)
|
||
|
||
**엣지** + 레짐 **up**:
|
||
|
||
| # | 조건 |
|
||
|---|------|
|
||
| B1 | 1H 추세 up, 3m `bb_zone_low` 또는 `cross_up_lower` |
|
||
| B2 | 직전 스윙 고점 대비 3~12% 조정(눌림 깊이) |
|
||
| B3 | 3m `bb_pos` < 0.50 |
|
||
| B4 | 15m `ichi_tk_bull` 또는 전환선 지지 |
|
||
| B5 | 마지막 매도 후 ≥ 20봉(1시간) |
|
||
|
||
**금지**: 450+ 구간 «급등 후 재추격»(5/26 04:00 유형) — `bb_pos` > 0.65 신규 매수 차단
|
||
|
||
### L3-B. 매도 트리거
|
||
|
||
#### C. 구조적 익절 (5/23 00:30, 5/24 464 유형)
|
||
|
||
**엣지** + 보유 중:
|
||
|
||
| # | 조건 |
|
||
|---|------|
|
||
| C1 | 3m **스윙 고점** 확정(피벗) **또는** `cross_up_upper` |
|
||
| C2 | `bb_pos` ≥ **0.65** (저점 익절 방지) |
|
||
| C3 | **NOT** (`hammer` OR `bb_zone_bottom` 동일 봉) |
|
||
| C4 | 종가 ≥ BB 중심(MA) |
|
||
|
||
분할: 1차 C만 충족 시 50% 익절, 2차 조건(D) 시 나머지 (구현 옵션).
|
||
|
||
#### D. 과열·불꽃 익절 (5/26 603 유형)
|
||
|
||
| # | 조건 |
|
||
|---|------|
|
||
| D1 | 3m `bb_pos` ≥ 0.90 **또는** 20봉 누적 상승률 ≥ 8% |
|
||
| D2 | 거래량 > 20봉 평균 × 1.5 |
|
||
| D3 | `shooting_star` 또는 윗꼬리 비율 > 0.45 |
|
||
|
||
→ **전량 매도** 우선.
|
||
|
||
#### E. 손절 (필수)
|
||
|
||
| # | 조건 |
|
||
|---|------|
|
||
| E1 | 3m `cross_down_lower` **엣지** |
|
||
| E2 | 또는 매수가 대비 -3% (설정값) |
|
||
|
||
**금지**: `bb_pos` < 0.40 에서 `cross_up_upper` 단독 매도 (5/26 01:48 유형)
|
||
|
||
### L4. 체결 규칙 (공통)
|
||
|
||
| 항목 | 기본값 | 설명 |
|
||
|------|--------|------|
|
||
| `SIGNAL_EDGE_ONLY` | true | False→True 봉만 |
|
||
| `TRADE_MIN_GAP_BARS` | 5 | 체결 후 15분 |
|
||
| `BUY_COOLDOWN_SEC` | 1800 | 매수 간 30분 |
|
||
| `SELL_COOLDOWN_SEC` | 900 | 매도 간 15분 |
|
||
| `SELL_MIN_BB_POS` | 0.40 | 이보다 낮으면 C 매도 금지 |
|
||
| `BUY_MAX_BB_POS_CHASE` | 0.55 | 이보다 높으면 value 트리거 없이 매수 금지 |
|
||
|
||
우선순위(보유 중): **E 손절 > D 과열 > C 익절**
|
||
|
||
---
|
||
|
||
## 수동 타점과의 매핑
|
||
|
||
| 수동 타점 | 전략 분류 | 자동화 핵심 조건 |
|
||
|-----------|-----------|------------------|
|
||
| 5/18 340 매수 | A 바닥 | A1~A4 + hammer |
|
||
| 5/23 00:30 445 매도 | C+D | pivot 고점 + bb_pos≥0.65 |
|
||
| 5/23 392 매수 | B 눌림 | up + bb_zone_low + HL |
|
||
| 5/24 464 매도 | C | cross_up_upper + 과열 |
|
||
| 5/25 427 매수 | B | 급등 전 마지막 눌림, bb_pos<0.5 |
|
||
| 5/26 603 매도 | D | bb_pos·거래량·급등률 |
|
||
| 5/28 420 매수 | A′ 급락 바닥 | 1일 -20% 후 첫 3m 저점 |
|
||
| 5/29 441 매도 | C | 반등 실패·중심선 이탈 |
|
||
|
||
---
|
||
|
||
## Check (검토)
|
||
|
||
### 백테스트 절차
|
||
|
||
1. `python simulation.py` — 로고스 전략 체결 HTML (`reports/wld_bb_simulation.html`)
|
||
2. `python simulation.py benchmark` — 수동 정답 참고 (`reports/wld_logos_benchmark.html`)
|
||
|
||
### 리스크
|
||
|
||
| 리스크 | 완화 |
|
||
|--------|------|
|
||
| 눌림 구간 손실 확대 | E 손절, down 레짐 매수 축소 |
|
||
| 급등 후 재매수 | `BUY_MAX_BB_POS_CHASE` |
|
||
| 바닥에서 익절 | `SELL_MIN_BB_POS` + 망치 동봉 매도 금지 |
|
||
| 거래 과다 | 엣지 + 쿨다운 + pivot 최소 간격 |
|
||
|
||
---
|
||
|
||
## Act (개선)
|
||
|
||
### 자동 전략 (코드 고정)
|
||
|
||
벤치마크 1위였던 S9 로직을 `logos_strategy.py` 상단 상수로만 유지합니다.
|
||
`logos_best_policy.json`, `LogosPolicy`, `logos-fit` 제거.
|
||
|
||
1. **Phase 3**: `USE_LOGOS_LIVE` 실거래 스위치
|
||
2. **Phase 4**: 눌림/바닥 분기 강화
|
||
|
||
---
|
||
|
||
## 코드 위치
|
||
|
||
| 파일 | 역할 |
|
||
|------|------|
|
||
| `docs/LOGOS_STRATEGY.md` | 본 설계서 |
|
||
| `logos_strategy.py` | 신호·체결 엔진 |
|
||
| `logos_trades.json` | 수동 벤치마크 |
|
||
| `logos_chart.py` | `simulation.py` 와 동일 진입 |
|
||
| `simulation.py` | 기본 실행 = 로고스 전략 HTML |
|
||
| `simulation.py benchmark` | 수동 정답 참고 HTML |
|