본문 바로가기
파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기/chapter4 백테스팅 알고리즘 트레이딩 정복하기 전략

chapter4 알고리즘 트레이딩 정복하기-정량적 백테스팅 정의 및 성과지표 개념 소개

by ohsungjun 2026. 1. 28.

정량적 백테스팅(Quantitative Backtesting)이 중요한 이유는 한마디로 '주관적인 착각을 객관적인 숫자로 검증'하기 때문입니다. 단순히 "이 전략은 잘 맞을 것 같아"라는 느낌을 버리고, 과거 데이터를 통해 증명된 확률에 기반하여 투자하기 위함이죠.

 

1. 연 수익률 (Annual Return)

  • 의미: 내 전략을 1년 동안 유지했을 때 기대할 수 있는 수익률입니다.
  • 중요성: 모든 투자자에게 가장 익숙하고 직관적인 지표로, 결국 수익이 잘 나야 좋은 전략으로 평가받습니다.

2. 변동성 (Volatility)

  • 의미: 일별 수익률의 표준편차를 말합니다.
  • 역할: 수익이 얼마나 일정하게 나는지, 포트폴리오의 가치가 얼마나 빠르게 움직이는지를 측정합니다.
  • 해석: 변동성이 크다는 것은 수익률 그래프의 굴곡이 심하다는 뜻이며, 이는 투자자가 견뎌야 할 위험이 높다는 것을 의미합니다.

 

 

샤프 지수는 단순히 "얼마나 벌었나?"가 아니라, "위험을 얼마나 감수하고 벌었나?"를 측정하는 지표입니다. 수식은 다음과 같습니다.


1. 포트폴리오 수익률 (R_p)

  • 의미: 내가 실행한 매매 전략을 통해 실제로 얻은 수익률입니다.
  • 역할: 분자 자리에 위치하여, 이 값이 높을수록 샤프 지수가 올라갑니다. 즉, 수익이 좋을수록 평가는 좋아집니다.

2. 리스크 프리 수익률 (R_f) — 무위험 수익률

  • 의미: 위험을 전혀 감수하지 않고도 얻을 수 있는 수익률을 말하며, 보통 **'국채 금리'**나 **'은행 예금 금리'**를 사용합니다.
  • 계산의 이유: 내가 주식이라는 위험 자산에 투자했다면, 최소한 "가만히 은행에 넣어뒀을 때 버는 돈($R_f$)"보다는 더 벌어야 의미가 있기 때문입니다.
  • 초과 수익률: 따라서 분자인 $R_p - R_f$는 내가 위험을 감수해서 얻은 순수한 '실력' 수익률을 뜻합니다.

3. 포트폴리오 변동성 (sigma_p) — 표준편차

  • 의미: 수익률이 얼마나 들쭉날쭉했는지를 나타내는 **'리스크'**의 척도입니다.
  • 역할: 분모 자리에 위치합니다.
    • 그래프가 완만하게 우상향하면 변동성이 낮아 샤프 지수가 높아집니다.
    • 그래프가 요동치며 불안하게 올라가면 변동성이 높아 샤프 지수가 낮아집니다.

 한눈에 비교하기 

이미지의 오른쪽 상단에 그려진 빨간 그래프들을 보시면 이해가 빠릅니다.

  • 그래프 ① (완만한 우상향): 변동성(sigma_p)이 작습니다. 위험 대비 수익이 좋으므로 샤프 지수가 높습니다. (우수한 전략)
  • 그래프 ② (심한 요동): 변동성(sigma_p)이 큽니다. 같은 수익을 냈더라도 투자자가 견뎌야 할 고통(위험)이 컸으므로 샤프 지수가 낮습니다.

결론: "한 단위만큼의 변동성을 가질 때 얼마나 수익이 잘 나는지"를 분석하는 것입니다. 샤프 지수가 높을수록 변동성은 줄이고 수익은 높인 아주 효율적인 전략이라고 볼 수 있습니다.

 

 

📉 MDD (Maximum DrawDown) : 최대 낙폭

맥시멈 드로우다운(MDD)이란?

한마디로 **"내 투자의 역사상 가장 뼈아팠던 순간의 기록"**입니다. 단순히 주가가 낮은 상태를 말하는 게 아니라, 내 계좌가 가장 잘나갔던 '전고점' 대비 얼마나 **'수직 낙하'**했었는지를 측정하는 지표입니다.

한마디로 **"내 투자금이 고점 대비해서 '최악의 경우' 어디까지 떨어졌었나?"**를 나타내는 지표입니다.


