백테스트 지표 사전: CAGR·MDD·샤프·칼마 비율 뜻

CAGR, 실질 수익률, MDD, 변동성, 샤프·소르티노·칼마 비율, TWRR·MWRR이 무엇을 재는지 예시 값으로 정리하고 Lifolio 계산법과 흔한 오해를 짚습니다.

가이드 5/5 읽는 데 12분
이 글의 순서 11
  1. 연환산 수익률(CAGR)
  2. 실질 수익률
  3. 최대 낙폭(MDD)
  4. 회복 기간
  5. 변동성(표준편차)
  6. 샤프 비율(샤프지수)
  7. 소르티노 비율
  8. 칼마 비율(Calmar ratio)
  9. 롤링 수익률(보유기간별 성과)
  10. TWRR·MWRR(시간가중·금액가중 수익률)
  11. 자주 묻는 질문

같은 결과 화면에 연환산 수익률 +7.63%와 칼마 비율 −0.01이 나란히 나옵니다. 앞의 숫자는 10년 전체를, 뒤의 숫자는 마지막 3년만 보고 계산했기 때문에 생기는 차이입니다. 백테스트 결과에 나오는 지표 열 가지를 무엇을 재는지, Lifolio가 어떻게 계산하는지, 예시에서 얼마였는지, 어디서 잘못 받아들이기 쉬운지 순서대로 정리했습니다.

예시는 SPY 60% · TLT 40%에 $10,000를 넣고 2015.01.02부터 2024.12.31까지 매월 리밸런싱한 달러 기준 결과이며, 전체 조건은 백테스트 결과 보는 법에 있습니다.

지표 한 줄 뜻 예시 값
연환산 수익률(CAGR) 전체 성과를 해마다 같은 복리 비율로 바꾼 값 +7.63%
실질 수익률 연 2.5% 물가 가정을 걷어 낸 수익률 연 +5.00%
최대 낙폭(MDD) 고점 대비 가장 깊었던 하락 일별 −27.65% · 월말 −26.21%
회복 기간 최대 낙폭의 바닥에서 직전 고점까지 23개월
변동성 월 수익률이 흔들린 폭(연 단위) 11.35%
샤프 비율 변동성 한 단위당 초과수익 0.55
소르티노 비율 손실 쪽 흔들림 한 단위당 초과수익 0.83
칼마 비율 최근 36개월 수익률 ÷ 같은 구간 낙폭 −0.01
롤링 수익률 시작 시점을 옮겨 가며 본 같은 길이의 구간들 1년 보유 최저 −23.31%
TWRR·MWRR 투자 대상의 성과와 내 돈의 성과 매달 $500 적립 시 7.63% · 7.55%

결과 화면에서 전체 지표 보기를 누르면 이 지표 대부분이 수익과 성과, 위험과 회복, 위험 대비 효율, 투자 결과 네 묶음으로 나뉘어 나옵니다. 앞의 두 묶음과 뒤의 두 묶음을 차례로 실었습니다.

전체 지표 창의 수익과 성과, 위험과 회복 묶음. 연환산 수익률 +7.63%, 일별·월말 최대 낙폭, 변동성 11.35%, MDD 회복 기간 23개월이 보인다
전체 지표 창 ① 수익과 성과 · 위험과 회복, 2026-11-06 기준
전체 지표 창의 위험 대비 효율, 투자 결과 묶음. 샤프 비율 0.55, 소르티노 비율 0.83, 칼마 비율 −0.01이 보인다
전체 지표 창 ② 위험 대비 효율 · 투자 결과, 2026-11-06 기준

이 예시를 Lifolio에서 그대로 열기

연환산 수익률(CAGR)

10년 동안 $10,000가 $20,852가 됐습니다. 해마다 똑같은 비율로 자랐다고 치면 그 비율은 7.63%이고, 이것이 연환산 수익률(CAGR)입니다. 요약 카드에는 +7.6%로 나옵니다.

