1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
# Trading Platform — TODO
> Last updated: 2026-04-01
## Current State
- **298 tests**, lint clean, production-ready 인프라
- 8 strategies, 6 services, full monitoring/CI/CD stack
- **트레이딩 전략 업그레이드 필요** — 아래 상세
---
## Trading Strategy Upgrade Plan
### Phase 1: 백테스터 현실화 (최우선)
현재 백테스트 결과는 슬리피지/수수료 미포함으로 **실제 수익과 큰 차이**가 있음. 이것부터 수정해야 전략 개선의 효과를 정확히 측정 가능.
#### 1-1. 슬리피지 + 수수료 모델링
- **파일:** `backtester/simulator.py`
- **현재:** 시그널 가격 그대로 체결, 수수료 0
- **수정:** 매수 시 `price * (1 + slippage_pct)`, 매도 시 `price * (1 - slippage_pct)`
- 수수료: `cost = price * quantity * fee_pct` (maker: 0.05%, taker: 0.1%)
- 슬리피지를 주문 크기에 비례하게 (대형 주문 → 더 큰 슬리피지)
- **설정:** `BacktestConfig`에 `slippage_pct`, `maker_fee_pct`, `taker_fee_pct` 추가
#### 1-2. 손절/익절 자동 실행
- **파일:** `backtester/simulator.py`
- **현재:** 시그널로만 매매, 스탑 없음
- **수정:** 각 포지션에 stop_loss, take_profit 가격 추적
- 매 캔들마다 `high >= take_profit` 또는 `low <= stop_loss` 체크 → 자동 청산
- `engine.py`에서 캔들 처리 시 시뮬레이터에 현재 가격 전달
#### 1-3. 공매도 지원
- **파일:** `backtester/simulator.py`
- **현재:** 매도는 보유 수량 내에서만 가능
- **수정:** `allow_short: bool` 설정, 공매도 시 음수 포지션 허용
- 공매도 수수료 (borrow fee) 추가
#### 1-4. Walk-Forward Analysis
- **파일:** `backtester/engine.py` (신규 클래스)
- **현재:** 전체 데이터로 백테스트 → 과적합 위험
- **수정:** `WalkForwardEngine` 클래스
- 데이터를 N개 구간으로 분할
- 각 구간: in-sample (파라미터 최적화) → out-of-sample (검증)
- 최종 결과는 out-of-sample 구간만 합산
- 파라미터 최적화: grid search 또는 random search
#### 1-5. 메트릭 정확도 개선
- **파일:** `backtester/metrics.py`
- Sharpe/Sortino를 per-trade가 아닌 **일별 수익률 기반**으로 계산
- Risk-free rate 설정 추가 (기본 5%)
- Recovery Factor (총수익 / 최대 drawdown) 추가
- 최대 연속 손실 횟수 추가
- 인트라 트레이드 drawdown (진입 후 최저점) 계산
---
### Phase 2: 전략 공통 인프라
모든 전략에 적용할 공통 기능. 개별 전략 개선 전에 인프라를 먼저 구축.
#### 2-1. ATR 기반 동적 손절/익절
- **파일:** `strategies/base.py` + 각 전략
- **현재:** 어떤 전략도 손절/익절을 설정하지 않음
- **수정:** `BaseStrategy`에 `calculate_stop_loss(candle, atr)` 메서드 추가
- ATR (Average True Range) 유틸리티 함수 (`shared/` 또는 `strategies/indicators/`)
- 손절: entry - ATR * multiplier, 익절: entry + ATR * reward_ratio
- Signal에 `stop_loss`, `take_profit` 필드 추가 (`shared/models.py`)
#### 2-2. 추세/횡보 레짐 필터 (ADX)
- **파일:** `strategies/indicators/adx.py` (신규)
- ADX (Average Directional Index) 계산 유틸리티
- ADX > 25 = 추세장, ADX < 20 = 횡보장
- 각 전략이 레짐에 따라 동작 변경:
- 추세 추종 전략 (MACD, EMA): ADX < 20이면 시그널 무시
- 평균 회귀 전략 (RSI, Bollinger, Grid): ADX > 30이면 시그널 무시
#### 2-3. 볼륨 확인 필터
- **파일:** 각 전략
- **현재:** 모든 전략이 볼륨을 무시 (RSI, MACD, EMA 등)
- **수정:** 시그널 발생 시 해당 캔들의 볼륨이 최근 N개 평균 대비 일정 비율 이상인지 확인
- 볼륨 < 평균의 50%면 시그널 무시 (유동성 부족)
- 볼륨 > 평균의 200%면 시그널 가중치 증가
#### 2-4. 시그널 강도 (Conviction Score)
- **파일:** `shared/models.py` Signal + 각 전략
- **현재:** 시그널은 BUY/SELL/quantity만 있음
- **수정:** Signal에 `conviction: float` (0.0~1.0) 필드 추가
- RSI 5 → conviction 0.9, RSI 28 → conviction 0.3
- MACD 히스토그램이 0에서 먼 크로스 → 높은 conviction
- Combined 전략에서 conviction 기반 가중치 사용
- RiskManager에서 conviction 기반 포지션 사이징
#### 2-5. 지표 라이브러리
- **디렉토리:** `strategies/indicators/` (신규)
- 재사용 가능한 기술 지표 함수:
- `atr(highs, lows, closes, period)` — Average True Range
- `adx(highs, lows, closes, period)` — Average Directional Index
- `ema(series, period)` — Exponential Moving Average
- `sma(series, period)` — Simple Moving Average
- `rsi(closes, period)` — RSI
- `bollinger_bands(closes, period, num_std)` — Bollinger
- `macd(closes, fast, slow, signal)` — MACD
- `volume_sma(volumes, period)` — Volume SMA
- 각 전략에서 직접 계산하지 않고 공통 라이브러리 사용
- 테스트: 각 지표에 대한 unit test
---
### Phase 3: 개별 전략 고도화
Phase 1-2 완료 후 각 전략을 전문가 수준으로 업그레이드.
#### 3-1. RSI 전략 개선
- [ ] RSI 다이버전스 감지 (가격 신고가 + RSI 하락 = 약세 다이버전스)
- [ ] ADX 레짐 필터 적용 (추세장에서는 RSI 매수 신호 무시)
- [ ] RSI 강도별 conviction score (RSI 5 vs RSI 28)
- [ ] ATR 기반 손절/익절
- [ ] 볼륨 확인 필터
#### 3-2. MACD 전략 개선
- [ ] 히스토그램 크로스오버 + MACD 제로라인 크로스오버 구분
- [ ] MACD 다이버전스 감지
- [ ] ADX 추세 확인 (ADX < 20이면 시그널 무시)
- [ ] 제로라인으로부터 거리 기반 시그널 강도
- [ ] ATR 기반 손절
#### 3-3. Grid 전략 개선
- [ ] ADX 기반 레짐 필터 (추세장 진입 차단)
- [ ] 동적 그리드 재설정 (실현 변동성 기반 범위 조정)
- [ ] 그리드 외 이탈 시 전 포지션 청산 + 알림
- [ ] 볼륨 프로파일 기반 비균등 그리드 간격
#### 3-4. Bollinger Bands 전략 개선
- [ ] 스퀴즈 감지 (밴드 압축 → 브레이크아웃 대비)
- [ ] %B 지표 활용 (밴드 내 위치 0~1)
- [ ] RSI 확인 (하단 밴드 터치 + RSI < 30 = 강한 매수)
- [ ] 볼륨 스파이크 확인
#### 3-5. EMA Crossover 전략 개선
- [ ] ADX > 25 필터 (강한 추세만 진입)
- [ ] 풀백 진입 (크로스 후 단기 EMA로 되돌림 시 진입)
- [ ] 50 SMA 위/아래 필터 (장기 추세 방향 확인)
- [ ] 볼륨 확인
#### 3-6. VWAP 전략 개선
- [ ] 일중 리셋 (매일 00:00 UTC에 VWAP 재계산)
- [ ] VWAP 표준편차 밴드 추가 (1σ, 2σ)
- [ ] ATR 기반 deviation threshold (고정값 대신 변동성 적응형)
- [ ] 세션 필터 (저유동성 시간대 진입 차단)
#### 3-7. Volume Profile 전략 개선
- [ ] HVN/LVN (고/저볼륨 노드) 식별
- [ ] 세션 기반 프로파일 리셋
- [ ] POC를 동적 지지/저항선으로 활용
- [ ] 볼륨 델타 (매수량 - 매도량) 추적
#### 3-8. Combined 전략 개선
- [ ] Sub-strategy conviction score 반영
- [ ] Sub-strategy 간 상관관계 행렬 계산 → 중복 시그널 감쇄
- [ ] 적응형 가중치 (최근 win rate 기반 동적 가중치 조정)
- [ ] 포트폴리오 집중도 제한
---
### Phase 4: 리스크 관리 고도화
#### 4-1. 포트폴리오 레벨 리스크
- [ ] 전체 노출도 제한 (총 포지션 가치 / 잔고 비율)
- [ ] 포지션 간 상관관계 계산 → 실효 리스크 산출
- [ ] VaR (Value at Risk) 계산 — 95% 신뢰 구간
#### 4-2. 동적 포지션 축소
- [ ] Drawdown이 일정 수준 넘으면 포지션 크기 자동 축소
- [ ] 연속 손실 N회 시 거래 일시 중단 → Telegram 알림
- [ ] 시간대별 리스크 조정 (주말, 공휴일 축소)
#### 4-3. 시나리오 분석
- [ ] 과거 극단 이벤트 (FTX 사태, Luna 등)에 대한 포트폴리오 영향 시뮬레이션
- [ ] 유동성 리스크 체크 (주문 크기 vs 호가창 깊이)
---
## Priority & Effort
| Phase | 내용 | 예상 작업량 | 영향 |
|-------|------|------------|------|
| **Phase 1** | 백테스터 현실화 | 1-2일 | **최대** — 이것 없이는 전략 평가 불가 |
| **Phase 2** | 전략 공통 인프라 | 1-2일 | **높음** — 모든 전략의 기반 |
| **Phase 3** | 개별 전략 고도화 | 3-5일 | 중간 — 수익률 직접 개선 |
| **Phase 4** | 리스크 관리 고도화 | 2-3일 | 높음 — 손실 방지 |
**권장 순서: Phase 1 → Phase 2 → Phase 4 → Phase 3**
(전략 개선보다 리스크 관리가 더 중요 — 돈을 벌기 전에 잃지 않는 게 먼저)
---
## Previously Completed (Infrastructure)
모든 인프라 항목 완료 (27개): SQLAlchemy, Alembic, structlog, Telegram, Prometheus/Grafana/Loki, CI/CD, FastAPI, multi-exchange, Redis consumer groups, realized PnL, bearer auth, 298 tests.
|