퀀트 투자 입문 ⑳ — 올웨더 포트폴리오 뜯어보기
지난 글의 듀얼 모멘텀은 자산 두 개를 오갔습니다. 이번에는 반대편 끝입니다. 아무것도 오가지 않고, 여러 자산을 늘 동시에 들고, 비중만으로 관리합니다.
레이 달리오의 브리지워터가 운용하는 올웨더 펀드가 원조이고, 개인 투자자용으로 알려진 비중은 이렇습니다.
| 자산 | 비중 |
|---|---|
| 주식 | 30% |
| 장기 국채 (20년 이상) | 40% |
| 중기 국채 (7~10년) | 15% |
| 금 | 7.5% |
| 원자재 | 7.5% |
처음 보면 이상합니다. 주식이 30%뿐이고 채권이 55%입니다. 수익을 내는 자산을 왜 이렇게 적게 담을까요. 이 글은 그 질문에서 시작합니다.
데이터와 한계
이 글은 원자재 지수를 따로 쓰지 않고, 1960년부터 공개된 LBMA 금 월평균 가격으로 대신합니다. 그래서 원자재 7.5%를 금에 합쳐 금 15%로 두었습니다. 둘 다 “물가가 오를 때”를 대비하는 슬리브라 구조는 유지됩니다.
장기 국채는 20년물 금리 대신 자산 배분 글에서 쓴 실러 교수의 10년물 금리로 만기 20년짜리 채권을 평가했습니다. 20년물과 10년물의 금리 차이는 무시된 셈이고, 대신 만기가 두 배라서 금리 변화에 더 크게 반응하는 성질은 살아 있습니다. 올웨더가 장기채를 쓰는 이유가 바로 그 성질이니 핵심은 남았다고 봅니다.
기간은 금이 달러에 고정되어 있던 시기를 빼려고 1972년 1월부터 시작하고, 사용한 실러 데이터 사본에서 배당과 금리 값이 모두 들어 있는 마지막 달인 2023년 6월까지입니다. 618개월입니다. 샤프비율에 쓰는 무위험 금리(Fama-French 파일의 1개월 국채 금리)는 공개 사본이 2020년 7월에서 끝나서, 아래 표의 샤프만 2020년까지 기준입니다.
실러 자료의 주가와 금리도 금과 마찬가지로 월말 값이 아니라 그달 일별 값의 평균입니다. 그래서 연도별·구간별 수익률이 월말 종가로 계산해 흔히 인용되는 숫자와 다릅니다. 예를 들어 S&P 500 총수익률은 월말 기준으로 2022년 약 -18%, 2020년 1~3월 약 -20%인데, 이 글의 데이터로는 각각 -15.0%, -16.1%입니다.
60/40의 진짜 문제
주식 60, 채권 40. 가장 흔한 배분입니다. 자본은 6 대 4로 나뉘어 있습니다. 그런데 위험은 어떻게 나뉘어 있을까요.
포트폴리오 변동성에서 각 자산이 차지하는 몫을 계산하는 방법이 있습니다. 비중에 그 자산의 “한계 기여”를 곱하면 됩니다.
import numpy as np
import pandas as pd
# asset_allocation_basics.py 를 같은 폴더에 두고 실행
from asset_allocation_basics import stock_returns, bond_returns
URL = "https://raw.githubusercontent.com/datasets/s-and-p-500/main/data/data.csv"
sh = pd.read_csv(URL, parse_dates=["Date"], index_col="Date")
sh = sh[(sh.index >= "1972-01-01") & (sh["Long Interest Rate"] > 0) & (sh["Dividend"] > 0)]
df = pd.DataFrame({"stock": stock_returns(sh), "bond": bond_returns(sh)}).dropna()
def risk_contribution(df, w):
"""각 자산이 포트폴리오 변동성에서 차지하는 몫 (합이 1)."""
keys = list(w)
cov = df[keys].cov().values * 12 # 연율 공분산
wv = np.array([w[k] for k in keys])
var = wv @ cov @ wv
return dict(zip(keys, wv * (cov @ wv) / var))
print(risk_contribution(df, {"stock": 0.6, "bond": 0.4}))
stock_returns와 bond_returns는 자산 배분 글에서 쓴 함수로 asset_allocation_basics.py에 있습니다. 금과 무위험 금리까지 넣어 아래 표를 만든 전체 코드는 all_weather.py에 있고, 함께 받을 파일은 코드 페이지에 정리해 두었습니다.
결과입니다.