Lifolio는 두 단계로 계산합니다. 먼저 날마다 그날 평가액에서 그날 넣은 적립금을 빼고 전날 평가액과 견줘 하루 수익률을 구하고, 이것을 기간 끝까지 곱해 이어 누적 수익률을 만듭니다. 그다음 (1 + 누적 수익률)^(1 ÷ 연수) − 1로 1년 단위로 바꿉니다. 적립금을 걷어 내고 잇는 이 방식이 뒤에 나오는 TWRR입니다. 기간이 1년보다 짧으면 연환산하지 않고 누적 수익률을 그대로 보여 줍니다.

가장 흔한 오해는 이 값을 해마다 받은 평균 수익으로 여기는 것입니다. 예시의 연도별 수익률 열 개를 단순 평균하면 8.54%로, 연환산 값보다 0.9%p쯤 높습니다. 수익률이 해마다 들쭉날쭉할수록 복리로 이은 값은 단순 평균보다 낮아집니다.

실질 수익률

성과 부분 아래쪽의 구매력 변화를 펼치면 명목 연환산 7.63%를 실질 5.00%로, 명목 누적 108.52%를 실질 62.89%로 바꿔 보여 줍니다. 접힌 상태의 요약 줄에도 "물가를 빼면 연 +5.0% · 물가 반영 전 +7.6%"가 나옵니다. 여기서 걷어 내는 물가는 실제로 측정한 소비자물가지수(CPI)가 아닙니다. 해마다 2.5%씩 오른다고 정해 둔 가정이고, 제목의 "연 2.5% 인플레이션 가정"이 그 뜻입니다. 원화 결과에도 같은 2.5%가 쓰입니다.

계산은 빼기가 아니라 나누기입니다. 연환산은 (1 + 명목 연환산 수익률) ÷ 1.025 − 1, 누적은 (1 + 명목 누적 수익률) ÷ 1.025^연수 − 1입니다. 그래서 7.63%에서 2.5%p를 그냥 뺀 5.13%보다 조금 낮은 5.00%가 나옵니다.

이 값을 그 10년의 실제 물가를 반영한 결과로 받아들이기 쉽지만, 물가가 많이 오른 해도 적게 오른 해도 똑같이 2.5%로 계산됩니다. 가정을 바꾸면 함께 바뀌는 참고값입니다.

최대 낙폭(MDD)

그때까지의 최고점에서 가장 깊이 떨어졌던 비율입니다. 시점마다 평가액을 그때까지의 최고 평가액으로 나눠 1을 빼고, 그 가운데 가장 작은 값을 고릅니다. 여기서도 적립금 효과를 뺀 값을 씁니다. 요약 카드의 −27.6%는 모든 거래일의 값으로 잰 일별 기준이고, 전체 지표 창에는 각 달 마지막 거래일 값만 쓴 월말 기준이 함께 나옵니다.

MDD는 이 기간에 실제로 있었던 가장 큰 하락 한 번이지, 앞으로 겪을 손실의 상한이 아닙니다. 두 기준이 언제 크게 벌어지는지, 다른 서비스의 MDD와 어떻게 맞춰 보는지는 MDD 일별·월말 기준과 회복 기간에서 다룹니다.

회복 기간

최대 낙폭의 바닥에서 직전 고점을 다시 넘기까지 걸린 시간입니다. 예시의 요약 카드에는 "바닥에서 회복까지 23개월"로 나옵니다. 출발점이 고점이 아니라 바닥이라서, 고점 아래에 머문 전체 기간은 이보다 깁니다. 기간이 끝날 때까지 고점을 되찾지 못했다면 숫자 대신 "회복 중"이 표시됩니다. 하락 일수와 회복 일수를 나눠 읽는 법은 MDD 일별·월말 기준과 회복 기간에 정리했습니다.

변동성(표준편차)

월 수익률이 평균에서 얼마나 퍼져 있었는지를 1년 단위로 바꾼 값입니다. 적립금 효과를 뺀 월말 값으로 달마다 수익률을 구하되, 시작이나 끝이 달 중간에 걸려 잘린 달은 뺍니다. 그 수익률들의 표본표준편차에 √12를 곱하면 됩니다. 예시는 11.35%입니다.

