GT MTF 프로필·캘리브레이션과 04 매칭/시뮬/실거래 파이프라인을 추가한다.

3분~일봉 GT 타점 분석(03c), leg 체결 순서 수정, 총자산 90% 검증 루프,
walk-forward Go/No-Go 시뮬, monitor·live_trader 및 reference 문서를 포함한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-31 11:27:50 +09:00
parent b52d61b777
commit 2cb67c42b3
47 changed files with 5956 additions and 209 deletions

View File

@@ -7,6 +7,8 @@
- **목적**: 차트 상 의미 있는 저점 매수·고점 매도를 JSON으로 고정
- **방법**: 고점(major swing)에서 1~2회 매도 · 저점(ZigZag+BB)에서 분할 매수 · 삼각형 크기=비중
- **체결 순서**: JSON 저장·포트폴리오 시뮬은 **leg별 매수 전량 → 매도 전량** (시각순 아님). 차트 표는 시각순 정렬.
- **HTML 카드**: 초기 금액, 총보유자산, 초기 대비 증감율(종가 평가 포함). 기간말 leg는 **종가 청산** 포함.
## Do

View File

@@ -0,0 +1,44 @@
# 3단계 — 오픈 (실거래)
## 정의
**실제 KRW가 빗썸 주문으로 나가는 단계**입니다. 05 텔레그램 알림만으로는 3단계가 아닙니다.
## 선행 조건
1. `python scripts/04_simulation_report.py`**Go/No-Go: GO**
2. 본 문서·`RISK.md`·`OPERATIONS.md` 숙지
3. `.env` 한도 값 확정
## 실행
```bash
# 반드시 LIVE_TRADING_ENABLED=1 일 때만 주문
python scripts/06_execute_live.py --once # 1회 점검
python scripts/06_execute_live.py # 상시 (알림+주문)
```
## 환경 변수
| 변수 | 기본 | 설명 |
|------|------|------|
| `LIVE_TRADING_ENABLED` | 0 | **1**일 때만 실주문 |
| `LIVE_ORDER_KRW` | 100000 | 1회 주문 금액(원) |
| `LIVE_DAILY_KRW_MAX` | 300000 | 일일 총 주문 한도 |
| `LIVE_COOLDOWN_MIN` | 180 | 동일 규칙 재주문 최소 간격(분) |
| `LIVE_MAX_TRADES_PER_DAY` | 10 | 일일 최대 체결 시도 |
| `LIVE_DAILY_LOSS_LIMIT_KRW` | 50000 | 일 손실 한도(추가 주문 중단) |
## 주문 규칙
- `matched_rules.json`**`monitor_rules`** 만 사용 (매수·매도 각 1개)
- 매수: 시장가 매수 (`buyCoinMarket`)
- 매도: 보유 수량 기준 시장가 매도 (`sellCoinMarket`)
## 로그
- `data/ops/live_trades.jsonl` — 주문 시도·결과
## 4단계 연결
오픈 후 **1~2주** 실계좌 PnL·슬리피지·장애를 `docs/05_ops/live_verification_*.md`에 기록합니다.

View File

@@ -0,0 +1,40 @@
# 운영 가이드
## 단계별 스크립트
| 단계 | 스크립트 |
|------|----------|
| 데이터 | `01_download.py` |
| GT | `02_ground_truth.py` |
| 분석 | `03_analyze_enrich.py`, `03_analyze_trades.py` |
| 매칭 | `04_match_rules.py` |
| 시뮬 | `04_simulation_report.py` |
| 알림 | `05_run_monitor.py` |
| 실거래 | `06_execute_live.py` |
## 일상 운영 (5단계 이후)
1. `01_download.py` — 일 1회 권장
2. `06_execute_live.py` — 상시 (`LIVE_TRADING_ENABLED=1`)
3. 주간 — `04_simulation_report.py`로 EV·Go 재확인
## 텔레그램
- 05/06: 규칙 발화·**체결 결과** (06)
- `MONITOR_ALERT_COOLDOWN_MIN` / `LIVE_COOLDOWN_MIN` 으로 중복 완화
## 장애 대응
| 증상 | 조치 |
|------|------|
| 주문 실패 | 로그·빗썸 API 키·잔고 확인, `LIVE_TRADING_ENABLED=0` |
| 알림만 오고 주문 없음 | `LIVE_TRADING_ENABLED` 확인 |
| 과다 알림 | 쿨다운 증가·`monitor_rules` 축소 |
## 오픈 체크리스트 (3단계 당일)
- [ ] 시뮬 Go/No-Go **GO**
- [ ] `.env` 한도 확인
- [ ] `LIVE_TRADING_ENABLED=1` 의도적 설정
- [ ] `--once` 1회 테스트
- [ ] `live_trades.jsonl` 기록 확인

