WLD DeepCoin 단계별 구조 재편 및 설정·문서 통합

로고스/루트 레거시를 제거하고 deepcoin 패키지·scripts 01~05 CLI·docs/reference로
데이터·GT·분석·매칭·운영 단계를 정리했다. config와 .env 기반 설정, trade_anaysis.html 동기화 포함.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-30 22:58:25 +09:00
parent e631a5701f
commit b52d61b777
76 changed files with 11552 additions and 4567 deletions

View File

@@ -1,223 +0,0 @@
# 로고스(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 |

12
docs/README.md Normal file
View File

@@ -0,0 +1,12 @@
# docs
| 경로 | 용도 | Git |
|------|------|-----|
| [reference/](reference/) | 로드맵·구조·GT 가이드·기법 명세 (`trade_anaysis.html`) | 추적 |
| [02_ground_truth/](02_ground_truth/) | 정답 차트 HTML | 제외 (재생성) |
| [03_analysis/](03_analysis/) | enrich CSV·GT 스냅샷·점검 HTML | 제외 |
| [04_matching/](04_matching/) | 규칙·유사도 (예정) | 제외 |
| [05_ops/](05_ops/) | 운영 로그 (예정) | 제외 |
| [charts/](charts/) | BB 등 차트 HTML | 제외 |
실행·경로 상세: [reference/STRUCTURE.md](reference/STRUCTURE.md)

View File

@@ -0,0 +1,33 @@
# 정답 타점 (Ground Truth)
1달(기본 45일) 3분봉 구간에서 **사후적 최적 스윙** 매수·매도 라벨을 만듭니다.
실시간 매매 전략이 아니라, 이후 전략 검증·학습용 **정답 데이터**입니다.
## Plan
- **목적**: 차트 상 의미 있는 저점 매수·고점 매도를 JSON으로 고정
- **방법**: 고점(major swing)에서 1~2회 매도 · 저점(ZigZag+BB)에서 분할 매수 · 삼각형 크기=비중
## Do
```bash
python scripts/02_ground_truth.py # ground_truth_trades.json
python scripts/05_chart_truth.py # JSON + HTML 차트
```
## Check
| 환경 변수 | 기본 | 설명 |
|-----------|------|------|
| `CHART_LOOKBACK_DAYS` | 365 | 조회 일수 (`.env` 기본 1년) |
| `GT_MIN_SWING_PCT` | 4.0 | ZigZag 최소 스윙(%) |
| `GT_PIVOT_ORDER` | 20 | 국소 극값 반경(봉) |
| `GT_MIN_BARS_BETWEEN` | 30 | 체결 간격(3분봉 30봉=90분) |
| `GT_MIN_LEG_PCT` | 8.0 | 한 구간 최소 수익(%) |
| `GT_MAX_ROUND_TRIPS` | 24 | 최대 라운드트립 |
| `GT_SELECTION_MODE` | split_buy_peak_sell | `split_buy_peak_sell` 등 (`.env` 참고) |
## Act
- JSON 수동 수정 후 `scripts/05_chart_truth.py` 재실행으로 차트 갱신
- 파라미터 조정으로 타점 수·크기 튜닝

29
docs/reference/ROADMAP.md Normal file
View File

@@ -0,0 +1,29 @@
# DeepCoin 로드맵 (WLD)
## 완료
| 단계 | 내용 | 실행 |
|------|------|------|
| 01 데이터 | 1년치 3분~일봉 `coins.db` 적재 | `python scripts/01_download.py` |
| 02 Ground Truth | 매수·매도 정답 타점 JSON | `python scripts/02_ground_truth.py` |
| 03 분석 준비 | 8TF 기술적 지표·패턴 enrich | `python scripts/03_analyze_enrich.py` |
## 진행 예정
| 단계 | 내용 | 패키지 | 실행 (예정) |
|------|------|--------|-------------|
| 03b | GT 타점 3분~일봉 기술적 상태 분석 (CLI 준비, 전량 CSV 재실행 필요) | `deepcoin/analysis/` | `python scripts/03_analyze_trades.py` |
| 04 | GT에 가장 근접한 기술적 상태 선택 | `deepcoin/matching/` | `python scripts/04_match_rules.py` |
| 05 | 1분 단위 상태 확인·실거래 | `deepcoin/ops/` | `python scripts/05_run_monitor.py` |
## 디렉터리
구조: [STRUCTURE.md](STRUCTURE.md)
```text
scripts/01~05_*.py 단계별 CLI
data/ coins.db, ground_truth/, ops/
docs/reference/ 가이드·명세
docs/02~05, charts/ 단계별 산출물 (HTML·CSV)
deepcoin/ 단계별 Python 패키지
```

