백테스트의 한계: 기간 하나로 결과가 바뀌는 이유
종료일을 3년 늦추자 연 11.26%가 7.63%로 내려간 SPY·TLT 예시로, 보유 기간과 위기 구간에 따라 백테스트 결과가 얼마나 달라지는지 살펴봅니다.

이 글의 순서 7
SPY 60%와 TLT 40%에 $10,000을 넣고 매월 리밸런싱하면서 2015년 첫 거래일부터 2021년 말까지 들고 있었다면, Lifolio 결과 화면에는 꽤 근사한 성적표가 나옵니다. 연환산 수익률 11.26%에 샤프 비율 1.18입니다. 자산도 규칙도 그대로 두고 끝나는 날짜만 2024년 말로 늦추면 같은 포트폴리오의 숫자가 이렇게 바뀝니다.
| 결과 기간 | 연환산 수익률 | 최대 낙폭(일별) | 샤프 비율 |
|---|---|---|---|
| 2015.01.02 ~ 2021.12.31 | 11.26% | −18.5% | 1.18 |
| 2015.01.02 ~ 2024.12.31 | 7.63% | −27.65% | 0.55 |
표의 값은 결과 화면의 전체 지표 창에서 옮겼습니다. 요약 카드에는 소수 첫째 자리까지만 보입니다. 첫 줄만 보면 수익도 괜찮고 하락도 견딜 만한 조합인데, 둘째 줄에서는 위험 한 단위당 보상을 재는 샤프 비율이 절반 아래로 떨어집니다. 3년을 더 봤을 뿐인데 평가가 달라진 셈입니다. 백테스트가 답하는 질문은 "이 포트폴리오가 좋은가"가 아니라 "이 기간에 이 포트폴리오가 어땠는가"입니다. 배당 재투자와 벤치마크까지 포함한 전체 조건은 백테스트 결과 보는 법에 있습니다.
3년을 더 보면 무엇이 달라지나요?
더해진 세 해의 수익률은 2022년 −23.31%, 2023년 +16.43%, 2024년 +10.68%입니다. 뒤의 두 해에 꽤 올랐어도 2022년에 잃은 만큼을 다 메우지는 못해서, 2021년 말 약 $21,100이던 잔액이 2024년 말에는 $20,852로 3년 전보다 조금 적었습니다.
최대 낙폭이 깊어진 것도 2022년의 하락이 2020년 코로나19 충격보다 컸기 때문인데, 그 하락의 날짜와 회복 기간은 MDD 일별·월말 기준과 회복 기간에서 따로 다룹니다. 변동성이 8.68%에서 11.35%로 오르는 사이 수익률은 내려갔으니 샤프 비율도 크게 줄 수밖에 없었습니다.
시작 시점을 옮겨 가며 보면 답이 나오나요?
기간 하나에 덜 휘둘리려면 성과 부분의 보유기간별 성과를 봅니다. 여기서는 N년 연속 구간을 한 달씩 옮겨 가며 구간마다 연환산 수익률을 구해 모읍니다. 이런 계산을 롤링 수익률이라고 부릅니다. 1년 보유라면 2015년 1~12월, 2015년 2월~2016년 1월 하는 식으로 이어져 109개 구간이 나옵니다.

막대는 보유기간마다 가장 나빴던 구간과 가장 좋았던 구간을 잇고, 0%보다 왼쪽은 빨강으로 칠합니다. 아래 "보유기간별 최저 · 평균 · 최고 (표)"를 펼치면 평균까지 숫자로 나오고, "보유기간별 수익률 분포"를 펼치면 1년 보유 수익률이 어떻게 흩어졌는지(예시의 중앙값은 내 포트폴리오 +10.1%, SPY +15.3%)를 막대로 봅니다. 화면은 소수 첫째 자리까지만 보여 줍니다.
| 보유기간 | 구간 수 | 최저 | 평균 | 최고 |
|---|---|---|---|---|
| 1년 | 109 | −23.31% | 8.49% | 28.40% |
| 3년 | 85 | −1.36% | 7.94% | 19.71% |
| 5년 | 61 | +5.01% | 9.07% | 14.19% |
| 7년 | 37 | +5.87% | 7.90% | 11.26% |
7년 최고값 11.26%는 글 첫머리의 그 숫자입니다. 2015년 1월에 시작해 2021년 12월에 끝나는 7년이 37개 구간 가운데 가장 좋았고, 가장 나빴던 7년은 연 5.87%였습니다. 끝나는 날짜를 손으로 고르면 의도하지 않아도 이렇게 가장 좋거나 가장 나쁜 구간을 집을 수 있습니다.

