자동매매 포지션 사이징 전략

포지션 사이징이 수익률을 결정한다

자동매매 시스템에서 진입 시그널의 정확도만큼 중요한 것이 포지션 사이징(Position Sizing)입니다. 아무리 승률이 높은 전략이라도 한 번의 과도한 베팅으로 계좌가 날아갈 수 있습니다. 포지션 사이징은 “얼마나 벌 것인가”가 아니라 “얼마나 오래 살아남을 것인가”를 결정하는 핵심 요소입니다.

고정 비율 vs 변동 비율 사이징

포지션 사이징 방식은 크게 두 가지로 나뉩니다.

고정 금액 방식

매 거래마다 동일한 금액을 투입하는 가장 단순한 방법입니다.

  • 장점: 구현이 쉽고 결과 분석이 직관적
  • 단점: 계좌 크기 변화에 적응하지 못함. 계좌가 커져도 수익 규모가 동일하고, 계좌가 줄어들어도 리스크 비율이 증가

퍼센트 리스크 방식

계좌 잔고의 일정 비율만 리스크로 노출하는 방식입니다. 전문 트레이더와 퀀트 펀드에서 가장 널리 사용됩니다.

  • 1% 룰: 한 번의 거래에서 최대 손실을 계좌의 1%로 제한
  • 2% 룰: 공격적이지만 여전히 보수적인 범위
  • 계좌가 줄어들면 포지션도 자동으로 줄어들어 파산 확률이 급격히 감소

켈리 기준(Kelly Criterion) 실전 적용

켈리 기준은 수학적으로 최적의 베팅 비율을 계산하는 공식입니다. 장기적으로 자산을 가장 빠르게 성장시키는 비율을 알려줍니다.

Kelly % = W - (1 - W) / R

W = 승률 (예: 0.55 = 55%)
R = 평균 이익 / 평균 손실 (손익비)

예를 들어 승률 55%, 손익비 1.5인 전략의 경우:

Kelly % = 0.55 - (1 - 0.55) / 1.5
       = 0.55 - 0.30
       = 0.25 (25%)

하지만 실전에서는 풀 켈리를 절대 사용하지 않습니다. 이유는 다음과 같습니다:

  • 승률과 손익비는 추정치이며 변동함
  • 풀 켈리는 변동성이 극심하여 심리적으로 견디기 어려움
  • MDD(최대 낙폭)가 50%를 초과할 수 있음

실전에서는 하프 켈리(Half Kelly) 또는 쿼터 켈리(Quarter Kelly)를 사용합니다. 위 예시에서 하프 켈리는 12.5%, 쿼터 켈리는 6.25%입니다.

ATR 기반 동적 포지션 사이징

ATR(Average True Range)은 시장의 변동성을 측정하는 지표입니다. 변동성이 클 때는 포지션을 줄이고, 작을 때는 늘려서 일정한 리스크 수준을 유지합니다.

import numpy as np

def atr_position_size(account_balance, risk_pct, atr, atr_multiplier=2.0):
    """ATR 기반 포지션 사이징 계산"""
    risk_amount = account_balance * risk_pct  # 허용 손실 금액
    stop_distance = atr * atr_multiplier       # ATR 기반 손절 거리
    position_size = risk_amount / stop_distance # 포지션 크기
    return position_size

# 예시: 계좌 1000만원, 리스크 1%, ATR 50,000원
size = atr_position_size(
    account_balance=10_000_000,
    risk_pct=0.01,
    atr=50_000,
    atr_multiplier=2.0
)
print(f"포지션 크기: {size:.2f} 단위")  # 1.0 단위

이 방식의 핵심은 변동성이 높은 시장에서 자동으로 포지션이 줄어든다는 것입니다. 급등락장에서 과도한 손실을 방지하는 자연스러운 안전장치가 됩니다.

상관관계와 포트폴리오 리스크

여러 자산을 동시에 거래하는 자동매매 시스템에서는 자산 간 상관관계를 반드시 고려해야 합니다.

상관관계 의미 포지션 전략
+0.8 이상 거의 같은 방향 움직임 하나의 포지션으로 취급, 합산 리스크 제한
+0.3 ~ +0.7 약한 양의 상관 개별 리스크의 70~80%로 사이징
-0.3 ~ +0.3 무상관 독립적 사이징 가능
-0.8 이하 반대 방향 움직임 헤지 효과, 포지션 확대 가능

BTC와 ETH처럼 상관관계가 +0.9 이상인 자산을 동시에 롱 포지션으로 잡으면, 사실상 하나의 큰 포지션을 잡은 것과 동일합니다. 개별 리스크가 1%씩이라도 합산하면 2%에 가까운 리스크가 됩니다.

최대 동시 포지션 제한

자동매매에서 간과하기 쉬운 부분이 최대 동시 오픈 포지션 수입니다. 리스크 관리 규칙을 정리하면 다음과 같습니다:

  • 단일 포지션 리스크: 계좌의 1~2% 이내
  • 총 포트폴리오 리스크: 계좌의 6~10% 이내
  • 같은 방향 포지션: 상관자산 합산 4% 이내
  • 일일 최대 손실: 계좌의 3~5%에서 자동 정지

드로다운 관리: 연속 손실 대응 전략

아무리 좋은 전략이라도 연속 손실 구간은 반드시 옵니다. 이때 포지션 사이징을 조절하는 드로다운 관리 전략이 필요합니다.

def adjusted_risk(base_risk, current_drawdown):
    """드로다운 깊이에 따라 리스크를 자동 축소"""
    if current_drawdown < 0.05:
        return base_risk              # 5% 미만: 정상 운영
    elif current_drawdown < 0.10:
        return base_risk * 0.5        # 5~10%: 리스크 절반
    elif current_drawdown < 0.15:
        return base_risk * 0.25       # 10~15%: 리스크 1/4
    else:
        return 0                       # 15% 이상: 거래 정지

# 계좌가 8% 하락한 상태, 기본 리스크 1%
risk = adjusted_risk(0.01, 0.08)
print(f"조정된 리스크: {risk:.3f}")  # 0.005 (0.5%)

이 방식을 적용하면 연속 손실 시 자동으로 포지션이 줄어들어 회복 불가능한 손실을 방지합니다.

관련 글 더 보기

마무리

자동매매에서 "무엇을 사고팔 것인가"보다 "얼마나 사고팔 것인가"가 장기 수익을 결정합니다. 퍼센트 리스크 방식, 켈리 기준, ATR 기반 사이징, 상관관계 분석, 드로다운 관리까지 체계적으로 적용하면 계좌의 생존 확률이 비약적으로 높아집니다.

좋은 포지션 사이징은 수익을 극대화하는 것이 아니라, 최악의 시나리오에서도 게임을 계속할 수 있게 해주는 것입니다.

위로 스크롤
WordPress Appliance - Powered by TurnKey Linux