60/40 포트폴리오 위험의 87%가 주식에서 나옵니다. 자본은 60%인데 위험은 87%입니다. 채권 40%는 위험의 13%만 차지합니다. 주식 변동성이 채권의 1.8배쯤이라, 변동성의 제곱으로 들어가는 분산에서는 격차가 훨씬 벌어지기 때문입니다.
이름은 60/40이지만 실제로는 “주식 포트폴리오에 채권을 약간 섞은 것”입니다. 상관관계 글에서 분산 효과를 이야기했는데, 60/40은 그 효과를 충분히 쓰지 못하고 있습니다.
위험을 똑같이 나누면
그러면 위험 기여도가 똑같아지는 비중을 거꾸로 구해봅니다. 이걸 리스크 패리티라고 부릅니다.
| 조합 | 위험이 같아지는 비중 |
|---|---|
| 주식 + 채권 | 주식 36% / 채권 64% |
| 주식 + 장기채 + 금 | 주식 35% / 장기채 40% / 금 25% |
주식이 36%, 채권이 64%. 올웨더의 30/55/15가 어떤 생각에서 나왔는지 여기서 짐작할 수 있습니다. 위험을 고르게 펴면 주식은 3분의 1 남짓이고 채권이 가장 큰 자리가 나옵니다. 세 자산으로 풀면 35/40/25인데, 올웨더는 여기서 주식을 5%p, 금을 10%p 줄이고 채권을 15%p 더 실은 모양입니다.
같은 방법으로 올웨더 근사 포트폴리오를 재보면 주식 29%, 장기채 46%, 중기채 11%, 금 14%입니다. 완전히 고르지는 않고 채권 쪽이 57%로 무겁습니다. 이건 제가 20년물을 10년물 금리로 평가해서 장기채 변동성이 실제와 다를 수 있는 탓도 있습니다.
그래서 성적은
| 주식 100% | 60/40 | 올웨더 근사 | 장기채 100% | 금 100% | |
|---|---|---|---|---|---|
| 연평균 | 10.64% | 9.21% | 8.42% | 6.58% | 7.68% |
| 연변동성 | 12.6% | 8.2% | 7.2% | 10.7% | 17.4% |
| 샤프 (~2020) | 0.50 | 0.60 | 0.64 | 0.36 | 0.27 |
| MDD | -49.0% | -27.0% | -22.0% | -39.7% | -62.1% |
| 최장 침체 | 73개월 | 41개월 | 25개월 | 50개월 | 326개월 |
| 최악의 해 | 2008 (-39.2%) | 2008 (-19.4%) | 2022 (-17.6%) | 2022 (-26.8%) | 2013 (-27.5%) |

수익을 연 2.2%p 내주고, 최대 낙폭을 -49%에서 -22%로, 전고점 회복 기간을 73개월에서 25개월로 줄였습니다. 51년 동안 한 번도 -22% 아래로 내려간 적이 없습니다. 이게 이 포트폴리오가 파는 것입니다.
위기 구간을 따로 보면 더 분명합니다.
| 구간 | 주식 100% | 60/40 | 올웨더 근사 |
|---|---|---|---|
| 1973~74 오일쇼크 | -38.6% | -22.8% | +5.6% |
| 2000~02 IT 거품 붕괴 | -35.3% | -10.7% | +13.5% |
| 2007~09 금융위기 | -46.0% | -24.7% | +0.3% |
| 2020 코로나 (1~3월) | -16.1% | -5.7% | +5.3% |
| 2022 금리 급등 | -15.0% | -14.8% | -17.6% |
네 번의 위기에서 전부 플러스였습니다. 주식이 -46%를 맞은 금융위기에도 +0.3%. 오일쇼크 때는 금이, IT 거품과 금융위기 때는 채권이 주식의 손실을 메웠습니다. 서로 다른 계절에 서로 다른 자산이 일한다는 설계가 그대로 작동한 것입니다.
그리고 다섯 번째 줄에서 무너졌습니다.
2022년에 무슨 일이 있었나