1년만 들고 있었다면 16.5%(109개 구간 중 18개)가 손실로 끝났습니다. 가장 나빴던 1년은 2022년 1월부터 12월까지, 곧 2022년 한 해였습니다. 보유기간이 길어질수록 최저값이 올라가고 5년부터는 손실 구간이 없습니다. 보유기간별 성과 맨 위 문장도 5년 들고 있었다면 언제 샀든 손실이 없었다고 알려 주는데, 이 문장과 요약 카드 ④는 1년 손실 비율을 반올림해 17%로 적습니다.
손실 비율을 앞으로의 확률로 봐도 되나요?
아닙니다. 이웃한 두 1년 구간은 12개월 중 11개월을 함께 씁니다. 그래서 2022년 같은 큰 하락이 한 번 있으면 그해를 걸친 구간이 줄줄이 손실이 되고, 실제로 손실 구간 18개 가운데 14개가 2022년의 일부를 포함합니다. 109번의 독립된 시도라기보다 한 사건을 여러 번 겹쳐 센 결과에 가깝습니다.
5년 0%도 마찬가지입니다. 61개 구간은 2015~2024년이라는 하나의 역사를 겹쳐 자른 조각입니다. 이 10년 안에서는 5년 내내 손해를 본 구간이 없었다는 기록일 뿐, 5년을 버티면 손실이 나지 않는다는 규칙은 아닙니다. 10년 보유는 구간이 하나(연 7.63%)뿐이라 분포라고 부르기도 어렵습니다. 분포 차트 아래에 과거 보유 구간의 결과이며 미래 수익 확률을 뜻하지 않는다는 문장이 붙어 있는 것도 그래서입니다. 손실 구간이 어느 시기에 몰렸는지는 "보유기간별 수익률 분포"를 펼쳐 투자 시점별 보기로 바꾸면 시간 순서로 확인할 수 있습니다.
채권을 섞으면 위기 때 덜 떨어지지 않나요?
위험과 회복 부분의 위기 구간 누적수익률은 미리 정해 둔 시장 위기 가운데 결과 기간과 겹치는 구간을 골라, 일별 가격으로 그 구간의 누적수익률을 계산합니다. 이 예시에서는 세 구간이 잡힙니다.

