켈리 기준의 개념
켈리 기준은 1956년 벨 연구소의 과학자 존 켈리(John Kelly)가 제안한 수학적 최적화 기법이다. 이 기법은 원래 정보 이론과 관련하여 개발되었지만, 투자와 트레이딩 분야에서도 널리 사용되고 있다. 켈리 기준은 기대 수익률, 승률, 손실률을 기반으로 최적의 포지션 크기를 결정하는 데 사용된다.
켈리 기준의 주요 목적은 장기적으로 자금의 기하급수적 성장을 최대화하는 것이다. 이 방법은 높은 승률과 낮은 손실률을 가진 거래에 더 큰 포지션 크기를 할당하고, 승률이 낮고 손실률이 높은 거래에는 더 작은 포지션 크기를 할당한다.
예를 들어, 어떤 트레이딩 전략이 60%의 승률과 2:1의 리스크 대비 수익률(Risk-Reward Ratio)을 가지고 있다고 가정해보자. 이 경우, 켈리 기준에 따르면 최적의 포지션 크기는 계좌 잔고의 20%가 된다. 반면, 승률이 50%이고 리스크 대비 수익률이 1:1인 전략의 경우, 켈리 기준에 따른 최적의 포지션 크기는 계좌 잔고의 0%이다.
켈리 기준의 계산 방법
켈리 기준에 따른 최적의 포지션 크기를 계산하는 공식은 다음과 같다:
f = (bp - q) / b
- f: 최적의 포지션 크기 (계좌 잔고의 비율)
- b: 승패 비율 (win/loss ratio)
- p: 승률 (probability of winning)
- q: 손실률 (probability of losing, 1 – p)
예를 들어, 어떤 트레이딩 전략이 60%의 승률과 2:1의 리스크 대비 수익률을 가지고 있다면, 계산 과정은 다음과 같다:
b = 2 (2:1의 리스크 대비 수익률)
p = 0.6 (60%의 승률)
q = 0.4 (1 - 0.6)
f = (2 * 0.6 - 0.4) / 2 = 0.2
따라서, 이 전략에 대한 최적의 포지션 크기는 계좌 잔고의 20%가 된다.
파이썬 코드 예시
다음은 켈리 기준을 사용하여 최적의 포지션 크기를 계산하는 파이썬 코드의 예시이다:
def kelly_criterion(win_loss_ratio, win_probability):
try:
loss_probability = 1 - win_probability
optimal_fraction = (win_loss_ratio * win_probability - loss_probability) / win_loss_ratio
return optimal_fraction
except ZeroDivisionError:
print("Error: Win/Loss ratio cannot be zero.")
return 0
except TypeError:
print("Error: Invalid input type. Both inputs must be numeric.")
return 0
# 사용 예시
win_loss_ratio = 2
win_probability = 0.6
optimal_position_size = kelly_criterion(win_loss_ratio, win_probability)
print(f"Optimal position size: {optimal_position_size:.2%}")
위 코드에서 kelly_criterion
함수는 승패 비율과 승률을 입력받아 켈리 기준에 따른 최적의 포지션 크기를 계산한다. 이 함수는 ZeroDivisionError와 TypeError에 대한 에러 처리를 포함하고 있다.