View File

@@ -0,0 +1,52 @@
# DeepCoin 프로젝트 구조
단계별 PM 기준으로 디렉터리·진입점을 정리합니다. **실행은 `scripts/`만 사용**합니다.
**문서·산출물은 `docs/` 한 곳**에서 관리합니다.
- `docs/reference/` — 사람이 읽는 가이드·명세 (Git 추적)
- `docs/02_*` ~ `docs/charts/` — 스크립트가 만든 HTML·CSV (로컬 재생성)
## 단계 ↔ 실행 ↔ 산출물
| 단계 | 목적 | 스크립트 | 패키지 | 산출물 |
|------|------|----------|--------|--------|
| 01 | 1년치 봉 적재 | `scripts/01_download.py` | `deepcoin/data/` | `data/coins.db` |
| 02 | Ground Truth 타점 | `scripts/02_ground_truth.py` | `deepcoin/ground_truth/` | `data/ground_truth/*.json`, `docs/02_ground_truth/` |
| 03 | 8TF 지표 enrich | `scripts/03_analyze_enrich.py` | `deepcoin/analysis/` | `docs/03_analysis/latest/` |
| 03b | GT 타점 MTF 스냅샷 | `scripts/03_analyze_trades.py` | `deepcoin/analysis/` | `docs/03_analysis/general_analysis_trades.csv` |
| 04 | GT 근접 규칙 선택 | `scripts/04_match_rules.py` | `deepcoin/matching/` | `docs/04_matching/` (예정) |
| 05 | 차트·1분 모니터 | `scripts/05_chart_*.py`, `05_run_monitor.py` | `deepcoin/ops/` | `docs/charts/`, `docs/05_ops/` |
## 디렉터리 트리
```text
DeepCoin/
├── .env, config.py
├── scripts/ # 단계별 CLI
├── deepcoin/ # 로직 패키지
├── data/ # DB, GT JSON, ops 상태
└── docs/
├── README.md
├── reference/ # 가이드 (Git)
│ ├── ROADMAP.md
│ ├── STRUCTURE.md
│ ├── GROUND_TRUTH.md
│ └── trade_anaysis.html
├── 02_ground_truth/ # 산출물
├── 03_analysis/
├── 04_matching/
├── 05_ops/
└── charts/
```
## `deepcoin/analysis/` 모듈 역할
| 파일 | 역할 |
|------|------|
| `general_analysis_enrich_runner.py` | 03 enrich |
| `general_analysis_runner.py` | 03b GT 스냅샷 |
| `general_analysis_pipeline.py` | 타점별 MTF 조립 |
| `general_analysis_*` (기타) | 지표·패턴·리포트 |
`reports/` 폴더는 `docs/`로 통합되었습니다. 코드의 `REPORTS_*` 이름은 `paths.py`에서 `docs/*`로 연결되는 별칭입니다.

View File

