2d515dd6695d4eaa7e7f624668e40c847b4a6370
common/spot/futures 경로 정비, 캔들 데이터 모듈 복원, MTF 규칙 자동 저장 및 2단계 설계·최종 정리 문서를 반영해 3단계 착수 기반을 확정한다. Co-authored-by: Cursor <cursoragent@cursor.com>
DeepCoin
빗썸 KRW 마켓 암호화폐 캔들 데이터 수집 및 현물·선물 매매 전략 파이프라인.
기본 전략 축: 3분봉 현물, 최근 10년 데이터. data/·docs/는 공통(common) · 현물(spot) · 선물(futures) 세 유형으로 구분합니다.
주요 기능
- 빗썸 Public API(v1) 기반 분·일·주·월봉 캔들 수집 (1분봉 포함)
- SQLite 캔들 DB — 현물·선물 공통 (
data/common/coins.db) - Ground Truth(GT) 기반 현물·선물 벤치마크·인과 기법 분석·(예정) 실거래 운영
요구사항
- Python 3.10+
- Conda 환경
ncue또는xavis
설치
cd DeepCoin
conda activate ncue # 또는 xavis
pip install -r requirements.txt
cp .env.example .env
.env 권장값 (현물 3분봉·10년):
SYMBOL=BTC
DB_PATH=data/common/coins.db
DOWNLOAD_DAYS=3650
GT_INTERVAL_MIN=3
GT_LOOKBACK_DAYS=3650
폴더 구조 (공통 · 현물 · 선물)
data/와 docs/ 최상위는 동일하게 common / spot / futures 세 갈래입니다.
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)
현물 파이프라인 전체 순서
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단계)
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
| 순서 | 스크립트 | 산출물 |
|---|---|---|
| 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 |
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 |
경로 변수 요약
| 용도 | 변수 예시 | 기본 경로 |
|---|---|---|
| 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종)
src/deepcoin/techniques/ — 단일 33 + 복합 6, 미래 데이터 미사용.
| 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 |
전체 통합 복합 | 복합 |
구현 현황
| 유형 | 단계 | 상태 |
|---|---|---|
| common | 사전 (캔들) | 구현됨 |
| spot | 0~2단계 | 구현됨 |
| spot | 3단계 (운영) | 예정 |
| futures | 0단계 | 구현됨 |
| futures | 1~3단계 | 예정 |
변경 이력
- 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: 캔들 수집 모듈 초기 구현
Description
Languages
Python
99.5%
Shell
0.5%