[The Ouroboros] 운영/전략 계획서 v2
작성일: 2026-02-26
상태: 코드 구현 전 설계안(전략/검증 중심)

==================================================
0) 목적
==================================================
고정 익절(+3%) 중심 로직에서 벗어나, 다음을 만족하는 실전형 청산 체계로 전환한다.
- 수익 구간 보호 (손익 역전 방지)
- 변동성 적응형 청산
- 예측 모델의 확률 신호를 보조적으로 결합
- 과적합 방지를 최우선으로 한 검증 프레임워크

==================================================
1) 핵심 설계 원칙
==================================================
1. 예측 성능과 전략 성능을 분리 평가
- 예측 성능: PR-AUC, Brier, Calibration
- 전략 성능: Net PnL, Sharpe, MDD, Profit Factor, Turnover

2. 시계열 검증 규율 강제
- Walk-forward 분할
- Purge/Embargo 적용
- Random split 금지

3. 실거래 리얼리즘 우선
- 거래비용/슬리피지/체결실패 반영 없는 백테스트 결과는 채택 금지

==================================================
2) 매도 상태기계 (State Machine)
==================================================
상태:
- HOLDING
- BE_LOCK
- ARMED
- EXITED

정의:
- HOLDING: 일반 보유 상태
- BE_LOCK: 일정 수익권 진입 시 손절선을 본전(또는 비용 반영 본전)으로 상향
- ARMED: 추세 추적(피크 추적) 기반 청산 준비 상태
- EXITED: 청산 완료

전이 규칙(개념):
- HOLDING -> BE_LOCK: unrealized_pnl_pct >= be_arm_pct
- BE_LOCK -> ARMED: unrealized_pnl_pct >= arm_pct
- ARMED -> EXITED: 아래 조건 중 하나 충족
  1) hard stop 도달
  2) trailing stop 도달 (peak 대비 하락)
  3) 모델 하락확률 + 유동성 약화 조건 충족

상태 전이 구현 규칙(필수):
- 매 틱/바 평가 시 "현재 조건이 허용하는 최상위 상태"로 즉시 승격
- 순차 if-else로 인한 전이 누락 금지 (예: 갭으로 BE_LOCK/ARMED 동시 충족)
- EXITED 조건은 모든 상태보다 우선 평가
- 상태 전이 로그에 이전/이후 상태, 전이 사유, 기준 가격/수익률 기록

==================================================
3) 청산 로직 구성 (4중 안전장치)
==================================================
A. Hard Stop
- 계좌/포지션 보호용 절대 하한
- 항상 활성화

B. Dynamic Stop (Break-even Lock)
- BE_LOCK 진입 시 손절선을 본전 이상으로 상향
- "수익 포지션이 손실로 반전"되는 구조적 리스크 차단

C. ATR 기반 Trailing Stop
- 고정 trail_pct 대신 변동성 적응형 사용
- 예시: ExitPrice = PeakPrice - (k * ATR)

D. 모델 확률 신호
- 하락전환 확률(pred_prob)이 임계값 이상일 때 청산 가중
- 단독 트리거가 아닌 trailing/리스크 룰 보조 트리거로 사용

==================================================
4) 라벨링 체계 (Triple Barrier)
==================================================
목표:
고정 H-window 라벨 편향을 줄이고, 금융 시계열의 경로 의존성을 반영한다.

라벨 정의:
- Upper barrier (익절)
- Lower barrier (손절)
- Time barrier (만기)

규칙:
- 세 장벽 중 "먼저 터치한 장벽"으로 라벨 확정
- 라벨은 entry 시점 이후 데이터만 사용해 생성
- 피처 생성 구간과 라벨 구간을 엄격 분리해 look-ahead bias 방지

==================================================
5) 검증 프레임워크
==================================================
5.1 분할 방식
- Fold 단위 Walk-forward
- Purge/Embargo로 인접 샘플 누수 차단

5.2 비교군(Baseline) 구조
- B0: 기존 고정 손절/익절
- B1: 모델 없는 trailing only
- M1: trailing + 모델 확률 결합

5.3 채택 기준
- M1이 B0/B1 대비 OOS(Out-of-sample)에서 일관된 우위
- 단일 구간 성과가 아닌 fold 분포 기준으로 판단

==================================================
6) 실행 아키텍처 원칙
==================================================
1. 저지연 실행 경로
- 실시간 청산 판단은 경량 엔진(룰/GBDT) 담당
- LLM은 레짐 판단/비중 조절/상위 의사결정 보조

2. 체결 현실 반영
- 세션 유동성에 따른 슬리피지 페널티 차등 적용
- 미체결/재호가/재접수 시나리오를 백테스트에 반영

==================================================
7) 운영 리스크 관리
==================================================
승격 단계:
- Offline backtest -> Paper shadow -> Small-capital live

중단(Kill Switch):
- rolling Sharpe 악화
- MDD 한도 초과
- 체결 실패율/슬리피지 급등

Kill Switch 실행 순서(원자적):
1) 모든 신규 주문 차단 플래그 ON
2) 모든 미체결 주문 취소 요청
3) 취소 결과 재조회(실패 건 재시도)
4) 포지션 리스크 재계산 후 강제 축소/청산 판단
5) 상태/로그 스냅샷 저장 및 운영 경보 발송

원칙:
- 모델이 실패해도 hard stop 기반 보수 모드로 즉시 디그레이드 가능해야 함

==================================================
8) 고정 파라미터(초기안)
==================================================
(15분봉 단기 스윙 기준 제안)
- KR: be_arm_pct=1.2, arm_pct=2.8, atr_period=14, atr_multiplier_k=2.2,
      time_barrier_bars=26, p_thresh=0.62
- US: be_arm_pct=1.0, arm_pct=2.4, atr_period=14, atr_multiplier_k=2.0,
      time_barrier_bars=32, p_thresh=0.60

민감도 범위(초기 탐색):
- be_arm_pct: KR 0.9~1.8 / US 0.7~1.5
- arm_pct: KR 2.2~3.8 / US 1.8~3.2
- atr_multiplier_k: KR 1.8~2.8 / US 1.6~2.4
- time_barrier_bars: KR 20~36 / US 24~48
- p_thresh: 0.55~0.70

==================================================
9) 구현 전 체크리스트
==================================================
- 파라미터 튜닝 시 nested leakage 방지
- 수수료/세금/슬리피지 전부 반영 여부 확인
- 세션/타임존/DST 처리 일관성 확인
- 모델 버전/설정 해시/실험 로그 재현성 확보

끝.