1. 핵심 개념

  • 고점 대비 하락폭: 단순히 주가가 낮은 것이 아니라, **직전 최고점(Peak)**에서 **최저점(Trough)**까지 얼마나 많이 하락했는지를 측정합니다.
  • 최대치: 여러 번의 하락(Drawdown) 중 가장 크게 떨어진 단 하나의 수치를 말합니다.
  • 리스크의 지표: "이 전략을 썼을 때 내가 겪을 수 있는 가장 큰 고통의 크기"를 의미합니다.

2. 계산 예시

만약 내 주식 계좌가 다음과 같이 움직였다면:

  1. 100만 원으로 시작해서 200만 원까지 올랐음 (최고점)
  2. 이후 하락장이 와서 120만 원까지 떨어짐 (최저점)
  3. 다시 회복해서 150만 원이 됨

3. MDD가 왜 중요할까요?

  • 복구의 난이도: -50%가 하락하면 본전이 되기 위해 +100%의 수익이 필요합니다. MDD가 크면 클수록 원금 회복이 기하급수적으로 힘들어집니다.
  • 심리적 마지노선: 투자자가 투자를 포기하게 만드는 것은 '낮은 수익률'보다 '큰 MDD'인 경우가 많습니다.

MDD는 투자자가 마주할 **'고통의 깊이'**를, 언더워터 기간은 그 **'고통이 지속되는 시간'**을 의미합니다.


🌊 언더워터(Underwater) 기간: 인내심의 유효기간

아무리 수익률이 좋은 전략이라도 언더워터 구간이 너무 길어지면 투자자는 다음과 같은 심리적 변화를 겪게 됩니다.

  1. 의구심: "분명 백테스팅에서는 우상향이었는데, 왜 내 계좌는 1년째 마이너스지?"
  2. 피로감: 다른 종목들은 오르는데 내 전략만 제자리걸음(혹은 하락)일 때 느끼는 소외감.
  3. 포기: 결국 가장 저점 근처에서 "이 전략은 안 되나 봐"라며 운용을 중단함.

사용자님께서 말씀하신 것처럼 "이거를 견딜 수 있느냐"를 판단하려면 두 가지 질문을 스스로에게 던져봐야 합니다.

  • 질문 1: "내 자산이 **최대 X%**까지 빠져도 밤에 잠을 잘 수 있는가?" (MDD 확인)
  • 질문 2: "내 계좌가 최대 N개월 동안 수익 없이 본전 아래에 있어도 전략을 믿고 기다릴 수 있는가?" (언더워터 기간 확인)

 

샤프 지수(Sharpe Ratio)와 MDD를 왜 반드시 세트로 묶어서 봐야 하는지, 그 핵심 이유를 정리해 드릴게요.


⚖️ 샤프 지수와 MDD를 함께 봐야 하는 이유

1. '평균'의 함정을 피하기 위해서 (샤프의 한계)

샤프 지수는 **'변동성 대비 수익률'**을 나타냅니다. 하지만 샤프 지수는 전체 기간의 평균적인 흔들림을 계산하기 때문에, **한 번의 치명적인 폭락(MDD)**을 충분히 반영하지 못할 때가 있습니다.

  • 상황: 평소엔 잔잔하게 수익을 내다가 갑자기 -50% 폭락하는 전략이 있다면?
  • 결과: 샤프 지수는 나쁘지 않게 나올 수 있지만, MDD를 확인하지 않으면 실전에서 계좌가 녹아내리는 것을 막을 수 없습니다.

2. '지속 가능성'과 '효율성'의 균형

  • 샤프 지수 = "이 전략이 얼마나 똑똑한가?" (효율성)
  • MDD = "이 전략을 끝까지 버틸 수 있는가?" (생존성) 두 지표를 같이 보면, **"충분히 똑똑하면서도(Sharpe), 내가 감당할 수 있는 수준으로만 흔들리는지(MDD)"**를 동시에 체크할 수 있습니다.

3. 운용 주체의 '리스크 허용 범위' 결정

사용자님께서 말씀하신 것처럼 회사는 자본금의 일정 수준 이상 손실이 나면 강제로 전략을 중단해야 하는 '로스컷(Loss Cut)' 규정이 있습니다.

  • 샤프 지수만 높고 MDD가 회사 규정(-15% 등)을 초과한다면, 아무리 좋은 전략이라도 채택될 수 없습니다.
  • 따라서 실무(실전)에서는 MDD가 전략 채택의 'Pass/Fail' 기준이 되고, 그 통과된 전략들 중에서 샤프 지수가 높은 순으로 순위를 매기게 됩니다.