퀀트 투자 입문 ⑫ — 리밸런싱은 정말 효과가 있을까
지난 글에서 60/40 포트폴리오를 만들면서 “매월 리밸런싱”을 아무 설명 없이 전제로 깔았습니다. 사실 그 한 줄이 결과를 꽤 많이 좌우합니다. 리밸런싱을 아예 안 하면 어떻게 되는지, 매월 대신 매년 하면 어떤지, 같은 데이터로 확인해 봤습니다.
시작하기 전에 저는 “매월 리밸런싱이 가장 좋고, 자주 할수록 비용이 늘어나니 적당히 타협하는 문제”라고 짐작했습니다. 결과는 두 군데서 예상과 달랐습니다.
실험 설계
지난 글과 같은 데이터입니다. 실러 교수의 미국 월별 자료에서 S&P500 총수익률과 10년물 국채 수익률을 뽑아, 1950년 2월부터 2023년 9월까지 884개월(사본에 배당 값이 없는 2023년 7~9월은 가격 변화만 반영). 목표 비중은 주식 60 / 채권 40으로 고정하고 다섯 가지 규칙을 비교했습니다.
- 방치(none) — 처음에 60/40으로 사고 그 뒤로 아무것도 안 함
- 매월 / 분기 / 매년 — 정해진 주기마다 60/40으로 되돌림
- 밴드(band) — 주식 비중이 55% 아래나 65% 위로 벗어날 때만 되돌림
핵심은 드리프트(drift)입니다. 주식이 오르면 가만히 있어도 주식 비중이 저절로 늘어납니다. 이걸 코드로 옮기면 이렇게 됩니다.
def simulate(r, target=0.6, rule="monthly", band=0.05, cost=0.0):
w = target # 현재 주식 비중
rets, weights, n = [], [], 0
for i, (date, row) in enumerate(r.iterrows()):
# 이번 달 수익률은 '직전 달 말 비중'으로 결정된다
gross = w * (1 + row["Stock"]) + (1 - w) * (1 + row["Bond"])
# 두 자산의 수익률이 다르므로 비중이 저절로 움직인다
w_drift = w * (1 + row["Stock"]) / gross
due = (rule == "monthly"
or (rule == "quarterly" and (i + 1) % 3 == 0)
or (rule == "annual" and (i + 1) % 12 == 0)
or (rule == "band" and abs(w_drift - target) > band))
turnover = abs(w_drift - target) if due else 0.0 # 사고판 비율
rets.append(gross - 1 - turnover * cost)
w = target if due else w_drift
weights.append(w)
n += 1 if due and turnover > 0 else 0
return pd.Series(rets, index=r.index), pd.Series(weights, index=r.index), n
turnover가 실제로 사고판 금액의 비율입니다. 비중을 65%에서 60%로 되돌린다면 자산의 5%만 옮기면 되므로, 비용도 그 5%에만 붙습니다. 전체 자산을 다 팔았다 사는 것이 아니라는 점이 뒤에서 중요해집니다. 데이터를 읽고 표와 그림까지 만드는 전체 코드는 rebalancing_test.py에 있습니다. 데이터를 읽는 함수를 asset_allocation_basics.py에서 가져오므로 두 파일을 같은 폴더에 두고 실행합니다.
결과
| 방치 | 매월 | 분기 | 매년 | 밴드 | |
|---|---|---|---|---|---|
| CAGR | 10.54% | 9.09% | 9.17% | 9.27% | 9.25% |
| 연 변동성 | 11.2% | 7.8% | 7.8% | 7.8% | 7.8% |
| MDD | -47.0% | -27.0% | -26.5% | -24.7% | -26.5% |
| 샤프비율 | 0.69 | 0.78 | 0.79 | 0.80 | 0.80 |
| 최장 침체 | 73개월 | 41개월 | 40개월 | 40개월 | 40개월 |
| 매매 횟수 | 0회 | 884회 | 294회 | 73회 | 40회 |
첫 번째 예상 밖: 방치가 수익률 1위
방치한 쪽이 연 10.54%로 가장 높습니다. 매년 리밸런싱보다 1.3%p 위입니다. 73년을 굴리면 이 차이는 어마어마해집니다.
그런데 이걸 “리밸런싱은 손해”라고 읽으면 완전히 틀립니다. 방치했을 때 주식 비중이 어떻게 됐는지 보면 압니다.