25
docs/reference/RISK.md Normal file
View File

@@ -0,0 +1,25 @@
# 리스크 — 실거래
## 원칙
- 소액 파일럿만 허용 (`LIVE_ORDER_KRW`, `LIVE_DAILY_KRW_MAX`)
- 손실 한도 초과 시 **당일 추가 주문 중단**
- API·네트워크 오류 시 주문 중단·로그 기록
## Kill switch
| 방법 | 동작 |
|------|------|
| `.env` | `LIVE_TRADING_ENABLED=0` 설정 후 프로세스 재시작 |
| 프로세스 | `06_execute_live.py` 중지 |
| 빗썸 | 앱/웹에서 수동 청산 |
## 한도 (기본값 예시)
- 1회 10만 원 · 일 30만 원 · 일 손실 5만 원 초과 시 중단
운영 전 본인 자금에 맞게 **반드시** 조정하세요.
## 면책
실거래 손익은 전적으로 운영자 책임입니다. 본 저장소는 투자 자문이 아닙니다.

View File

@@ -1,29 +1,30 @@
# 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` |
| 01~03c | DB, GT, enrich, GT MTF 스냅샷, **전 TF 프로필(매수/매도 대조)** | `01`~`03_gt_mtf_profile.py` |
| 04 | GT 프로필 + leg_gt EV + holdout | `04_match_rules.py` |
| 05 | 텔레그램 알림 (주문 없음) | `05_run_monitor.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` |
| 순서 | 단계 | 내용 | 실행 |
|------|------|------|------|
| **1** | 시뮬레이션 | walk-forward·민감도·Go/No-Go | `04_simulation_report.py` |
| **2** | 문서화 | SIMULATION, LIVE, RISK, OPERATIONS | `docs/reference/` |
| **3** | 오픈 | **실거래** (소액) | `06_execute_live.py` |
| **4** | 검증 | 실계좌 1~2주 | `docs/05_ops/live_verification_*.md` |
| **5** | 지속 | 실거래 유지·월간 재시뮬 | 06 상시 |
가이드: [SIMULATION.md](SIMULATION.md) · [LIVE_TRADING.md](LIVE_TRADING.md)
## 디렉터리
구조: [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 패키지
scripts/01~06_*.py
data/coins.db, ground_truth/, ops/live_trades.jsonl
docs/04_matching/simulation_report.*
docs/reference/
```

View File

@@ -0,0 +1,40 @@
# 1단계 — 시뮬레이션
## 목적
실거래(3단계) 전에 `monitor_rules`**과적합이 아닌지** 숫자로 검증합니다.
## 실행
```bash
python scripts/04_match_rules.py # 선행: 04 전체 또는 select
python scripts/04_simulation_report.py
```
## 산출물
| 파일 | 내용 |
|------|------|
| `docs/04_matching/simulation_report.json` | walk-forward·민감도·Go/No-Go |
| `docs/04_matching/simulation_report.html` | GT 동일 카드(초기 금액·총보유자산·증감율)·차트·타점·규칙 기준 |
## 검증 항목
| 항목 | 설명 |
|------|------|
| Holdout | 최근 15% 구간 EV≥0, PF≥1 |
| Walk-forward | 월별 EV, 양수 월 비율 ≥ `SIM_GO_WF_POSITIVE_RATIO` |
| 수수료 스트레스 | 수수료 2배(`SIM_FEE_STRESS_MULT`) 후에도 EV≥0 |
| 실거래 한도 가정 | `LIVE_ORDER_KRW`·`LIVE_DAILY_KRW_MAX` 내 체결 가능 비율 |
## Go/No-Go
- **GO**: `monitor_rules` 전 규칙이 checks 통과 → 2·3단계 진행 가능
- **NO-GO**: 04 재선별·규칙 축소 후 재실행
## 환경 변수 (`config.py` / `.env`)
- `SIM_GO_MIN_HOLDOUT_EV`, `SIM_GO_MIN_HOLDOUT_PF`
- `SIM_GO_WF_POSITIVE_RATIO` (기본 0.5)
- `SIM_WALK_FORWARD_MIN_MONTHS` (기본 3)
- `SIM_FEE_STRESS_MULT` (기본 2.0)