앞의 두 번은 채권 40%가 제 몫을 했습니다. 2018년 4분기에도, SPY가 3분의 1 넘게 빠진 2020년 봄에도 포트폴리오의 하락은 SPY의 절반 안팎에 그쳤습니다. 2022년은 달랐습니다. 금리가 빠르게 오르는 동안 장기 국채도 함께 떨어졌고, 60/40 포트폴리오는 위기 구간으로 봐도 연간으로 봐도 SPY보다 더 잃었습니다. 2022년 한 해 수익률은 TLT −31.24%, SPY −18.17%, 포트폴리오 −23.31%로, 완충재로 넣은 자산이 셋 중 가장 크게 떨어졌습니다.
주식과 채권이 서로 다르게 움직인다는 기대는 과거에 그랬다는 관찰에서 나온 것이고, 이 10년 안에서도 두 번 맞고 한 번 빗나갔습니다. 다음 위기가 2020년을 닮을지 2022년을 닮을지는 백테스트로 알 수 없습니다. 위기 목록에는 닷컴 버블 붕괴와 글로벌 금융위기도 들어 있지만, 예시가 2015년에 시작하므로 이 결과에는 나오지 않습니다.
숫자 밖에 남는 가정은 무엇인가요?
기간과 위기 말고도 결과는 몇 가지 가정 위에 서 있습니다. 대부분 계산 방법론에 적혀 있고, 실제 계좌와 비교할 때 차이가 생기는 지점입니다.
- 공통 데이터 기간: 선택한 자산이 모두 가격을 가진 기간만 계산합니다. 늦게 상장된 ETF를 하나 더하면 시작일이 그 ETF에 맞춰 밀리고 경고가 뜨며, 앞에서 본 위기 구간이 통째로 빠질 수도 있습니다. 이 예시도 시작일을 2015년 1월 1일로 넣었지만 휴장일이라 첫 거래일인 1월 2일부터 계산됐습니다.
- 매매 시점과 비용: 월별 리밸런싱은 매월 마지막 거래일 종가에 바로 체결된다고 가정하고, 호가 차이나 체결 지연은 계산하지 않습니다. 백테스트 화면에는 거래비용을 넣는 칸이 없어서 매매 수수료와 세금은 빼지 않고 계산합니다. 실제 계좌는 그만큼 결과가 낮아질 수 있습니다.
- 배당: 배당 재투자를 켜면 분배금을 같은 자산에 다시 넣고, 끄면 현금으로 쌓아 둡니다. 배당 기록이 빠지거나 늦게 반영되면 그만큼의 수익도 결과에서 빠질 수 있습니다.
- 가격 데이터: ETF 가격은 Yahoo Finance의 일별 종가와 배당 정보를 기본으로 쓰고, 확인된 누락이나 오류는 운용사 공시나 다른 데이터 공급자 자료로 보완합니다. 제3자 데이터라 오류나 정정이 있을 수 있으며, 처리 방식은 데이터 출처에 있습니다.
- 통화: 예시는 달러 기준이고, 원화 기준을 고르면 환율과 무위험수익률이 바뀌어 숫자가 모두 달라집니다. 규칙은 원화 환산 수익률이 달러 수익률과 다른 이유에 있습니다.
내 결과를 볼 때는 무엇을 확인하나요?
결과 하나를 결론으로 삼기 전에 같은 화면에서 세 가지를 더 볼 수 있습니다. 끝나는 날짜를 몇 년 당겨 다시 돌렸을 때 숫자가 얼마나 움직이는지, 보유기간별 성과에서 최저값이 어디까지 내려가는지, 위기 구간 누적수익률에 어떤 위기가 들어 있고 어떤 위기가 빠졌는지입니다. 어느 것도 앞으로의 수익률을 알려 주지는 않지만, 지금 보는 숫자가 기간 선택에 얼마나 기대고 있는지는 드러납니다.
자주 묻는 질문
백테스트 결과를 믿어도 되나요?
계산은 다시 확인할 수 있습니다. 이 글의 숫자도 같은 조건을 다시 넣어 같은 값이 나오는지 확인한 것입니다. 다만 그 숫자가 말해 주는 범위는 "이 자산을 이 기간에 이 규칙으로 들고 있었다면"까지이고, 체결 가정과 데이터 오류 가능성은 위에서 본 대로 남습니다. 앞으로의 수익률이나 손실 확률은 어떤 백테스트에도 들어 있지 않습니다.
몇 년치로 돌려야 하나요?
몇 년이면 충분하다는 기준은 이 결과에서 나오지 않습니다. 이 예시가 보여 주는 것은 짧은 구간일수록 결과가 넓게 흩어졌다는 사실입니다. 1년 구간은 −23.31%부터 28.40%까지 벌어졌고, 3년 구간의 최저도 −1.36%였으며, 5년 이상에서야 손실 구간이 사라졌습니다. 반대로 10년 데이터에서 10년 구간은 하나뿐이라, 보고 싶은 보유기간이 길수록 그보다 훨씬 긴 데이터가 있어야 구간을 여러 개 견줄 수 있습니다.
생존 편향이 뭔가요?
지금까지 살아남은 대상만 보고 판단할 때 생기는 치우침입니다. 백테스트에서는 자산을 고르는 시점이 지금이라는 데서 생깁니다. Lifolio에서 고르는 자산 목록도 지금 기준이라, 결과에 들어가는 자산은 지금 이름을 알고 지금까지 남아 있는 자산이 되기 쉽습니다. 2015년에 같은 목적으로 고를 수 있었던 다른 후보가 그 뒤 어떻게 됐는지는 결과에 나오지 않으니, 좋은 결과의 일부는 답을 알고 고른 덕일 수 있습니다.
이 글의 숫자는 2026년 11월 6일 같은 조건으로 다시 계산해 확인했습니다. 틀린 곳을 발견하면 화면 오른쪽 아래 피드백 버튼으로 알려 주세요.