1950년에 60%로 시작한 주식 비중이 10년 만에 87%가 되고, 2000년에는 97%, 마지막에는 98.9%입니다. 73년 평균 비중이 92%입니다. 즉 이 포트폴리오는 어느 시점부터 60/40이 아니라 그냥 주식 포트폴리오였습니다.
자산 배분 글에서 주식 100%의 CAGR이 11.29%, MDD가 -49.0%였습니다. 방치한 60/40은 10.54%에 -47.0%. 거의 주식 100%와 같은 숫자입니다. 수익률이 높은 게 아니라, 어느새 다른 포트폴리오가 되어 있었던 것입니다.
낙폭 그림이 이걸 더 분명하게 보여줍니다.

2003년과 2009년, 방치한 쪽은 -40%, -47%까지 파였습니다. 매년 리밸런싱한 쪽은 같은 시기에 -25% 안쪽입니다. 60/40을 선택한 사람이 감당하기로 한 위험은 -25% 수준이었을 텐데, 방치하면 본인도 모르게 -47%짜리 포트폴리오를 들고 있게 됩니다.
그래서 리밸런싱의 목적은 수익률을 높이는 것이 아닙니다. 내가 고른 위험 수준을 그대로 유지하는 것입니다. 위험을 그대로 유지한다면 위험조정 수익률로 비교해야 하고, 그 기준(샤프비율)에서는 리밸런싱한 쪽이 0.78~0.80으로 방치의 0.69보다 확실히 낫습니다.
하락장이 있었던 해만 떼어 첫해 1월부터 마지막 해 12월까지의 누적 수익률을 비교하면 차이가 더 눈에 띕니다.
| 구간 | 방치 | 매년 리밸런싱 |
|---|---|---|
| 1973~1974 오일쇼크 | -35.4% | -21.7% |
| 2000~2002 IT 거품 붕괴 | -32.8% | -9.1% |
| 2007~2009 금융위기 | -14.9% | +2.9% |
| 2022 인플레이션 | -15.0% | -14.9% |
금융위기 3년을 통틀어 매년 리밸런싱한 쪽은 오히려 플러스입니다. 2008년에 주식이 폭락하면서 비중이 목표 아래로 떨어지고, 연말에 되돌리면서 싸진 주식을 더 사게 되고, 2009년 반등을 그 늘어난 비중으로 맞았기 때문입니다. 리밸런싱은 구조적으로 “오른 걸 팔고 내린 걸 사는” 행동이 됩니다.
2022년만 예외입니다. 주식과 채권이 같이 떨어진 해라 되돌릴 것이 없었고, 그래서 차이도 0.1%p뿐입니다. 지난 글에서 본 상관계수 문제가 여기서도 그대로 나타납니다.
두 번째 예상 밖: 자주 할수록 나쁘다
표를 다시 보면 매월이 CAGR 9.09%로 넷 중 꼴찌이고, 매년이 9.27%로 1위입니다. 변동성은 넷 다 7.8%로 사실상 같은데 수익률만 다릅니다. 샤프비율도 매년(0.80)이 매월(0.78)보다 높습니다.
위 표는 거래 비용을 넣기 전 결과입니다. 비용까지 넣으면 어떨까 싶어 왕복 0.2%(매도·매수 각 0.1%)를 붙여 봤는데, 차이가 예상보다 훨씬 작았습니다.
| 방치 | 매월 | 분기 | 매년 | 밴드 | |
|---|---|---|---|---|---|
| 비용 후 CAGR 감소 | 0.000%p | 0.018%p | 0.012%p | 0.007%p | 0.007%p |
매월 884번을 매매해도 연 수익률이 0.018%p 줄어드는 데 그칩니다. 앞서 짚었듯 되돌릴 때 옮기는 금액이 자산의 평균 0.7% 정도뿐이라, 매매 횟수는 많아도 실제 거래액이 작기 때문입니다. 거래 비용 글의 절대 모멘텀 백테스트에서 비용이 0.5%p 넘게 성과를 갉아먹던 것과 대조적입니다.
그러면 매월이 왜 더 나쁠까요. 이 자료에서는 한 달 동안 한 자산이 다른 자산보다 많이 오르면 다음 달에도 그 자산이 앞서는 경향이 있었습니다. 두 자산의 월수익률 차이와 그 한 달 전 값 사이의 상관계수(1차 자기상관)가 +0.24이고, 2~12개월 전 값과의 상관은 -0.08~+0.05로 이보다 훨씬 작습니다. 매월 되돌리면 이 한 달짜리 흐름을 매번 잘라내고, 1년쯤 두면 그 흐름을 탄 채로 지나갑니다. 그런데 이것을 앞서 다룬 모멘텀의 증거로 읽기는 어렵습니다. 실러 자료의 주가와 금리는 월말 값이 아니라 그달의 평균값이고, 평균값으로 수익률을 계산하면 실제로는 아무 경향이 없어도 이웃한 두 달의 수익률이 비슷해져 1차 자기상관이 0.25 안팎으로 생깁니다. 여기서 나온 +0.24는 그 크기와 거의 같습니다.
다만 이 차이는 0.18%p입니다. 73년이라는 한 표본에서 나온 값이고, 데이터를 다른 시장이나 다른 기간으로 바꾸면 순위가 뒤집힐 수 있는 크기입니다. “매년이 매월보다 우월하다”고 단정할 근거로는 약합니다. 안전하게 말할 수 있는 것은 자주 할수록 좋아지지는 않는다는 정도입니다.
밴드 방식은 40번만 매매하고도 매년과 거의 같은 성과를 냈습니다. 손이 가장 덜 가는 선택지입니다.
실전에서 고른다면
이 데이터에서 굳이 하나를 고르라면 연 1회 또는 밴드 방식입니다. 성과가 가장 좋아서라기보다, 매월과 차이가 없으면서 손이 훨씬 덜 가고, 세금이 붙는 계좌에서는 실현이익을 미루는 이점까지 있기 때문입니다. 이 실험에는 세금이 전혀 반영되지 않았는데, 한국의 과세 계좌라면 매매할 때마다 세금이 붙어서 매월 방식의 불리함이 여기서 본 것보다 훨씬 커집니다. 어떤 상품을 어떤 계좌에서 사느냐에 따라 매매차익에 세금이 붙는지, 손실을 다른 이익과 상계할 수 있는지가 달라지는데, 그 내용은 세금 글에 정리했습니다.
정리하면 이렇습니다. 리밸런싱은 수익을 늘리는 장치가 아니라 위험을 처음 정한 자리에 묶어 두는 장치입니다. 안 하면 포트폴리오는 조용히 다른 물건으로 변해 있습니다. 그리고 그 장치는 1년에 한 번이면 충분합니다.
지금까지 두 편에 걸쳐 “상관계수가 낮으면 섞는 게 이득”이라는 말을 숫자로만 확인했습니다. 다음 글에서는 그 관계가 왜 성립하는지, 상관계수와 포트폴리오 변동성 사이의 식을 직접 뜯어보겠습니다.
2026-09-28 수정: 거래 비용 가정을 “편도 0.2%”에서 “왕복 0.2%(매도·매수 각 0.1%)”로, 리밸런싱 때 옮기는 금액을 “자산의 1~2%”에서 “평균 0.7% 정도”로 바로잡았습니다.
2026-10-04 수정: 오르던 것이 더 오르는 경향이 나타나는 기간을 “1~12개월”에서 모멘텀 글과 같은 “3~12개월”로 바로잡았습니다.
2026-10-22 수정: 매월 리밸런싱이 불리했던 이유를 “모멘텀 때문”이라고 단정했던 문단을 이 자료에서 확인되는 1개월 자기상관과 월평균 자료의 한계를 밝히는 설명으로 바꾸고, 2023년 7~9월은 배당 없이 가격 변화만 반영했다는 점을 밝혔습니다.
이 글은 학습과 정보 공유 목적으로 작성되었으며, 특정 종목이나 상품에 대한 투자 권유가 아닙니다. 투자의 판단과 책임은 투자자 본인에게 있습니다.