https://github.com/endermaru/hasha-trading/blob/main/lstm_reinforcement.ipynb
목적
- 한계 극복: 기존 지도학습(Supervised Learning) 방식, 특히 삼중장벽 기법(Triple-Barrier Method)이 생성하는 촘촘하고 비현실적인 라벨링 문제에서 벗어납니다.
- 정책 학습: 정적인 '정답'을 맞추는 분류 모델이 아닌, 동적인 시장 상황에 실시간으로 대응하며 '누적 보상(수익)'을 최대화하는 매매 정책(Trading Policy) 자체를 학습시킵니다.
- 현실성 반영:
vectorbt 백테스트와 동일한 수준의 거래 수수료(0.05%) 및 **슬리피지(0.05%)**를 훈련 환경에 직접 반영하여, 실제 매매에 근접한 전략을 도출합니다.
- 최종 목표: 시장 평균 수익률(Buy & Hold)을 초과하는 알파(Alpha) 생성을 목표로 하는 견고한 자동매매 에이전트를 개발합니다.
전략
강화학습
- 에이전트가 환경과 상호작용하며 수많은 매매 시뮬레이션을 수행
- '정답 라벨' 대신 '행동'에 따른 '보상'을 피드백 받아, 누적 보상을 최대화하는 행동(매수/매도)을 학습
알고리즘: PPO (Proximal Policy Optimization)
stable-baselines3 라이브러리를 활용
- 정책(Policy)이 한 번에 과격하게 변하는 것을 막아주는 안정적인 학습 방식으로, 노이즈가 많은 금융 시계열 데이터에 적합합
데이터 - 기존과 동일
- 모델이 시장의 '맥락'과 '신호'를 동시에 파악하도록 두 종류의 데이터를 결합합니다.
- 일봉(1D) 피처:
SMA_50, ADX 등 → 시장의 큰 추세와 강도를 판단
- 4시간봉(4H) 피처:
RSI, MACD, BBands 등 → '단기 진입/청산' 시점을 포착
구현
거래 환경
- 라이브러리:
gymnasium (구 gym)
- 행동 공간 (Action Space):
spaces.Discrete(2)
0: 매도 (Sell) / 현금 보유 유지
1: 매수 (Buy) / 포지션 보유 유지
- Hold는 필요 없음!
- 관측 공간 (Observation Space):
spaces.Box(shape=(30, 18))
- Lookback: 과거 30 스텝 (30 * 4시간 = 5일)의 데이터를 관측
- Features: 18개 (OHLCV + 4H 피처 + 1D 피처)
- 정규화:
MinMaxScaler를 사용해 0~1 사이로 스케일링