# 3단계 — 실거래 (hybrid primary) ## 운영 모델 (시뮬과 동일) 실거래는 **시뮬 `sim_causal_hybrid`** 와 같은 배분 경로만 사용합니다. dry-run·모의 체결은 제거되었습니다. | 구분 | 내용 | |------|------| | 신호 | `matched_rules.json` → `monitor_rules` 2개 | | 매수 규칙 | `buy_compound_tight` | | 매도 규칙 | `sell_mtf_cross_all_tf` (주봉 w1 조건 포함) | | 배분 | hybrid DD tier + past-leg, **`enhanced=False`** | | 이력 | `LIVE_HYBRID_BOOTSTRAP_FIRES=1` → `fire_outcomes` monitor 발화 + 운영 체결분 | | 체결 엔진 | `plan_live_hit` = `replay_hybrid_signals` (= `build_monitor_hybrid_sized_trades`) | | 매수 필터 | 시뮬과 동일 — monitor 발화 전체 (`approved_buy_rules=None`) | | 금지 | `sim_tier_enhanced` (conviction), GT oracle 타점 | 코드: `deepcoin/ops/hybrid_sim_execution.py` → `live_trader.py` (`LIVE_TRADING_ENABLED=1` 필수) ## 기동 전 점검 ```bash python scripts/06_verify_live.py # 설정·tier·규칙·한도 python scripts/check_balance.py # 빗썸 KRW·보유 확인 ``` ## 실거래 실행 `.env` 에 `LIVE_TRADING_ENABLED=1` 확인 후: ```bash python scripts/06_execute_live.py --once # 1회 python scripts/06_execute_live.py # 상시 루프 ``` ## 환경 변수 (운영 예) | 변수 | 예 | 설명 | |------|-----|------| | `LIVE_TRADING_ENABLED` | 1 | 0이면 06 기동 불가 | | `GT_SIGNAL_CAUSAL` | 1 | hybrid sizing (과거만) | | `GT_INITIAL_CASH_KRW` | 400000 | 시뮬·배분 기준 | | `LIVE_DAILY_KRW_MAX` | 400000 | 일 주문 한도 | | `LIVE_DAILY_LOSS_LIMIT_KRW` | 40000 | 일 손실 한도 | | `LIVE_COOLDOWN_MIN` | 3 | 규칙당 쿨다운(분) | | `LIVE_MAX_TRADES_PER_DAY` | 15 | 일 최대 체결 수 | 전체: [env.recommended.md](../05_ops/env.recommended.md) ## 주문·배분 동작 - 발화 이력 → `plan_live_hit` / `replay_hybrid_signals` (인과, 현금·보유 제약) - **매수:** EV/WF 통과 규칙만, 가용 현금 범위, 일한도·쿨다운 - **매도:** 보유 수량 필요, 시뮬 분할 `sell_qty` 기준 시장가 매도 ## 로그 | 경로 | 내용 | |------|------| | `data/ops/live_trades.jsonl` | 실주문 기록 | | `data/ops/live_signal_history.json` | 발화 이력 (배분 정합) | | `docs/05_ops/live_verification_*.md` | `06_verify_live.py` 점검 기록 | ## Kill switch 1. `06_execute_live` 프로세스 중지 2. 빗썸 앱에서 수동 청산