이 숫자는 방향을 가리지 않습니다. 크게 오른 달도 크게 내린 달만큼 변동성을 키웁니다. 더 조심할 점은 한 달 단위의 흔들림만 잰다는 것입니다. 여러 달에 걸쳐 조금씩 이어진 하락은 잘 잡히지 않아서, 변동성이 11.35%인 이 예시도 고점 대비로는 −27.65%까지 내려갔습니다. "1년에 11% 안팎으로 움직인다"는 감각과 실제로 겪은 하락 사이에는 꽤 큰 거리가 있습니다.

샤프 비율(샤프지수)

무위험수익률을 넘어선 수익이 변동성 한 단위당 얼마였는지를 봅니다. 정의는 William F. Sharpe가 직접 정리한 The Sharpe Ratio에서 확인할 수 있습니다. Lifolio는 달마다 수익률에서 그달의 무위험수익률을 뺀 초과수익률을 구하고, 그 평균을 표본표준편차로 나눈 다음 √12를 곱합니다.

무위험수익률은 결과 통화에 따라 정해집니다. 달러 결과에는 미국 3개월 국채 금리 TB3MS(FRED)를, 원화 결과에는 한국은행 ECOS의 CD 91일물 금리를 쓰고, 각 달에는 전월 관측값을 적용합니다. CD 금리를 무위험수익률 자리에 쓸 때의 한계는 원화 환산 수익률이 달러 수익률과 다른 이유에 있습니다. 필요한 금리 자료가 비어 있으면 샤프처럼 금리에 기대는 지표는 계산 불가로 표시됩니다.

예시의 샤프 비율은 0.55, 같은 조건의 SPY는 0.76입니다. 다른 곳에서 본 샤프 비율과 견줄 때는 계산 재료부터 확인해야 합니다. 일별 수익률로 계산했는지 월별로 계산했는지, 무위험수익률로 무엇을 뺐는지에 따라 같은 포트폴리오도 값이 달라질 수 있습니다.

소르티노 비율

분자는 샤프 비율과 같은 초과수익이고, 분모만 하방편차로 바꾼 값입니다. 하방편차는 월 초과수익률 가운데 0보다 작은 부분만 제곱해 평균 내고, 제곱근을 씌운 뒤 √12를 곱해 만듭니다. 평균을 낼 때는 모든 달을 넣되, 기준 이상인 달의 부족분은 0으로 셉니다.

예시는 0.83으로 샤프 0.55보다 높습니다. 분자가 같으니 손실 쪽 흔들림이 전체 흔들림보다 작았다는 뜻입니다.

자주 하는 실수는 전체 지표 창의 하방편차 (월간) 2.08%로 소르티노를 다시 계산해 보는 것입니다. 이 값은 무위험수익률이 아니라 0%를 기준으로 삼고, 연환산하지 않은 월간 값입니다. 공식이 다르니 숫자가 맞을 수 없습니다.

칼마 비율(Calmar ratio)

마지막 36개월의 연환산 수익률을 같은 36개월 동안의 월말 기준 최대 낙폭(절댓값)으로 나눈 값입니다. 다른 지표가 전체 기간을 쓰는 것과 달리 이 값만 최근 3년을 봅니다. 그런데 전체 지표 창에는 이름이 칼마 비율로만 적혀 있고, 36개월이라는 설명은 이름 옆 도움말을 열어야 보입니다. 같은 표의 다른 숫자처럼 10년 전체 기준으로 짐작하기 쉬운 자리입니다.

예시의 계산 구간은 2022년 1월부터 2024년 12월까지, 월수익률 36개입니다.

  • 분자: 2021년 말 약 $21,100이던 잔액이 3년 뒤 $20,852가 됐습니다. 연환산하면 −0.39%로, 성과 부분 최근 기간 수익률 표의 3년 값과 같습니다.
  • 분모: 같은 구간의 월말 기준 최대 낙폭은 −26.21%입니다. 10년 중 가장 컸던 하락이 이 3년 안에 들어 있어서 전체 기간의 월말 MDD와 같은 값이 나왔습니다.
  • 비율: −0.39 ÷ 26.21 ≈ −0.015이고, 화면은 소수 둘째 자리까지 표시해 −0.01로 보여 줍니다.
