feat(spot): 2단계 인과 기법 분석 파이프라인 마무리
common/spot/futures 경로 정비, 캔들 데이터 모듈 복원, MTF 규칙 자동 저장 및 2단계 설계·최종 정리 문서를 반영해 3단계 착수 기반을 확정한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
539
README.md
539
README.md
@@ -1,13 +1,14 @@
|
||||
# DeepCoin
|
||||
|
||||
빗썸 KRW 마켓 암호화폐 캔들 데이터 수집 및 현물·선물 매매 전략 파이프라인.
|
||||
빗썸 KRW 마켓 암호화폐 캔들 데이터 수집 및 **현물**·**선물** 매매 전략 파이프라인.
|
||||
|
||||
기본 전략 축: **3분봉 현물**, 최근 **10년** 데이터. `data/`·`docs/`는 **공통(common)** · **현물(spot)** · **선물(futures)** 세 유형으로 구분합니다.
|
||||
|
||||
## 주요 기능
|
||||
|
||||
- 빗썸 Public API(v1) 기반 분·일·주·월봉 캔들 수집
|
||||
- SQLite(`coins.db`) 저장 — 테이블명 `{SYMBOL}_{인터벌코드}` (예: `BTC_60`, `BTC_10080`)
|
||||
- 2017-01-01~ 역방향 페이지네이션 수집 (기본 3650일·10년, **1분봉 포함**)
|
||||
- Ground Truth 기반 현물·선물 벤치마크 및 인과 기법 분석
|
||||
- 빗썸 Public API(v1) 기반 분·일·주·월봉 캔들 수집 (1분봉 포함)
|
||||
- SQLite 캔들 DB — 현물·선물 **공통** (`data/common/coins.db`)
|
||||
- Ground Truth(GT) 기반 현물·선물 벤치마크·인과 기법 분석·(예정) 실거래 운영
|
||||
|
||||
## 요구사항
|
||||
|
||||
@@ -18,297 +19,285 @@
|
||||
|
||||
```bash
|
||||
cd DeepCoin
|
||||
conda activate ncue
|
||||
conda activate ncue # 또는 xavis
|
||||
pip install -r requirements.txt
|
||||
cp .env.example .env # API 키 등 입력
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
`.env` 권장값 (현물 3분봉·10년):
|
||||
|
||||
```env
|
||||
SYMBOL=BTC
|
||||
DB_PATH=data/common/coins.db
|
||||
DOWNLOAD_DAYS=3650
|
||||
GT_INTERVAL_MIN=3
|
||||
GT_LOOKBACK_DAYS=3650
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 폴더 구조 (공통 · 현물 · 선물)
|
||||
|
||||
`data/`와 `docs/` 최상위는 동일하게 **common / spot / futures** 세 갈래입니다.
|
||||
|
||||
```text
|
||||
DeepCoin/
|
||||
├── src/deepcoin/ # 소스 코드
|
||||
├── scripts/ # 파이프라인 스크립트
|
||||
│
|
||||
├── data/
|
||||
│ ├── common/ # 공통 — 현물·선물 공유 리소스
|
||||
│ │ └── coins.db # 캔들 OHLCV (유일한 공유 DB)
|
||||
│ ├── spot/ # 현물 전용 데이터
|
||||
│ │ ├── ground_truth/ # 0단계 GT JSON
|
||||
│ │ ├── techniques/ # 2단계 기법 결과
|
||||
│ │ └── mtf/ # 2단계 MTF 규칙
|
||||
│ └── futures/ # 선물 전용 데이터
|
||||
│ ├── ground_truth/ # 0단계 선물 GT JSON
|
||||
│ ├── techniques/ # (예정) 2단계
|
||||
│ └── mtf/ # (예정) 2단계
|
||||
│
|
||||
└── docs/
|
||||
├── common/ # 공통 문서 (예정)
|
||||
├── spot/ # 현물 리포트·차트
|
||||
│ ├── 0_ground_truth/ # 0단계 GT 차트
|
||||
│ ├── 1_simulation/ # 1단계 sim 차트
|
||||
│ ├── 2_analysis/ # 2단계 분석 리포트
|
||||
│ └── 3_operations/ # 3단계 운영 (예정)
|
||||
└── futures/ # 선물 리포트·차트
|
||||
├── 0_ground_truth/ # 0단계 선물 GT 차트
|
||||
├── 1_simulation/ # (예정) 1단계
|
||||
├── 2_analysis/ # (예정) 2단계
|
||||
└── 3_operations/ # (예정) 3단계
|
||||
```
|
||||
|
||||
### 유형별 역할
|
||||
|
||||
| 유형 | `data/` | `docs/` | 설명 |
|
||||
|------|---------|---------|------|
|
||||
| **common** | `coins.db` | (예정) | 현물·선물이 공유하는 캔들 DB |
|
||||
| **spot** | GT·기법·MTF JSON | 단계별 HTML·리포트 | 현물 파이프라인 산출물 |
|
||||
| **futures** | 선물 GT JSON | 단계별 HTML·리포트 | 선물 파이프라인 산출물 |
|
||||
|
||||
테이블명: `{SYMBOL}_{인터벌}` (예: `BTC_3`, `BTC_1440`)
|
||||
|
||||
---
|
||||
|
||||
## 현물 파이프라인 전체 순서
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[common: 캔들 수집] --> B[spot 0단계: GT 타점]
|
||||
B --> C[spot 1단계: GT sim]
|
||||
C --> D[spot 2단계: 인과 기법]
|
||||
D --> E[spot 3단계: 실거래 운영]
|
||||
B --> F[futures 0단계: 선물 GT]
|
||||
```
|
||||
|
||||
| 순서 | 단계 | 유형 | 스크립트 | 산출물 |
|
||||
|------|------|------|----------|--------|
|
||||
| 0 | **사전** | common | `00_download.py` | `data/common/coins.db` |
|
||||
| 1 | **0단계** | spot | `0_ground_truth.py` | `data/spot/ground_truth/`, `docs/spot/0_ground_truth/` |
|
||||
| 2 | **1단계** | spot | `1_ground_truth_sim.py` | `docs/spot/1_simulation/` |
|
||||
| 3 | **2단계** | spot | `2_run_*.py`, `2_run_stage2_all.sh` | `data/spot/techniques/`, `docs/spot/2_analysis/` |
|
||||
| 4 | **3단계** | spot | (예정) | `docs/spot/3_operations/` |
|
||||
| — | **0단계** | futures | `0_ground_truth_futures.py` | `data/futures/ground_truth/`, `docs/futures/0_ground_truth/` |
|
||||
|
||||
### 권장 실행 명령 (현물 + 선물 0단계)
|
||||
|
||||
```bash
|
||||
conda activate ncue
|
||||
export PYTHONPATH=src
|
||||
|
||||
# ── common: 캔들 수집 ─────────────────────────────────────────
|
||||
python scripts/00_download.py # 증분 갱신
|
||||
python scripts/00_download.py --full # 최초 1회·재구축
|
||||
|
||||
# ── spot 0단계: GT 타점 (3분봉·10년) ──────────────────────────
|
||||
python scripts/0_ground_truth.py --interval 3 --days 3650 --tier all
|
||||
|
||||
# ── spot 1단계: GT sim (최근 3년) ───────────────────────────
|
||||
python scripts/1_ground_truth_sim.py --tier all
|
||||
|
||||
# ── spot 2단계: 인과 기법 (일괄) ──────────────────────────────
|
||||
bash scripts/2_run_stage2_all.sh
|
||||
|
||||
# ── futures 0단계: 선물 GT (현물 GT 기반) ───────────────────
|
||||
python scripts/0_ground_truth_futures.py --tier all
|
||||
|
||||
# ── spot 3단계: 실거래 운영 (구현 예정) ───────────────────────
|
||||
# python scripts/3_execute_live.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 단계별 상세
|
||||
|
||||
### common — 캔들 수집 (사전)
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| DB 경로 | `data/common/coins.db` (`DB_PATH`) |
|
||||
| 기본 동작 | DB 최신 시각 이후 증분 갱신 |
|
||||
| 전체 재수집 | `--full` |
|
||||
| 1분봉만 풀 다운 | `00_download_candles.py --full --days 3650 --intervals 1` |
|
||||
|
||||
### spot 0단계 — GT 타점
|
||||
|
||||
사후 최적 매매 타점. **실거래 불가**, 이후 단계의 정답지(기준선).
|
||||
|
||||
| 티어 | 포함 신호 |
|
||||
|------|-----------|
|
||||
| v1 | 스윙 B/S |
|
||||
| v2 | + 눌림목 B* |
|
||||
| v3 | + 돌파 B^ + 다이버전스 Bd/Sd |
|
||||
|
||||
| 산출물 | 경로 |
|
||||
|--------|------|
|
||||
| JSON | `data/spot/ground_truth/ground_truth_trades_v{1,2,3}.json` |
|
||||
| 차트 | `docs/spot/0_ground_truth/ground_truth_chart_v{1,2,3}.html` |
|
||||
|
||||
### spot 1단계 — GT sim (벤치마크)
|
||||
|
||||
GT 타점 완벽 추종 시 수익 상한선. 최근 3년·초기 20만 원.
|
||||
|
||||
| 산출물 | 경로 |
|
||||
|--------|------|
|
||||
| sim 차트 | `docs/spot/1_simulation/ground_truth_chart_sim_v{1,2,3}.html` |
|
||||
|
||||
### spot 2단계 — 인과 기법 분석
|
||||
|
||||
설계·목적·MTF 역할 등 상세: [`docs/spot/2_analysis/stage2_design_guide.md`](docs/spot/2_analysis/stage2_design_guide.md)
|
||||
|
||||
| 순서 | 스크립트 | 산출물 |
|
||||
|------|----------|--------|
|
||||
| 2-1 | `2_run_techniques.py` | `data/spot/techniques/`, `docs/spot/2_analysis/comparison_report.html` |
|
||||
| 2-2 | `2_run_causal_sim.py` | `docs/spot/2_analysis/causal_sim_report.html` |
|
||||
| 2-3 | `2_run_signal_type_align.py` | `docs/spot/2_analysis/signal_type_report.html` |
|
||||
| 2-4 | `2_run_mtf_analysis.py` | `data/spot/mtf/mtf_rules_v3.json`, `docs/spot/2_analysis/mtf_correlation_report.html` |
|
||||
|
||||
### spot 3단계 — 실거래 운영 (예정)
|
||||
|
||||
2단계 검증 전략(`composite_v3` + MTF)을 빗썸 현물 API에 연결.
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 캔들 동기화 | `00_download.py` 증분 갱신 |
|
||||
| 산출물 | `docs/spot/3_operations/` (예정) |
|
||||
|
||||
### futures 0단계 — 선물 GT
|
||||
|
||||
현물 GT를 롱·숏 4색 마커로 변환.
|
||||
|
||||
| 현물 GT | 선물 마커 | 의미 |
|
||||
|---------|-----------|------|
|
||||
| buy | L↑ / S↑ | 롱 진입 / 숏 청산 |
|
||||
| sell | L↓ / S↓ | 롱 청산 / 숏 진입 |
|
||||
|
||||
| 산출물 | 경로 |
|
||||
|--------|------|
|
||||
| JSON | `data/futures/ground_truth/ground_truth_trades_v{1,2,3}.json` |
|
||||
| 차트 | `docs/futures/0_ground_truth/ground_truth_chart_v{1,2,3}.html` |
|
||||
|
||||
선물 1~3단계는 `docs/futures/{1_simulation,2_analysis,3_operations}/` (예정).
|
||||
|
||||
---
|
||||
|
||||
## 환경 변수
|
||||
|
||||
| 변수 | 설명 | 기본값 |
|
||||
|------|------|--------|
|
||||
| `DB_PATH` | 공통 캔들 DB | `data/common/coins.db` |
|
||||
| `SYMBOL` | 코인 심볼 | `BTC` |
|
||||
| `COIN_NAME` | 코인 이름 | `비트코인` |
|
||||
| `DB_PATH` | SQLite 경로 | `coins.db` |
|
||||
| `DOWNLOAD_DAYS` | 전체 수집·차트 일수 (10년) | `3650` |
|
||||
| `DOWNLOAD_INTERVALS` | 인터벌 코드 목록 (`1`=1분봉 포함) | `1,3,5,10,15,30,60,240,1440,10080,43200` |
|
||||
| `BITHUMB_API_CANDLE_COUNT` | 요청당 캔들 수 (최대 200) | `200` |
|
||||
| `API_REQUEST_SLEEP_SEC` | API 호출 간격(초) | `0.35` |
|
||||
| `DOWNLOAD_DAYS` | 수집·차트 일수 | `3650` |
|
||||
| `GT_INTERVAL_MIN` | GT·기법 기준 인터벌(분) | `3` |
|
||||
| `GT_LOOKBACK_DAYS` | GT 타점 기간(일) | `3650` |
|
||||
| `GT_SIM_LOOKBACK_DAYS` | sim 거래 기간(일) | `1095` |
|
||||
| `GT_INITIAL_CASH_KRW` | sim 초기 자본(원) | `200000` |
|
||||
|
||||
인터벌 코드: 분봉은 분 단위 숫자, 일봉=`1440`, 주봉=`10080`, 월봉=`43200`
|
||||
### 경로 변수 요약
|
||||
|
||||
캔들 조회는 Public API이므로 API 키 없이도 동작합니다.
|
||||
| 용도 | 변수 예시 | 기본 경로 |
|
||||
|------|-----------|-----------|
|
||||
| spot GT JSON | `GROUND_TRUTH_FILE` | `data/spot/ground_truth/...` |
|
||||
| spot GT 차트 | `GROUND_TRUTH_CHART_V3_FILE` | `docs/spot/0_ground_truth/...` |
|
||||
| spot sim 차트 | `GROUND_TRUTH_CHART_SIM_V3_FILE` | `docs/spot/1_simulation/...` |
|
||||
| spot 2단계 | `TECHNIQUES_DIR` | `data/spot/techniques/` |
|
||||
| futures GT JSON | `GROUND_TRUTH_FUTURES_FILE` | `data/futures/ground_truth/...` |
|
||||
| futures GT 차트 | `GROUND_TRUTH_FUTURES_CHART_V3_FILE` | `docs/futures/0_ground_truth/...` |
|
||||
|
||||
전체 목록: `.env.example`
|
||||
|
||||
인터벌 코드: 분봉=분 단위 숫자, 일봉=`1440`, 주봉=`10080`, 월봉=`43200`
|
||||
|
||||
---
|
||||
|
||||
## 파이프라인
|
||||
## 현물 2단계 인과 기법 (39종)
|
||||
|
||||
**0단계**는 현물·선물 공통입니다. 이후 현물·선물은 각각 1~3단계로 독립 진행합니다.
|
||||
`src/deepcoin/techniques/` — 단일 33 + 복합 6, 미래 데이터 미사용.
|
||||
|
||||
| 구분 | 단계 | 내용 | 산출물 | 스크립트 |
|
||||
|------|------|------|--------|----------|
|
||||
| 사전 | — | 캔들 수집 | `coins.db` | `00_download.py` |
|
||||
|
||||
### 0단계 — GT 타점 (현물·선물 공통)
|
||||
|
||||
| 시장 | 산출물 | 스크립트 |
|
||||
|------|--------|----------|
|
||||
| 현물 | `docs/0_ground_truth/spot/` | `0_ground_truth.py` |
|
||||
| 선물 | `docs/0_ground_truth/futures/` | `0_ground_truth_futures.py` |
|
||||
|
||||
### 현물 단계
|
||||
|
||||
| 단계 | 내용 | 산출물 | 스크립트 |
|
||||
|------|------|--------|----------|
|
||||
| **현물 1단계** | GT sim (벤치마크) 현물 | `docs/spot/1_simulation/` | `1_ground_truth_sim.py` |
|
||||
| **현물 2단계** | 인과 기법 분석 (현물) | `docs/spot/2_analysis/` | `2_run_techniques.py` 등 |
|
||||
| **현물 3단계** | 현물 실거래 운영 | (예정) | (예정) |
|
||||
|
||||
### 선물 단계
|
||||
|
||||
| 단계 | 내용 | 산출물 | 스크립트 |
|
||||
|------|------|--------|----------|
|
||||
| **선물 1단계** | GT sim (벤치마크) 선물 | (예정) | (예정) |
|
||||
| **선물 2단계** | 인과 기법 분석 (선물) | (예정) | (예정) |
|
||||
| **선물 3단계** | 선물 실거래 운영 | (예정) | (예정) |
|
||||
|
||||
### 단계별 상세 설명
|
||||
|
||||
#### 사전 — 캔들 수집
|
||||
|
||||
빗썸 Public API로 분·일·주·월봉(1분봉 포함) OHLCV를 수집해 `coins.db`에 저장합니다. 이후 모든 단계는 이 DB만 참조하며, 현물·선물이 DB를 공유합니다.
|
||||
|
||||
- 기본 동작: DB 최신 시각 이후 **증분 갱신** (`00_download.py`)
|
||||
- 전체 재수집: `--full` 옵션 (최초 1회·DB 재구축 시)
|
||||
- 테이블명: `{SYMBOL}_{인터벌코드}` (예: `BTC_3`, `BTC_1440`)
|
||||
|
||||
#### 0단계 — GT 타점 (현물·선물 공통)
|
||||
|
||||
**Ground Truth(GT)** 는 사후적으로 “이상적인 매매 타점”을 정의한 기준 데이터입니다. 미래 캔들을 참조해 ZigZag 스윙·눌림목·돌파·다이버전스 타점을 찾으므로 **실거래에 직접 쓸 수 없고**, 이후 단계(벤치마크·기법 분석)의 **정답지(기준선)** 역할을 합니다.
|
||||
|
||||
| 티어 | 포함 신호 | 설명 |
|
||||
|------|-----------|------|
|
||||
| **v1** | 스윙 B/S | ZigZag 스윙 저점 매수·고점 매도만 |
|
||||
| **v2** | + 눌림목 B* | v1 + 상승 레그 중 눌림목 매수 |
|
||||
| **v3** | + 돌파 B^ + 다이버전스 Bd/Sd | v2 + 돌파 매수 + RSI 다이버전스 매수·매도 |
|
||||
|
||||
v3 신호 유형 6종:
|
||||
|
||||
| `signal_type` | 라벨 | 의미 |
|
||||
|---------------|------|------|
|
||||
| `swing_low` | B | ZigZag 스윙 저점 매수 |
|
||||
| `pullback` | B* | 상승 추세 눌림목 매수 |
|
||||
| `breakout` | B^ | 횡보·레인지 상단 돌파 매수 |
|
||||
| `div_bull` | Bd | RSI 상승 다이버전스 매수 |
|
||||
| `swing_high` | S | ZigZag 스윙 고점 매도 |
|
||||
| `div_bear` | Sd | RSI 하락 다이버전스 매도 |
|
||||
|
||||
**현물 0단계** (`0_ground_truth.py`): 3분봉·2017년~ 구간에서 GT를 생성하고, 매수/매도 마커가 표시된 인터랙티브 차트를 만듭니다.
|
||||
|
||||
- 데이터: `data/spot/ground_truth/ground_truth_trades_v{1,2,3}.json`
|
||||
- 차트: `docs/0_ground_truth/spot/ground_truth_chart_v{1,2,3}.html`
|
||||
|
||||
**선물 0단계** (`0_ground_truth_futures.py`): 동일한 현물 GT 신호를 선물 롱·숏 4색 마커로 변환합니다. 가격·시각은 현물 GT와 동일하며, 해석만 선물 관점으로 매핑합니다.
|
||||
|
||||
| 현물 GT | 선물 마커 | 의미 |
|
||||
|---------|-----------|------|
|
||||
| buy (B·B*·B^·Bd) | **L↑** | 롱 진입 (상방 매수) |
|
||||
| buy | **S↑** | 숏 청산 (하방 매도) |
|
||||
| sell (S·Sd) | **L↓** | 롱 청산 (상방 매도) |
|
||||
| sell | **S↓** | 숏 진입 (하방 매수) |
|
||||
|
||||
- 데이터: `data/futures/ground_truth/ground_truth_trades_v{1,2,3}.json`
|
||||
- 차트: `docs/0_ground_truth/futures/ground_truth_chart_v{1,2,3}.html`
|
||||
|
||||
#### 현물 1단계 — GT sim (벤치마크) 현물
|
||||
|
||||
0단계 GT 타점을 **그대로** 따라 매매했을 때의 수익을 재현하는 **현물 벤치마크**입니다. “GT를 완벽히 따랐다면 얼마를 벌 수 있었는가”를 측정하며, 이후 인과 기법·실거래 전략이 비교해야 할 **상한선(천장)** 입니다.
|
||||
|
||||
- 기간: 최근 **3년** (`GT_SIM_LOOKBACK_DAYS=1095`)
|
||||
- 초기 자본: **20만 원**
|
||||
- 매수 규칙: 총평가 구간별 현금 비율 상한 — 1억↑ 10% · 10억↑ 5% · 100억↑ 1%
|
||||
- 수수료: 편도 0.05% (`GT_TRADING_FEE_RATE`)
|
||||
- 산출물: `docs/spot/1_simulation/ground_truth_chart_sim_v{1,2,3}.html` (누적 수익 곡선·체결 마커 포함)
|
||||
|
||||
#### 현물 2단계 — 인과 기법 분석 (현물)
|
||||
|
||||
0단계 GT v3 타점을 **미래 데이터 없이** 재현할 수 있는 인과(causal) 매매 기법 39종을 실행하고, GT와 얼마나 맞는지 정량 평가합니다. 목표는 “실시간으로 쓸 수 있는 기법 조합이 GT 타점을 얼마나 포착하는가”를 파악하는 것입니다.
|
||||
|
||||
| 스크립트 | 분석 내용 | 산출물 |
|
||||
|----------|-----------|--------|
|
||||
| `2_run_techniques.py` | 39종 기법 전체 실행 + GT 정합 비교 | `comparison_report.html`, `data/spot/techniques/*.json` |
|
||||
| `2_run_signal_type_align.py` | B/B*/B^/Bd/S/Sd 유형별 recall | `signal_type_report.html` |
|
||||
| `2_run_mtf_analysis.py` | GT v3 × 10개 TF 피처 상관 (Cohen's d) | `mtf_correlation_report.html`, `data/spot/mtf/mtf_rules_v3.json` |
|
||||
|
||||
평가 지표:
|
||||
|
||||
- **recall**: GT 신호 대비 기법 신호가 허용 오차(`GT_ALIGN_TOLERANCE_BARS`) 내에 맞춘 비율
|
||||
- **score**: recall·정밀도·타점 거리를 종합한 정합 점수
|
||||
- **MTF 상관**: 일·주·월 등 상위 TF 지표가 GT 유형별로 어떤 패턴을 보이는지 통계 분석
|
||||
|
||||
#### 현물 3단계 — 현물 실거래 운영 (예정)
|
||||
|
||||
현물 2단계에서 검증된 인과 기법(또는 `composite_v3` 등 통합 기법)을 빗썸 현물 API에 연결해 **실제 주문·체결·리스크 관리**를 수행하는 단계입니다.
|
||||
|
||||
- 실시간 캔들 수신 및 인과 신호 생성
|
||||
- 주문 실행·포지션(보유 코인)·손절/익절 규칙
|
||||
- 1단계 GT sim 벤치마크 대비 실거래 성과 모니터링
|
||||
- 텔레그램 등 알림·로그·장애 복구
|
||||
|
||||
#### 선물 1단계 — GT sim (벤치마크) 선물 (예정)
|
||||
|
||||
선물 0단계 GT 타점(L↑/L↓/S↓/S↑)을 그대로 따라 롱·숏 포지션을 운용했을 때의 수익을 재현하는 **선물 벤치마크**입니다. 현물 1단계와 동일한 개념이나, 롱·숏 양방향·레버리지·청산 규칙 등 선물 고유 파라미터를 반영합니다.
|
||||
|
||||
- 0단계 선물 GT 4색 마커 기준 체결 시뮬레이션
|
||||
- 현물 1단계와 동일한 초기 자본·기간·수수료 체계 (선물 수수료·슬리피지 별도 정의 예정)
|
||||
- 산출물 예정: `docs/futures/1_simulation/`
|
||||
|
||||
#### 선물 2단계 — 인과 기법 분석 (선물) (예정)
|
||||
|
||||
현물 2단계와 동일한 인과 기법 39종(또는 선물 특화 변형)을 선물 GT v3 타점과 정합 평가합니다. 롱·숏 각각의 recall, MTF 필터, 신호 유형별 성능을 선물 관점에서 분석합니다.
|
||||
|
||||
- 선물 GT 6종 신호 ↔ 인과 기법 정합 리포트
|
||||
- 선물 MTF 상관 분석 및 규칙 추출
|
||||
- 산출물 예정: `docs/futures/2_analysis/`, `data/futures/techniques/`, `data/futures/mtf/`
|
||||
|
||||
#### 선물 3단계 — 선물 실거래 운영 (예정)
|
||||
|
||||
선물 2단계에서 검증된 전략을 실제 선물 거래 API에 연결해 롱·숏 포지션을 자동 운용하는 단계입니다.
|
||||
|
||||
- 실시간 인과 신호 → 롱/숏 진입·청산
|
||||
- 레버리지·증거금·청산가 모니터링
|
||||
- 선물 1단계 sim 벤치마크 대비 실거래 성과 추적
|
||||
|
||||
### 실행 순서
|
||||
|
||||
0단계(GT 타점)를 먼저 만든 뒤, 현물 1단계 sim → 현물 2단계 인과 분석 순으로 진행합니다. 선물·현물 3단계는 각 시장의 1·2단계 완료 후 구현 예정입니다.
|
||||
|
||||
```bash
|
||||
# 사전: 전체 인터벌 증분 갱신 (1분~월봉, DB 최신 이후만)
|
||||
python scripts/00_download.py
|
||||
|
||||
# 사전: 전체 인터벌 풀 다운 (최초 1회 또는 DB 재구축)
|
||||
python scripts/00_download.py --full
|
||||
|
||||
# 1분봉만 풀 다운 (수 시간 소요)
|
||||
python scripts/00_download_candles.py --full --days 3650 --intervals 1
|
||||
|
||||
# 0단계: Ground Truth 타점 생성 (v1/v2/v3)
|
||||
python scripts/0_ground_truth.py
|
||||
|
||||
# 0단계: 선물 GT 타점 차트 (롱·숏 4색, 타점만)
|
||||
python scripts/0_ground_truth_futures.py
|
||||
|
||||
# 현물 1단계: GT sim (최근 3년 · 20만원)
|
||||
python scripts/1_ground_truth_sim.py --tier all
|
||||
|
||||
# 현물 2단계: 인과 기법 GT 정합 비교
|
||||
python scripts/2_run_techniques.py
|
||||
python scripts/2_run_signal_type_align.py --from-cache
|
||||
python scripts/2_run_mtf_analysis.py
|
||||
```
|
||||
|
||||
### 현물 2단계 인과 기법 목록 (39종)
|
||||
|
||||
`src/deepcoin/techniques/` — 단일 33 + 복합 6, **미래 데이터 미사용**. 카탈로그: `data/spot/techniques_catalog.json`
|
||||
|
||||
| ID | 기법 | 유형 | 설명 |
|
||||
|----|------|------|------|
|
||||
| `zigzag_causal` | 인과 ZigZag | 스윙 B/S | 되돌림 % 확정 시 스윙 저점 매수·고점 매도 (GT ZigZag 인과 버전) |
|
||||
| `minor_swing` | 소형 스윙 하이브리드 | 하이브리드 | 소형 ZigZag(2.5%) + 국소 극값 — GT 중간 눌림목 보완 |
|
||||
| `local_extrema` | 국소 극값 | 스윙 B/S | 국소 저점 매수·고점 매도 (눌림목 유형 포착) |
|
||||
| `pivot_swing` | 피벗 스윙 | 스윙 B/S | 피벗 저점 매수·고점 매도 (스윙 B/S) |
|
||||
| `fractal_swing` | 프랙탈 스윙 | 스윙 B/S | Williams 프랙탈 스윙 저점 매수·고점 매도 |
|
||||
| `swing_failure` | 스윙 실패 | 스윙 B/S | 스윙 고저점 돌파 실패(페일드 브레이크아웃) 반전 신호 |
|
||||
| `donchian` | 돈치안 채널 | 스윙 B/S | 돈치안(40) 채널 하단 매수·상단 매도 |
|
||||
| `ema_pullback` | EMA 눌림목 | 눌림목 B* | EMA(20/60) 눌림목 반등 매수·되돌림 매도 (B*) |
|
||||
| `fib_pullback` | 피보나치 눌림목 | 눌림목 B* | 피보나치 38.2~61.8% 되돌림 구간 매수·매도 (B*) |
|
||||
| `support_bounce` | 지지·저항 반등 | 눌림목 B* | N봉 지지·저항 터치 후 반전 (B*) |
|
||||
| `keltner_breakout` | Keltner 돌파 | 돌파 B^ | Keltner 채널 상·하단 돌파 (B^) |
|
||||
| `range_breakout` | 레인지 돌파 | 돌파 B^ | N봉 레인지 상·하단 돌파 (B^) |
|
||||
| `volume_breakout` | 거래량 돌파 | 돌파 B^ | 거래량 스파이크 + 레인지 돌파 (B^) |
|
||||
| `bb_squeeze_breakout` | BB 스퀴즈 돌파 | 돌파 B^ | 볼린저 밴드 스퀴즈 후 돌파 (B^) |
|
||||
| `rsi_divergence` | RSI 다이버전스 | 다이버전스 Bd/Sd | RSI 상승(Bd)·하락(Sd) 다이버전스 |
|
||||
| `macd_divergence` | MACD 다이버전스 | 다이버전스 Bd/Sd | MACD 히스토그램 상승(Bd)·하락(Sd) 다이버전스 |
|
||||
| `obv_divergence` | OBV 다이버전스 | 다이버전스 Bd/Sd | OBV 상승(Bd)·하락(Sd) 다이버전스 |
|
||||
| `bb_reversal` | 볼린저 역추세 | 지표 | BB(20,2) 하단 매수·상단 매도 + EMA 추세 필터 |
|
||||
| `ma_cross` | EMA 크로스 | 지표 | EMA(20/60) 골든크로스 매수·데드크로스 매도 |
|
||||
| `rsi_swing` | RSI 스윙 | 지표 | RSI(14) 과매도 반등 매수·과매수 하락 매도 |
|
||||
| `macd_cross` | MACD 크로스 | 지표 | MACD(12,26,9) 시그널선 골든·데드 크로스 |
|
||||
| `supertrend` | Supertrend | 추세 | Supertrend 상승·하락 전환 신호 |
|
||||
| `adx_trend` | ADX 추세 | 추세 | ADX(14) 강세 + DI 크로스 추세 신호 |
|
||||
| `ichimoku_trend` | 일목 추세 | 추세 | 일목 전환선·기준선 크로스 추세 신호 |
|
||||
| `parabolic_sar` | Parabolic SAR | 추세 | Parabolic SAR 추세 전환 신호 |
|
||||
| `stochastic_cross` | Stochastic 크로스 | 모멘텀 | Stochastic(14,3) %K/%D 크로스 |
|
||||
| `cci_extreme` | CCI 극값 | 모멘텀 | CCI(20) 과매도·과매수 반전 |
|
||||
| `roc_reversal` | ROC 반전 | 모멘텀 | ROC(12) 극값 반전 신호 |
|
||||
| `keltner_reversal` | Keltner 역추세 | 변동성 | Keltner 채널 하단 매수·상단 매도 |
|
||||
| `atr_channel` | ATR 채널 | 변동성 | EMA(20) ± ATR(14)×2 채널 반전 |
|
||||
| `pivot_points` | 피벗 포인트 | 구조 | 롤링 피벗 S1/R1 반전 |
|
||||
| `support_resistance` | 구조적 지지·저항 | 구조 | 스윙 피벗 기반 S/R 반전 |
|
||||
| `volume_spike` | 거래량 스파이크 | 거래량 | 거래량 스파이크 후 반전 (클라이맥스) |
|
||||
| `composite_swing` | 스윙 복합 | 복합 | 스윙 저점·고점 전담 기법 가중 투표 (B/S) |
|
||||
| `composite_pullback` | 눌림목 복합 | 복합 | 눌림목·역추세 기법 가중 투표 (B*) |
|
||||
| `composite_breakout` | 돌파 복합 | 복합 | 돌파·모멘텀 기법 가중 투표 (B^) |
|
||||
| `composite_divergence` | 다이버전스 복합 | 복합 | RSI/MACD/OBV 다이버전스 가중 투표 (Bd/Sd) |
|
||||
| `composite_v3` | v3 통합 스코어링 | 복합 | v3 GT 6종 신호 유형별 핵심 기법 가중 투표 + EMA(60) 추세 필터 |
|
||||
| `composite_full` | 전체 통합 복합 | 복합 | 전체 인과 기법 가중 투표 + EMA 추세 필터 |
|
||||
| ID | 기법 | 유형 |
|
||||
|----|------|------|
|
||||
| `zigzag_causal` | 인과 ZigZag | 스윙 B/S |
|
||||
| `minor_swing` | 소형 스윙 하이브리드 | 하이브리드 |
|
||||
| `local_extrema` | 국소 극값 | 스윙 B/S |
|
||||
| `pivot_swing` | 피벗 스윙 | 스윙 B/S |
|
||||
| `fractal_swing` | 프랙탈 스윙 | 스윙 B/S |
|
||||
| `swing_failure` | 스윙 실패 | 스윙 B/S |
|
||||
| `donchian` | 돈치안 채널 | 스윙 B/S |
|
||||
| `ema_pullback` | EMA 눌림목 | 눌림목 B* |
|
||||
| `fib_pullback` | 피보나치 눌림목 | 눌림목 B* |
|
||||
| `support_bounce` | 지지·저항 반등 | 눌림목 B* |
|
||||
| `keltner_breakout` | Keltner 돌파 | 돌파 B^ |
|
||||
| `range_breakout` | 레인지 돌파 | 돌파 B^ |
|
||||
| `volume_breakout` | 거래량 돌파 | 돌파 B^ |
|
||||
| `bb_squeeze_breakout` | BB 스퀴즈 돌파 | 돌파 B^ |
|
||||
| `rsi_divergence` | RSI 다이버전스 | Bd/Sd |
|
||||
| `macd_divergence` | MACD 다이버전스 | Bd/Sd |
|
||||
| `obv_divergence` | OBV 다이버전스 | Bd/Sd |
|
||||
| `bb_reversal` | 볼린저 역추세 | 지표 |
|
||||
| `ma_cross` | EMA 크로스 | 지표 |
|
||||
| `rsi_swing` | RSI 스윙 | 지표 |
|
||||
| `macd_cross` | MACD 크로스 | 지표 |
|
||||
| `supertrend` | Supertrend | 추세 |
|
||||
| `adx_trend` | ADX 추세 | 추세 |
|
||||
| `ichimoku_trend` | 일목 추세 | 추세 |
|
||||
| `parabolic_sar` | Parabolic SAR | 추세 |
|
||||
| `stochastic_cross` | Stochastic 크로스 | 모멘텀 |
|
||||
| `cci_extreme` | CCI 극값 | 모멘텀 |
|
||||
| `roc_reversal` | ROC 반전 | 모멘텀 |
|
||||
| `keltner_reversal` | Keltner 역추세 | 변동성 |
|
||||
| `atr_channel` | ATR 채널 | 변동성 |
|
||||
| `pivot_points` | 피벗 포인트 | 구조 |
|
||||
| `support_resistance` | 구조적 지지·저항 | 구조 |
|
||||
| `volume_spike` | 거래량 스파이크 | 거래량 |
|
||||
| `composite_swing` | 스윙 복합 | 복합 |
|
||||
| `composite_pullback` | 눌림목 복합 | 복합 |
|
||||
| `composite_breakout` | 돌파 복합 | 복합 |
|
||||
| `composite_divergence` | 다이버전스 복합 | 복합 |
|
||||
| `composite_v3` | v3 통합 스코어링 | 복합 |
|
||||
| `composite_full` | 전체 통합 복합 | 복합 |
|
||||
|
||||
---
|
||||
|
||||
## 디렉터리 구조
|
||||
## 구현 현황
|
||||
|
||||
```text
|
||||
DeepCoin/
|
||||
├── src/deepcoin/
|
||||
│ ├── data/ # 캔들 수집·로드
|
||||
│ ├── ground_truth/ # 0·1단계 GT·차트
|
||||
│ ├── techniques/ # 현물 2단계 인과 기법 (39종)
|
||||
│ ├── evaluation/ # 현물 2단계 GT 정합 평가
|
||||
│ └── mtf/ # 현물 2단계 MTF 분석
|
||||
├── scripts/ # 접두사: 00=사전, 0=0단계, 1=현물1, 2=현물2
|
||||
│ ├── 00_download.py # 사전 (증분/풀다운 래퍼)
|
||||
│ ├── 00_download_candles.py # 사전 (캔들 수집 본체)
|
||||
│ ├── 0_ground_truth.py # 0단계 현물 GT
|
||||
│ ├── 0_ground_truth_futures.py # 0단계 선물 GT 차트
|
||||
│ ├── 1_ground_truth_sim.py # 현물 1단계 sim
|
||||
│ ├── 2_run_techniques.py # 현물 2단계
|
||||
│ ├── 2_run_signal_type_align.py
|
||||
│ └── 2_run_mtf_analysis.py
|
||||
├── coins.db # 공유 캔들 DB (현물·선물 유일한 공유 리소스)
|
||||
├── data/
|
||||
│ ├── spot/ # 현물 전용
|
||||
│ │ ├── ground_truth/ # GT JSON v1~v3
|
||||
│ │ ├── techniques/ # 2단계 기법 실행 결과
|
||||
│ │ └── mtf/ # MTF 규칙
|
||||
│ └── futures/ # 선물 (0단계 GT만, 1~3단계 추후)
|
||||
│ └── ground_truth/
|
||||
├── docs/
|
||||
│ ├── 0_ground_truth/ # 0단계 (현물·선물 공통)
|
||||
│ │ ├── spot/
|
||||
│ │ └── futures/
|
||||
│ └── spot/ # 현물 1~2단계
|
||||
│ ├── 1_simulation/
|
||||
│ └── 2_analysis/
|
||||
```
|
||||
| 유형 | 단계 | 상태 |
|
||||
|------|------|------|
|
||||
| common | 사전 (캔들) | 구현됨 |
|
||||
| spot | 0~2단계 | 구현됨 |
|
||||
| spot | 3단계 (운영) | 예정 |
|
||||
| futures | 0단계 | 구현됨 |
|
||||
| futures | 1~3단계 | 예정 |
|
||||
|
||||
현물·선물은 `coins.db`만 공유합니다. 현재 구현 범위는 **0단계(공통) + 현물 1·2단계**이며, 선물 1~3단계·현물 3단계는 추후 구현 예정입니다.
|
||||
---
|
||||
|
||||
## 변경 이력
|
||||
|
||||
- 2026-06-11: `docs/0_ground_truth/{spot,futures}/`로 0단계 차트를 docs 직하로 이동
|
||||
- 2026-06-11: `scripts/` 접두사를 파이프라인 단계와 일치 (`00_` 사전, `0_` 0단계, `1_` 현물1, `2_` 현물2)
|
||||
- 2026-06-11: README 파이프라인 단계별 상세 설명 추가 (0단계 공통 + 현물·선물 1~3단계)
|
||||
- 2026-06-11: README 파이프라인을 0단계(공통) + 현물·선물 각 1~3단계 체계로 정리
|
||||
- 2026-06-11: 선물 1~3단계·`04_run_causal_futures` 제거, 현물 0·1·2단계만 유지
|
||||
- 2026-06-11: `docs/spot/`·`docs/futures/` 상위 분리 (`data/`와 동일 구조)
|
||||
- 2026-06-11: `data/spot/`·`data/futures/` 완전 분리 (`coins.db`만 공유), 선물 GT·MTF·causal 독립 경로
|
||||
- 2026-06-11: 2단계 38종 기법 리포트 재생성, 3단계 causal/MTF/walkforward 재검증, README 39종 표 반영
|
||||
- 2026-06-11: 캔들 수집 기본 동작을 DB 최신 이후 증분 갱신으로 변경 (`--full`로 전체 재수집)
|
||||
- 2026-06-10: docs를 단계별 폴더(`0_ground_truth`~`3_causal`)로 재구성, 단계 정의 정렬 (0=GT 타점, 1=sim)
|
||||
- 2026-06-09: 파이프라인 번호를 0~4단계 체계로 통일 (0=벤치마크, 1=GT+기법, 2=인과분석, 3=시뮬, 4=실거래)
|
||||
- 2026-06-09: 3단계 인과 선물 전략 (composite_v3 + ATR) + 0단계 벤치마크 비교
|
||||
- 2026-06-09: v3 신호 유형별 GT 정합 리포트 + composite_v3 통합 기법
|
||||
- 2026-06-09: 선물 GT 차트 futures/gt/ 정리, 마커 UI 개선
|
||||
- 2026-06-08: Ground Truth v1/v2/v3 + 매매 기법 8종
|
||||
- 2026-06-12: `data/`·`docs/`를 **common / spot / futures** 3유형 구조로 재편, `coins.db` → `data/common/`, 0단계 차트 → `docs/{spot,futures}/0_ground_truth/`
|
||||
- 2026-06-12: `0_ground_truth_futures.py` — 현물 GT → 선물 JSON·차트 변환 로직 보완
|
||||
- 2026-06-12: README 현물 파이프라인 전체 순서 갱신
|
||||
- 2026-06-12: `src/deepcoin/data/` 모듈 복원
|
||||
- 2026-06-11: 파이프라인 단계별 상세 설명 추가
|
||||
- 2026-06-08: Ground Truth v1/v2/v3
|
||||
- 2026-06-07: 캔들 수집 모듈 초기 구현
|
||||
|
||||
Reference in New Issue
Block a user