Skip to content

리스크 관리

MoneyMax의 리스크 관리 시스템은 개별 포지션과 전체 포트폴리오 수준에서 위험을 제어합니다.

기본 리스크 파라미터

파라미터기본값설명
max_position_pct5%포트폴리오 대비 단일 포지션 최대 비중
max_portfolio_risk_pct20%전체 포트폴리오 노출 한도
default_stop_loss_pct3%기본 손절 비율
default_take_profit_pct6%기본 익절 비율 (2:1 R/R)
max_daily_trades10일일 최대 거래 수
min_confidence0.60최소 시그널 신뢰도

포지션 사이징

포지션 크기는 다음 공식으로 결정됩니다:

position_capital = portfolio_value × max_position_pct × signal_confidence
quantity = position_capital / current_price

예시:

  • 포트폴리오: 10,000 USDT
  • max_position_pct: 5%
  • 시그널 신뢰도: 0.85
  • BTC 가격: 97,000 USDT
capital = 10,000 × 0.05 × 0.85 = 425 USDT
quantity = 425 / 97,000 = 0.00438 BTC

신뢰도 스케일링

시그널 신뢰도가 높을수록 더 큰 포지션을 잡습니다. 0.60 시그널은 최대 배분의 60%만 사용하고, 0.95 시그널은 95%를 사용합니다.

손절/익절 (SL/TP)

ATR 기반 손절

ATR(Average True Range) 값이 있으면 이를 활용합니다:

stop_distance = ATR × 2.0
stop_loss = entry_price - stop_distance  (BUY의 경우)
stop_loss = entry_price + stop_distance  (SELL의 경우)

ATR이 없으면 기본 3% 비율을 사용합니다.

리스크-보상 비율 기반 익절

risk = |entry_price - stop_loss|
reward = risk × rr_ratio (기본 2.0)
take_profit = entry_price + reward  (BUY의 경우)

기본 설정에서 R/R = 2:1 — 손실 1에 수익 2를 목표로 합니다.

포트폴리오 리스크 체크

새로운 포지션을 열기 전 다음을 확인합니다:

  1. 포트폴리오 노출 한도: 전체 오픈 포지션 가치가 포트폴리오의 20%를 넘지 않는지
  2. 일일 거래 한도: 오늘 실행한 거래가 10건 미만인지
  3. 최소 신뢰도: 시그널 신뢰도가 0.60 이상인지
  4. 중복 포지션: 같은 자산에 이미 오픈 포지션이 없는지

하나라도 실패하면 해당 시그널은 무시됩니다.

SL/TP 자동 모니터링

트레이딩 엔진은 30초마다 모든 오픈 포지션을 검사합니다:

포지션 순회:
  현재가 조회 → CryptoFeed.get_latest_price()

  BUY 포지션:
    현재가 ≤ stop_loss → 자동 매도 (손절)
    현재가 ≥ take_profit → 자동 매도 (익절)

  SELL 포지션:
    현재가 ≥ stop_loss → 자동 매수 (손절)
    현재가 ≤ take_profit → 자동 매수 (익절)

슬리피지

Paper Trading에서는 정확한 가격으로 체결되지만, Live Trading에서는 시장가 주문으로 인한 슬리피지가 발생할 수 있습니다.

설정 커스터마이징

config/trading.yaml에서 리스크 파라미터를 조정할 수 있습니다:

yaml
risk:
  max_position_pct: 0.03    # 더 보수적: 3%
  max_portfolio_risk_pct: 0.15
  max_daily_trades: 5
  min_confidence: 0.70      # 더 높은 신뢰도 요구

MIT License