2015~2024년 포트폴리오 성장 곡선. 마지막 36개월인 2022년 1월~2024년 12월이 음영으로 칠해져 있고, 전체 기간 연 7.63%와 최근 36개월 연 −0.39% 라벨이 붙어 있다
칼마 비율 계산 구간. 달러 기준, 2026-10-31 계산

전체 기간의 연환산 수익률을 전체 기간 월말 MDD로 나누면 0.29쯤(7.63 ÷ 26.21) 나오니, −0.01은 전혀 다른 구간의 숫자입니다. 구간이 늘 마지막 3년에 묶여 있어서 기간 끝을 옮기면 값도 크게 움직입니다. 같은 포트폴리오를 2021년 말에서 끝내면 계산 구간이 2019~2021년으로 바뀌고, 칼마 비율은 2.85가 됩니다. 월수익률이 36개보다 적거나 그 구간에 낙폭이 없으면 계산하지 않으며, 전체 기간 값으로 대신 채우지도 않습니다.

롤링 수익률(보유기간별 성과)

같은 길이의 구간을 시작 시점만 바꿔 가며 여러 번 잘라 본 수익률입니다. 성과 부분의 보유기간별 성과는 N년 연속 구간을 한 달씩 옮겨 가며 구간마다 연환산 수익률을 구하고, 보유기간마다 가장 나빴을 때 ~ 가장 좋았을 때와 손실 비율을 막대로 보여 줍니다. 평균까지 담은 표는 그 아래를 펼치면 나옵니다. 예시에서 1년 보유 구간은 109개였고, 그중 가장 나빴던 구간은 2022년 1~12월의 −23.31%였습니다.

구간들이 크게 겹치니 109개를 독립된 경험 109번으로 셀 수는 없습니다. 보유기간별 손실 비율과 그 한계는 백테스트의 한계에서 다룹니다.

TWRR·MWRR(시간가중·금액가중 수익률)

중간에 돈을 더 넣거나 빼면 수익률이 두 갈래로 나뉩니다. 시간가중수익률(TWRR)은 연환산 수익률에서 본 대로 적립금 효과를 걷어 내고 이은 값이라, 언제 얼마를 넣었든 값이 같고 투자 대상 자체의 성과를 보여 줍니다. 금액가중수익률(MWRR)은 처음 투자금, 중간 적립금, 마지막 평가액을 실제 시점에 놓고 그 현재가치 합이 0이 되게 하는 할인율, 곧 내부수익률(IRR)입니다. 돈이 많이 들어가 있던 시기의 성과가 더 크게 반영되니 내 돈이 실제로 낸 성과에 가깝습니다. Lifolio는 현금흐름을 월 단위로 모아 계산하고 연 수익률로 표시합니다.

MWRR은 총 투자금이 초기 투자금의 1.01배를 넘을 때만 계산되고, 그때 전체 지표 창에 개인 수익률 (MWRR) 줄이 생깁니다. 요약 카드의 연환산 수익률과 0.05%p 이상 차이 나면 카드 아래에 "적립 시점까지 반영하면" 줄도 붙습니다. 적립이 없는 기본 예시에는 이 줄이 없고, 7.63%가 곧 TWRR입니다.

같은 조합에 처음 $10,000를 넣고 매달 $500씩 10년 동안 적립하면 카드가 이렇게 바뀝니다.

매달 $500을 적립한 예시의 요약 카드 네 장. 최종 자산 $108,684(투자 $70,000, 수익 +$38,684), 연환산 수익률 +7.6%와 그 아래 적립 시점까지 반영하면 +7.5%, 최대 낙폭·일별 −27.6%, 1년 보유 시 손실 17%가 보인다
초기 $10,000 + 매달 $500 적립, 나머지 조건은 기본 예시와 같음. 2026년 11월 6일 화면