2022년 올웨더 근사는 -17.6%로, 주식 100%(-15.0%)보다도 나빴습니다. 51년 중 최악의 해입니다. 방어용으로 담은 채권 가운데 장기채 40%가 그해 -26.8%, 중기채 15%가 -14.9%를 맞았기 때문입니다.
원인은 상관관계입니다. 주식과 장기채의 상관계수를 구간별로 보면 이렇습니다.
| 구간 | 주식-장기채 상관 |
|---|---|
| 1972~1999 | +0.27 |
| 2000~2020 | -0.33 |
| 2021~2023 | +0.43 |
올웨더의 방어는 “주식이 빠질 때 채권이 오른다”는 전제 위에 서 있습니다. 그 전제는 2000년부터 2020년까지 21년 동안 맞았습니다. 상관이 -0.33이었습니다. 그런데 그 이전 28년은 +0.27이었고, 2021년 이후는 +0.43입니다. 주식과 채권이 반대로 움직인 것은 역사의 일부 구간이지 법칙이 아니었습니다.
2022년은 물가가 오르면서 금리가 뛰었고, 금리가 뛰면 주식도 채권도 같이 떨어집니다. 이 조합에서는 두 자산을 섞어봐야 분산이 되지 않습니다. 금은 그해 +0.4%로 제 역할을 했지만 15%로는 나머지 85%의 손실을 막지 못했습니다.
여기서 한 가지 더 짚을 것이 있습니다. 10년 단위 연평균에서 1980년대와 1990년대에 올웨더가 주식에 크게 뒤지고(12.9% 대 17.3%, 9.5% 대 18.0%), 2000년대에 크게 앞선(6.6% 대 -0.7%) 것은 우연이 아닙니다. 1981년부터 2021년까지 40년간 금리는 15%에서 0%대로 내려왔습니다. 채권을 55% 담은 포트폴리오에 40년짜리 순풍이 불었던 셈입니다. 백테스트에 나온 채권의 성적에는 그 순풍이 들어 있고, 앞으로도 똑같이 불 거라는 보장은 없습니다.
정리하면
- 60/40은 자본이 6 대 4지만 위험은 87 대 13입니다. 사실상 주식 포트폴리오입니다.
- 위험을 고르게 나누면 주식 36% / 채권 64%가 나옵니다. 올웨더의 30/55/15도 주식은 적게, 채권은 많이 담는 같은 방향에 있습니다.
- 51년 백테스트에서 수익 2.2%p를 내주고 낙폭을 절반으로, 회복 기간을 3분의 1로 줄였습니다. 네 번의 위기에서 모두 플러스였습니다.
- 그러나 2022년에는 주식보다 더 잃었습니다. 주식-채권 역상관은 2000~2020년의 특징이었지 법칙이 아니었고, 40년 금리 하락기가 채권 성적을 밀어 올렸습니다.
- 원자재를 금으로, 20년물을 10년물 금리로 대체한 근사이고, 실제 올웨더 펀드가 쓰는 레버리지는 없습니다.
팩터와 배분을 한 바퀴 돌았습니다. 입문 시리즈 스무 편은 정리 글에 모아 두었습니다. 지금까지 코스피 지수와 미국 데이터만 썼는데, 한국 종목의 재무 데이터를 파이썬으로 받아오는 방법은 pykrx 글에서 이어집니다.
2026-09-28 수정: LBMA 금 월평균 가격의 시작 연도(1960년)와 주식 변동성이 채권의 몇 배인지(1.8배)를 바로잡고, 2022년 채권 손실을 장기채(-26.8%)와 중기채(-14.9%)로 나눠 적었습니다.
2026-10-22 수정: 올웨더의 30/55/15가 리스크 패리티 계산의 결과라고 단정했던 문장을 같은 방향에 있다는 설명으로 고치고, 실러 자료의 주가·금리도 월평균 값이라 2022년 등의 수익률이 월말 종가로 계산한 숫자와 다르다는 점을 밝혔습니다.
이 글은 학습과 정보 공유 목적으로 작성되었으며, 특정 종목이나 상품에 대한 투자 권유가 아닙니다. 투자의 판단과 책임은 투자자 본인에게 있습니다.