@@ -0,0 +1,394 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8"/>
<title>MTF 기술적 분석 기법 목록 (trade_anaysis)</title>
<style>
body { font-family: "Malgun Gothic", Arial, sans-serif; margin: 28px 36px; background: #f5f5f5; color: #1e293b; line-height: 1.55; }
h1 { font-size: 1.45rem; border-bottom: 2px solid #64748b; padding-bottom: 8px; }
h2 { font-size: 1.15rem; margin-top: 32px; color: #334155; }
h3 { font-size: 1rem; margin-top: 20px; color: #475569; }
p.meta { color: #64748b; font-size: 0.9rem; }
.box { background: #fff; border: 1px solid #cbd5e1; border-radius: 8px; padding: 16px 20px; margin: 16px 0; }
table { width: 100%; border-collapse: collapse; font-size: 0.88rem; background: #fff; margin: 12px 0 20px; }
th, td { border: 1px solid #e2e8f0; padding: 8px 10px; text-align: left; vertical-align: top; }
th { background: #e2e8f0; font-weight: 600; white-space: nowrap; }
tr:nth-child(even) td { background: #f8fafc; }
.tag { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 0.78rem; margin-right: 4px; }
.done { background: #dcfce7; color: #166534; }
.partial { background: #fef9c3; color: #854d0e; }
.todo { background: #f1f5f9; color: #475569; }
ul.compact { margin: 6px 0; padding-left: 20px; }
ul.compact li { margin: 4px 0; }
code { background: #f1f5f9; padding: 1px 5px; border-radius: 3px; font-size: 0.85em; }
.matrix td, .matrix th { text-align: center; font-size: 0.82rem; }
.yes { color: #15803d; font-weight: 600; }
</style>
</head>
<body>
<h1>MTF 기술적 분석 기법 목록 및 구현 상태</h1>
<p class="meta">
목적: 3분~일봉 OHLCV 유입 시 <strong>모든 기법을 봉 단위로 검증</strong> (매수·매도 타점과 무관) ·
간격: <strong>3, 5, 10, 15, 30, 60, 240분 + 일봉(1440)</strong> ·
데이터: <code>data/coins.db</code> (WLD) ·
문서: <code>docs/reference/trade_anaysis.html</code>
</p>
<div class="box">
<h3>구현 상태 범례</h3>
<ul class="compact">
<li><span class="tag done">완료</span><code>general_analysis_enrich_bars(df, interval)</code> CSV 컬럼 또는 기존 Plotly 차트.</li>
<li><span class="tag partial">부분</span><strong>Plotly/HTML UI만</strong> 없음. 수치·플래그는 CSV에 존재.</li>
<li><span class="tag todo">미구현</span> — 전용 UI·리포트 페이지 없음 (아래 2건).</li>
<li><span class="tag partial">구현완료·전량재실행</span> — 코드·CLI는 준비됨. 산출 CSV가 GT 전체를 반영하려면 <code>--limit</code> 없이 재실행.</li>
</ul>
</div>
<div class="box">
<h3>실행 및 산출물</h3>
<ul class="compact">
<li><strong>03 enrich (권장)</strong>: <code>python scripts/03_analyze_enrich.py</code>
· 모듈: <code>deepcoin/analysis/general_analysis_enrich_runner.py</code></li>
<li><strong>산출</strong>: <code>docs/03_analysis/latest/m3_latest.csv</code><code>d1_latest.csv</code>
(간격당 약 <strong>247컬럼</strong>, 최근 N봉 — <code>GA_DEFAULT_TAIL_EXPORT</code> 기본 <strong>200</strong>, <code>--tail-export</code>로 변경)</li>
<li><strong>점검</strong>: <code>docs/03_analysis/general_analysis_capability.html</code></li>
<li><strong>03b GT 타점 MTF</strong>: <code>python scripts/03_analyze_trades.py</code>
<code>docs/03_analysis/general_analysis_trades.csv</code>
· 리포트: <code>docs/03_analysis/general_analysis_report.html</code></li>
<li><strong>주의</strong>: <code>--limit N</code>은 테스트용. 전체 GT(약 450타점) 반영 시 <code>--limit</code> 없이 실행.</li>
</ul>
</div>
<div class="box">
<h3>분석 시점 정의</h3>
<ul class="compact">
<li>봉 분석: 각 간격의 <strong>완성봉 시계열</strong>에 지표·패턴 컬럼 부여 (전 봉 + lookback 롤링).</li>
<li>타점 분석(선택): <code>dt</code> 직전 완성봉만 사용 (<code>merge_asof</code> backward).</li>
<li>3분봉 lookback 롤링은 성능상 최근 6000봉 구간만 패턴·VP·파동·하모닉 갱신 (<code>CONTEXT_TAIL_ROWS</code>).</li>
</ul>
</div>
<h2>1. DB 보유 간격</h2>
<table class="matrix">
<thead>
<tr>
<th>간격</th><th>3분</th><th>5분</th><th>10분</th><th>15분</th>
<th>30분</th><th>60분</th><th>240분</th><th>일봉</th>
</tr>
</thead>
<tbody>
<tr>
<th>enrich 대상</th>
<td class="yes">O</td><td class="yes">O</td><td class="yes">O</td><td class="yes">O</td>
<td class="yes">O</td><td class="yes">O</td><td class="yes">O</td><td class="yes">O</td>
</tr>
<tr>
<th>DB 적재</th>
<td class="yes">O</td><td class="yes">O</td><td class="yes">O</td><td class="yes">O</td>
<td class="yes">O</td><td class="yes">O</td><td class="yes">O</td><td class="yes">O</td>
</tr>
<tr>
<th>대략 기간</th>
<td>~12개월</td><td>~12개월</td><td>~12개월</td><td>~12개월</td>
<td>~12개월</td><td>~12개월</td><td>~12개월</td><td>~12개월</td>
</tr>
<tr>
<th>비고</th>
<td colspan="8">1분봉은 DB 6개월만 있어 본 문서 범위 제외.</td>
</tr>
</tbody>
</table>
<h2>2. 파이프라인</h2>
<div class="box">
<ol>
<li><strong>입력</strong>: <code>mtf_bb.load_frames_from_db()</code> — 8개 간격 OHLCV</li>
<li><strong>enrich</strong>: <span class="tag done">완료</span> <code>general_analysis_enrich_bars(raw, interval, full_context=True)</code></li>
<li><strong>모듈 순서</strong>: <code>candle_features</code><code>indicators</code><code>candles</code><code>chart</code><code>context</code>(patterns/wave/volume/harmonic)</li>
<li><strong>MTF 합성</strong>: <span class="tag done">완료</span> <code>general_analysis_mtf_vote_latest()</code>, <code>ga_align_*</code></li>
<li><strong>시각화</strong>: <span class="tag partial">부분</span> <code>scripts/05_chart_*.py</code> 3분 6패널 · 8TF 타일·타점 미니차트 UI <span class="tag todo">미구현</span></li>
</ol>
</div>
<h2>3. 차트 분석 (Chart Analysis)</h2>
<table>
<thead>
<tr><th>방법</th><th>설명</th><th>구현</th><th>주요 컬럼 / 모듈</th></tr>
</thead>
<tbody>
<tr>
<td>캔들차트 (Candlestick)</td>
<td>OHLC + BB·일목 오버레이</td>
<td><span class="tag done">완료</span></td>
<td><code>scripts/05_chart_*.py</code>, <code>ga_chart_type_candle</code></td>
</tr>
<tr>
<td>선차트 (Line)</td>
<td>종가·MA·MACD 등 시계열</td>
<td><span class="tag done">완료</span> <span class="tag partial">UI</span></td>
<td><code>ga_chart_line_slope</code>, <code>ga_chart_line_slope_1</code> · Plotly 전용 선차트 없음</td>
</tr>
<tr>
<td>바차트 (Bar / OHLC Bar)</td>
<td>봉 범위·거래량 스파이크</td>
<td><span class="tag done">완료</span> <span class="tag partial">UI</span></td>
<td><code>ga_chart_bar_range_pct</code>, <code>ga_chart_vol_spike</code></td>
</tr>
<tr>
<td>Heikin-Ashi</td>
<td>노이즈 완화 캔들</td>
<td><span class="tag done">완료</span></td>
<td><code>ga_ha_*</code>, <code>ga_chart_ha_trend</code></td>
</tr>
<tr>
<td>Renko</td>
<td>ATR 브릭 방향</td>
<td><span class="tag done">완료</span></td>
<td><code>ga_chart_renko_dir</code>, <code>ga_chart_renko_up</code>, <code>ga_chart_renko_brick_up_ratio</code></td>
</tr>
<tr>
<td>Point &amp; Figure</td>
<td>박스 크기 기준 X/O 열</td>
<td><span class="tag done">완료</span></td>
<td><code>ga_chart_pnf_col</code></td>
</tr>
<tr>
<td>멀티 패널 (6패널)</td>
<td>BB·이격·Stoch·RSI·MACD</td>
<td><span class="tag done">완료</span></td>
<td><code>scripts/05_chart_*.py</code> 3분</td>
</tr>
<tr>
<td>MTF 타일 (Small Multiples)</td>
<td>8TF 나란히 Plotly</td>
<td><span class="tag todo">미구현</span></td>
<td>CSV 8TF 컬럼으로 대체 · <code>docs/03_analysis/latest/*_latest.csv</code></td>
</tr>
</tbody>
</table>
<h2>4. 패턴 분석 (Pattern Analysis)</h2>
<p>lookback 윈도우(<code>LOOKBACK_BARS</code>) 마지막 봉 기준. 롤링 적용: <code>general_analysis_apply_context_features</code>.</p>
<h3>4.1 반전 패턴</h3>
<table>
<thead>
<tr><th>패턴</th><th>구현</th><th>컬럼</th><th>권장 TF</th></tr>
</thead>
<tbody>
<tr><td>헤드앤숄더 / 역H&amp;S</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_head_shoulders</code>, <code>ga_pattern_inv_head_shoulders</code></td><td>60분~일봉</td></tr>
<tr><td>쌍봉 / 쌍바닥</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_double_top</code>, <code>ga_pattern_double_bottom</code></td><td>30분~일봉</td></tr>
<tr><td>트리플 탑/바닼</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_triple_top</code>, <code>ga_pattern_triple_bottom</code></td><td>60분~일봉</td></tr>
<tr><td>V자 반등 / 스파이크</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_v_bottom</code>, <code>ga_pattern_spike_top</code></td><td>5~60분</td></tr>
<tr><td>둥근 천장/바닼</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_rounding_top</code>, <code>ga_pattern_rounding_bottom</code></td><td>일봉</td></tr>
<tr><td>플래티어 (Rectangle)</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_rectangle</code></td><td>15분~240분</td></tr>
<tr><td>갭 / 아일랜드</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_gap_up/down</code>, <code>ga_pattern_island_top/bottom</code></td><td>60분~일봉</td></tr>
<tr><td>키리스톤 / 역키리스톤</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_keystone_bull</code>, <code>ga_pattern_keystone_bear</code></td><td>30분~일봉</td></tr>
</tbody>
</table>
<h3>4.2 지속 패턴</h3>
<table>
<thead>
<tr><th>패턴</th><th>구현</th><th>컬럼</th><th>권장 TF</th></tr>
</thead>
<tbody>
<tr><td>삼각수렴 (대칭/상승/하락)</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_triangle_sym/asc/desc</code></td><td>15분~240분</td></tr>
<tr><td>깃발 / 페넌트</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_flag_bull</code>, <code>ga_pattern_flag_bear</code></td><td>5~60분</td></tr>
<tr><td>웨지</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_wedge_rising</code>, <code>ga_pattern_wedge_falling</code></td><td>15분~60분</td></tr>
<tr><td>채널</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_channel_up</code>, <code>ga_pattern_channel_down</code></td><td>전 TF</td></tr>
<tr><td>박스권 + BB 스퀴즈</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_rectangle</code>, <code>ga_bb_squeeze</code></td><td>5~60분</td></tr>
<tr><td>컵앤핸들</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_cup_handle</code></td><td>일봉</td></tr>
<tr><td>측정된 움직임</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_measured_move</code></td><td>30분~일봉</td></tr>
<tr><td>패턴 요약 라벨</td><td><span class="tag done">완료</span></td><td><code>ga_pattern_label</code></td><td>전 TF</td></tr>
</tbody>
</table>
<h3>4.3 캔들 패턴</h3>
<table>
<thead>
<tr><th>패턴</th><th>구현</th><th>컬럼</th><th>권장 TF</th></tr>
</thead>
<tbody>
<tr><td>해머 / 유성 / 도지</td><td><span class="tag done">완료</span></td><td><code>ga_hammer</code>, <code>ga_shooting_star</code>, <code>ga_doji</code> + <code>candle_features</code></td><td>3~60분</td></tr>
<tr><td>장악형</td><td><span class="tag done">완료</span></td><td><code>ga_bullish_engulfing</code>, <code>ga_bearish_engulfing</code></td><td>5~60분</td></tr>
<tr><td>샛별형</td><td><span class="tag done">완료</span></td><td><code>ga_morning_star</code>, <code>ga_evening_star</code></td><td>15분~일봉</td></tr>
<tr><td>삼병 / 삼까마귀</td><td><span class="tag done">완료</span></td><td><code>ga_three_white_soldiers</code>, <code>ga_three_black_crows</code></td><td>15분~60분</td></tr>
<tr><td>피보나치 되돌림 근접</td><td><span class="tag done">완료</span></td><td><code>ga_fib_near_level</code></td><td>30분~일봉</td></tr>
</tbody>
</table>
<h2>5. 기술적 지표 (Technical Indicators)</h2>
<p>전 봉 시계열 컬럼. 레거시: <code>RSI</code>, <code>bb_pos</code>, <code>macd_*</code>, <code>stoch_*</code> 등.</p>
<h3>5.1 추세</h3>
<table>
<thead>
<tr><th>지표</th><th>구현</th><th>컬럼</th></tr>
</thead>
<tbody>
<tr><td>SMA / EMA / 골든·데드크로스</td><td><span class="tag done">완료</span></td><td><code>ga_sma_*</code>, <code>ga_golden_cross</code>, <code>ga_death_cross</code></td></tr>
<tr><td>MACD</td><td><span class="tag done">완료</span></td><td><code>macd_line</code>, <code>macd_signal</code>, <code>macd_hist</code></td></tr>
<tr><td>이격도</td><td><span class="tag done">완료</span></td><td><code>indicators</code> DI 5/20/60</td></tr>
<tr><td>ADX (+DI/-DI)</td><td><span class="tag done">완료</span></td><td><code>ga_adx_14</code>, <code>ga_plus_di</code>, <code>ga_minus_di</code></td></tr>
<tr><td>Parabolic SAR</td><td><span class="tag done">완료</span></td><td><code>ga_psar</code>, <code>ga_psar_bull</code>, <code>ga_psar_flip_bull/bear</code></td></tr>
<tr><td>Ichimoku</td><td><span class="tag done">완료</span></td><td><code>indicators</code> + <code>ga_ichi_trend</code></td></tr>
<tr><td>Linear Regression</td><td><span class="tag done">완료</span></td><td><code>ga_linreg_slope_20</code>, <code>ga_linreg_r2_20</code></td></tr>
<tr><td>VWAP</td><td><span class="tag done">완료</span></td><td><code>ga_vwap</code>, <code>ga_close_vs_vwap_pct</code> (누적 VWAP)</td></tr>
<tr><td>Supertrend</td><td><span class="tag done">완료</span></td><td><code>ga_supertrend_bull</code></td></tr>
</tbody>
</table>
<h3>5.2 모멘텀</h3>
<table>
<thead>
<tr><th>지표</th><th>구현</th><th>컬럼</th></tr>
</thead>
<tbody>
<tr><td>RSI</td><td><span class="tag done">완료</span></td><td><code>RSI</code>, <code>ga_rsi_delta_1</code></td></tr>
<tr><td>스토캐스틱</td><td><span class="tag done">완료</span></td><td><code>stoch_k</code>, <code>stoch_d</code>, <code>ga_stoch_k_delta_1</code></td></tr>
<tr><td>CCI</td><td><span class="tag done">완료</span></td><td><code>ga_cci_20</code>, <code>ga_cci_oversold/overbought</code></td></tr>
<tr><td>Williams %R</td><td><span class="tag done">완료</span></td><td><code>ga_williams_r</code>, <code>ga_williams_oversold/overbought</code></td></tr>
<tr><td>ROC</td><td><span class="tag done">완료</span></td><td><code>ga_roc_10</code></td></tr>
<tr><td>MFI</td><td><span class="tag done">완료</span></td><td><code>ga_mfi_14</code></td></tr>
<tr><td>Awesome Oscillator</td><td><span class="tag done">완료</span></td><td><code>ga_ao</code>, <code>ga_ao_bull</code>, <code>ga_ao_bear</code></td></tr>
<tr><td>RSI / MACD / Stoch 다이버전스</td><td><span class="tag done">완료</span></td><td><code>ga_rsi_*_div</code>, <code>ga_macd_*_div</code>, <code>ga_stoch_*_div</code></td></tr>
</tbody>
</table>
<h3>5.3 변동성</h3>
<table>
<thead>
<tr><th>지표</th><th>구현</th><th>컬럼</th></tr>
</thead>
<tbody>
<tr><td>볼린저 밴드</td><td><span class="tag done">완료</span></td><td><code>bb_pos</code>, <code>ga_bb_width_pct</code>, zone (<code>candle_features</code>)</td></tr>
<tr><td>ATR</td><td><span class="tag done">완료</span></td><td><code>ga_atr_14</code>, <code>ga_atr_pct</code></td></tr>
<tr><td>Keltner Channel</td><td><span class="tag done">완료</span></td><td><code>ga_keltner_mid/upper/lower</code>, <code>ga_keltner_pos</code></td></tr>
<tr><td>Donchian Channel</td><td><span class="tag done">완료</span></td><td><code>ga_donchian_pos</code></td></tr>
<tr><td>Historical Volatility</td><td><span class="tag done">완료</span></td><td><code>ga_hv_20</code>, <code>ga_hv_percentile</code></td></tr>
<tr><td>BB Squeeze</td><td><span class="tag done">완료</span></td><td><code>ga_bb_squeeze</code></td></tr>
</tbody>
</table>
<h3>5.4 거래량</h3>
<table>
<thead>
<tr><th>지표</th><th>구현</th><th>컬럼</th></tr>
</thead>
<tbody>
<tr><td>OBV + 다이버전스</td><td><span class="tag done">완료</span></td><td><code>ga_obv</code>, <code>ga_obv_slope_10</code>, <code>ga_obv_*_div</code></td></tr>
<tr><td>Volume MA ratio</td><td><span class="tag done">완료</span></td><td><code>ga_vol_ratio</code>, <code>ga_vol_ma20</code></td></tr>
<tr><td>VWAP deviation</td><td><span class="tag done">완료</span></td><td><code>ga_close_vs_vwap_pct</code></td></tr>
<tr><td>Accumulation/Distribution</td><td><span class="tag done">완료</span></td><td><code>ga_ad_line</code>, <code>ga_ad_slope_10</code></td></tr>
<tr><td>Chaikin Money Flow</td><td><span class="tag done">완료</span></td><td><code>ga_cmf_20</code></td></tr>
<tr><td>Volume Profile</td><td><span class="tag done">완료</span></td><td><code>ga_vp_poc</code>, <code>ga_vp_vah</code>, <code>ga_vp_val</code>, <code>ga_vp_in_value_area</code></td></tr>
</tbody>
</table>
<h2>6. 파동·시장 구조</h2>
<table>
<thead>
<tr><th>이론</th><th>구현</th><th>컬럼</th><th>비고</th></tr>
</thead>
<tbody>
<tr><td>다우 이론 (HH/HL/LH/LL)</td><td><span class="tag done">완료</span></td><td><code>ga_struct_*</code></td><td>피벗 기반</td></tr>
<tr><td>시장 구조 (BOS/CHoCH)</td><td><span class="tag done">완료</span></td><td><code>ga_struct_bos_*</code>, <code>ga_struct_choch</code></td><td></td></tr>
<tr><td>엘리어트 파동</td><td><span class="tag done">완료</span></td><td><code>ga_elliott_wave_count</code>, <code>ga_elliott_phase</code></td><td>라이트(스윙 수·단계)</td></tr>
<tr><td>Wyckoff</td><td><span class="tag done">완료</span></td><td><code>ga_wyckoff_phase</code>, <code>ga_wyckoff_spring</code>, <code>ga_wyckoff_utad</code></td><td>accumulation/distribution + spring/UTAD</td></tr>
<tr><td>일목 (구름)</td><td><span class="tag done">완료</span></td><td><code>ga_ichi_trend</code></td><td></td></tr>
<tr><td>피보나치</td><td><span class="tag done">완료</span></td><td><code>ga_fib_near_level</code></td><td>0/382/500/618/100/1618</td></tr>
<tr><td>하모닉 (Gartley/Bat)</td><td><span class="tag done">완료</span></td><td><code>ga_harmonic_gartley</code>, <code>ga_harmonic_bat</code>, <code>ga_harmonic_label</code></td><td>5피벗 비율</td></tr>
<tr><td>앤더류 피치포크</td><td><span class="tag done">완료</span></td><td><code>ga_pitchfork_bias</code>, <code>ga_pitchfork_dist_pct</code></td><td>3피벗 중앙선</td></tr>
</tbody>
</table>
<h2>7. MTF 합성</h2>
<table>
<thead>
<tr><th>방법</th><th>구현</th><th>컬럼 / 함수</th></tr>
</thead>
<tbody>
<tr><td>TF 가중 투표</td><td><span class="tag done">완료</span></td><td><code>general_analysis_mtf_vote_latest()</code><code>ga_vote_timing_buy/sell</code>, <code>ga_vote_trend_score</code></td></tr>
<tr><td>정렬 점수 (RSI)</td><td><span class="tag done">완료</span></td><td><code>ga_align_timing_buy_score</code>, <code>ga_align_timing_sell_score</code></td></tr>
<tr><td>상위 TF 추세 필터</td><td><span class="tag done">완료</span></td><td><code>ga_align_trend_score</code>, TF별 <code>ga_struct_trend</code></td></tr>
<tr><td>MTF 충돌 태그</td><td><span class="tag done">완료</span></td><td><code>ga_align_mtf_conflict</code></td></tr>
<tr><td>봉 간 Δ (T vs T-1)</td><td><span class="tag done">완료</span></td><td><code>ga_rsi_delta_1</code>, <code>ga_macd_hist_delta_1</code>, <code>ga_stoch_k_delta_1</code></td></tr>
</tbody>
</table>
<h2>8. 구현 단계 (현황)</h2>
<table>
<thead>
<tr><th>단계</th><th>내용</th><th>산출물</th><th>구현</th></tr>
</thead>
<tbody>
<tr><td>P0</td><td>8TF 봉 enrich + latest CSV</td><td><code>docs/03_analysis/latest/*_latest.csv</code></td><td><span class="tag done">완료</span></td></tr>
<tr><td>P1</td><td>기법 점검 HTML</td><td><code>docs/03_analysis/general_analysis_capability.html</code></td><td><span class="tag done">완료</span></td></tr>
<tr><td>P2</td><td>전 지표·거래량·변동성</td><td><code>general_analysis_indicators.py</code></td><td><span class="tag done">완료</span></td></tr>
<tr><td>P3</td><td>전 패턴·캔들</td><td><code>general_analysis_patterns.py</code>, <code>candles.py</code></td><td><span class="tag done">완료</span></td></tr>
<tr><td>P4</td><td>파동·VP·하모닉·MTF</td><td><code>wave</code>, <code>volume</code>, <code>harmonic</code>, <code>align</code></td><td><span class="tag done">완료</span></td></tr>
<tr><td>P5</td><td>GT 타점 wide CSV (03b)</td><td><code>docs/03_analysis/general_analysis_trades.csv</code></td><td><span class="tag partial">구현완료·전량재실행</span></td></tr>
<tr><td>P6</td><td>8TF Plotly 타일 · 타점 미니차트</td><td><code>trade_detail.html</code></td><td><span class="tag todo">미구현</span></td></tr>
<tr><td></td><td>04 규칙 매칭 · 05 1분 운영</td><td><code>scripts/04_match_rules.py</code>, <code>05_run_monitor.py</code></td><td><span class="tag todo">로드맵 예정</span></td></tr>
</tbody>
</table>
<h2>9. 코드베이스 매핑</h2>
<table>
<thead>
<tr><th>모듈</th><th>역할</th></tr>
</thead>
<tbody>
<tr><td><code>general_analysis_enrich_runner.py</code></td><td>8TF enrich 로직 · CLI: <code>scripts/03_analyze_enrich.py</code></td></tr>
<tr><td><code>general_analysis_pipeline.py</code></td><td><code>enrich_bars</code>, <code>snapshot_at_bar</code></td></tr>
<tr><td><code>general_analysis_indicators.py</code></td><td>추세·모멘텀·변동성·거래량·SAR·Keltner·AO·HV·Δ</td></tr>
<tr><td><code>general_analysis_candles.py</code></td><td>Heikin-Ashi, 단일·복수 봉 패턴</td></tr>
<tr><td><code>general_analysis_chart.py</code></td><td>Renko, P&amp;F, 선·바 파생</td></tr>
<tr><td><code>general_analysis_patterns.py</code></td><td>반전·지속 패턴 + 롤링 적용</td></tr>
<tr><td><code>general_analysis_wave.py</code></td><td>구조·엘리어트·Wyckoff·피보나치·피치포크</td></tr>
<tr><td><code>general_analysis_volume.py</code></td><td>Volume Profile POC/VAH/VAL</td></tr>
<tr><td><code>general_analysis_harmonic.py</code></td><td>Gartley, Bat</td></tr>
<tr><td><code>general_analysis_context.py</code></td><td>lookback 롤링 일괄 (patterns/wave/vp/harmonic)</td></tr>
<tr><td><code>general_analysis_align.py</code></td><td><code>ga_align_*</code>, <code>ga_vote_*</code></td></tr>
<tr><td><code>general_analysis_runner.py</code></td><td>GT 타점 wide CSV · CLI: <code>scripts/03_analyze_trades.py</code></td></tr>
<tr><td><code>indicators.py</code> / <code>candle_features.py</code></td><td>BB, 일목, RSI, MACD, Stoch, 이격도, zone</td></tr>
<tr><td><code>scripts/05_chart_*.py</code></td><td>3분 6패널 · ground truth 차트</td></tr>
</tbody>
</table>
<h2>10. 구현 집계</h2>
<table>
<thead>
<tr><th>구분</th><th>완료</th><th>부분 (UI만)</th><th>미구현</th></tr>
</thead>
<tbody>
<tr><td>차트 분석 (§3)</td><td>7</td><td>2 (선·바 Plotly)</td><td>1 (MTF 타일)</td></tr>
<tr><td>반전 패턴 (§4.1)</td><td>8</td><td>0</td><td>0</td></tr>
<tr><td>지속 패턴 (§4.2)</td><td>8</td><td>0</td><td>0</td></tr>
<tr><td>캔들 패턴 (§4.3)</td><td>5</td><td>0</td><td>0</td></tr>
<tr><td>추세 지표 (§5.1)</td><td>9</td><td>0</td><td>0</td></tr>
<tr><td>모멘텀 (§5.2)</td><td>8</td><td>0</td><td>0</td></tr>
<tr><td>변동성 (§5.3)</td><td>6</td><td>0</td><td>0</td></tr>
<tr><td>거래량 (§5.4)</td><td>6</td><td>0</td><td>0</td></tr>
<tr><td>파동·구조 (§6)</td><td>8</td><td>0</td><td>0</td></tr>
<tr><td>MTF 합성 (§7)</td><td>5</td><td>0</td><td>0</td></tr>
<tr><td><strong>합계</strong></td><td><strong>70</strong></td><td><strong>2</strong></td><td><strong>1</strong></td></tr>
</tbody>
</table>
<p class="meta">「부분」= CSV 수치는 있으나 전용 Plotly UI 없음. P5 「구현완료·전량재실행」= 코드·CLI 준비됨, GT 450건 전체 wide CSV는 <code>03_analyze_trades.py</code><code>--limit</code> 없이 실행해 갱신.</p>
<p class="meta" style="margin-top: 40px;">
문서 버전: 2026-05-30 (프로젝트 구조·CLI 동기화) · DeepCoin / WLD ·
<code>docs/reference/trade_anaysis.html</code> ·
DB: <code>data/coins.db</code> · GT: <code>data/ground_truth/ground_truth_trades.json</code> ·
enrich: <code>python scripts/03_analyze_enrich.py</code> ·
타점: <code>python scripts/03_analyze_trades.py</code> ·
약 247컬럼/TF · tail 기본 200봉 ·
UI 미구현: MTF 타일 Plotly, <code>trade_detail.html</code> ·
다음: 04 매칭, 05 운영 — <code>docs/reference/ROADMAP.md</code>
</p>
</body>
</html>