매달 $500 적립 예시를 Lifolio에서 열기

넣은 돈은 모두 $70,000이고 마지막 평가액은 $108,684입니다. 연환산 수익률(TWRR)은 7.63%로 적립이 없을 때와 똑같아서 카드에도 +7.6%가 그대로 나옵니다. 내 돈 기준 MWRR은 7.55%이고, 카드에는 "적립 시점까지 반영하면 +7.5%"로 표시됩니다. 최대 낙폭 −27.6%, 1년 보유 시 손실 17%, 샤프 비율 0.55도 그대로인데, 수익률과 위험 지표를 모두 적립금 효과를 뺀 값으로 계산하기 때문입니다.

두 값의 차이가 0.08%p에 그친 것은 같은 금액을 매달 기계적으로 넣었기 때문입니다. 돈이 오르는 달에도 내리는 달에도 고르게 들어가니, 어느 한 시점의 운이 결과를 크게 끌고 가지 못합니다. MWRR이 아주 조금 낮은 것은 적립이 쌓일수록 뒤쪽 해에 더 많은 돈이 들어가 있었는데, 그 마지막 3년의 성과가 연 −0.39%로 약했던 영향으로 볼 수 있습니다.

두 값이 크게 벌어지는 것은 큰돈이 한 시점에 몰릴 때입니다. 하락장 직전에 목돈을 넣었다면 그 돈이 하락을 고스란히 맞아 MWRR이 TWRR보다 낮아지고, 반등 직전에 넣었다면 반대로 높아집니다. 이때도 TWRR은 그대로이니, 두 숫자의 차이는 투자 대상이 아니라 돈을 넣은 시점이 만든 것입니다.

공식과 데이터 처리 규칙 전체는 계산 방법론에, 금리와 환율 자료의 출처는 데이터 출처에 있습니다. 모든 값은 과거 데이터로 계산한 결과이며 앞으로의 수익을 알려 주지 않습니다.

자주 묻는 질문

샤프지수는 몇 이상이면 좋은가요?

어느 경우에나 통하는 합격선은 없습니다. 샤프 비율은 기간, 수익률을 잰 간격, 무위험수익률이 같은 결과끼리 놓을 때 비교가 됩니다. 예시 포트폴리오도 2015~2024년으로는 0.55였지만, 끝을 2021년 말로 당기면 1.18이 나왔습니다. 숫자 하나를 기준선에 대 보기보다 같은 조건으로 계산한 벤치마크 값(예시에서는 SPY 0.76)과 나란히 놓고 보세요.

칼마 비율이 마이너스면 나쁜 건가요?

마이너스는 최근 36개월의 연환산 수익률이 0보다 낮았다는 뜻입니다. 예시의 −0.01도 10년 전체로는 연 7.63%를 낸 포트폴리오가 마지막 3년에 제자리걸음을 했다는 신호일 뿐, 전체 기간의 평가가 아닙니다. 마이너스 값끼리 크기를 비교할 때는 조심해야 합니다. 수익률이 마이너스일 때는 낙폭이 클수록 나눈 결과가 0에 가까워져서, 더 크게 떨어진 쪽이 오히려 나아 보일 수 있습니다.

TWRR과 MWRR 중 무엇을 봐야 하나요?

무엇을 알고 싶은지에 따라 다릅니다. 포트폴리오나 전략끼리 비교할 때는 적립 금액과 시점의 영향을 걷어 낸 TWRR이 같은 잣대가 됩니다. 내가 정한 적립 계획으로 넣은 돈이 실제로 연 몇 %를 벌었는지 알고 싶다면 MWRR을 봅니다. MWRR은 적립 금액과 시점이 바뀌면 함께 바뀌므로, 두 포트폴리오의 MWRR을 견주려면 적립 조건부터 똑같이 맞춰야 합니다.

이 글의 숫자는 2026년 11월 6일 같은 조건으로 다시 계산해 확인했습니다. 틀린 곳을 발견하면 화면 오른쪽 아래 피드백 버튼으로 알려 주세요.