RL 소스에는 실시간 시장 특징을 XGBoost로 분류하고 그 결과를 정책 상태에 결합하는 실험이 있다. 원본에는 실제 주문과 데이터베이스 기록 경로도 있으므로, 공개 글에서는 구조만 설명하고 모의 체결을 기본으로 삼는다.
계층을 분리한다
첫 단계는 시세와 기술지표를 일정한 schema로 만드는 일이다. 두 번째 XGBoost는 짧은 미래 변화 라벨을 지도학습한다. 세 번째 정책은 예측 확률, 보유 상태, 수익률과 위험 지표를 보고 행동을 선택한다. 주문·잔고·기록은 마지막 adapter가 담당한다.
시장 데이터 → 특징 검증 → XGBoost 확률 → 정책 상태
↓
위험 규칙 → 모의 주문예측기와 정책을 한 덩어리로 만들면 어느 부분이 실패했는지 알기 어렵다. 입력 schema hash, 모델 버전, 정책 버전과 체결 시뮬레이터 버전을 각각 기록해야 한다.
실시간 학습의 함정
현재 시점에서 미래를 계산한 라벨이 특징에 섞이면 누출이다. 모델을 자주 재학습할 때도 test 구간을 반복해서 선택 기준으로 사용하면 test가 사실상 train이 된다. walk-forward 평가와 고정된 최종 holdout이 필요하다.
실제 주문 전에 필요한 차단 장치
- 모의 거래가 기본이고 실제 거래는 별도 명시적 설정으로만 활성화한다.
- 1회 주문 한도, 하루 손실 한도, 최대 보유량과 kill switch를 둔다.
- 데이터가 오래됐거나 결측이면 행동을 유지로 강제한다.
- 중복 주문을 막는 idempotency key와 주문 상태 재조회를 둔다.
- 키, 계정, DB 주소, 내부 호스트는 코드와 로그에 남기지 않는다.
관련 소스
- `RealTimeXGBoostTrader.py`: 특징과 지도 모델
- `RealTimeMarket.py`: 실시간 데이터와 fallback
- `main_ri_findsell_dqn_v8_real.py`: 전체 루프의 실험적 결합
댓글
0개아직 댓글이 없습니다.