| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Ltd
- Magic
- bigdata
- 태그를 입력해 주세요.
- 스트라이다
- Apple
- 069500
- distribution
- correlation
- kosdaq
- Forex
- stock
- 자전거여행
- ATR
- volume
- story
- KRX
- 상관관계
- KODEX200
- Inovio Pharmaceuticals
- NASDAQ
- correlatiom
- Histogram
- kospi
- GPT
- ChatGPT
- Trip
- 미드저니
- AI
- Today
- Total
DATAUNION
QQQ·VTI·TLT 3자산 리밸런싱 백테스트 (보수적 포트폴리오 설계 가이드 + 코드) 본문
QQQ·VTI·TLT 3자산 리밸런싱 백테스트 (보수적 포트폴리오 설계 가이드 + 코드)
요약: QQQ(나스닥100), VTI(미국 전체 주식), TLT(미국 20년 장기국채) 3자산을 월·분기 리밸런싱 백테스트로 비교합니다. Google Colab 코드와 성과지표(CAGR, MDD)까지 제공합니다.
키워드: QQQ VTI TLT, 3자산 리밸런싱, 미국 ETF 백테스트, 보수적 포트폴리오, Google Colab 주식 코드, CAGR MDD, 분산투자 전략
서론
주식 시장이 고점일 때, 또는 금리 인상기처럼 불확실성이 큰 시기엔 변동성을 줄이는 투자 전략이 필요합니다. 이번 글에서는 미국 시장에서 널리 쓰이는 3자산 포트폴리오(QQQ, VTI, TLT)를 월·분기 리밸런싱으로 백테스트하고, 결과를 수치와 그래프로 분석합니다.
- QQQ·VTI·TLT의 기본 특성
- 월간 vs 분기 리밸런싱 수익률 차이
- CAGR(연평균 수익률), MDD(최대 낙폭), 변동성 비교
- Google Colab에서 바로 실행 가능한 백테스트 코드
목차
- 3자산 개요
- 데이터 수집 및 준비 (Colab 코드)
- 리밸런싱 전략 구현 (월/분기)
- 성과지표 비교
- 결과 해석 및 포트폴리오 설계 팁
- FAQ
1. 3자산 개요
| 티커 | 자산군 | 설명 |
|---|---|---|
| QQQ | 미국 나스닥100 | 기술주 중심 고성장 지수 ETF |
| VTI | 미국 전체 주식시장 | 대형·중형·소형주 포함 분산 ETF |
| TLT | 미국 장기국채(20년 이상) | 주식 하락기 방어 효과, 변동성 완충 |
전략 핵심
- QQQ: 높은 기대수익·높은 변동성
- VTI: 시장 전체 분산, 안정성 보완
- TLT: 주식 하락기 안전자산 역할
2. 데이터 수집 및 준비 (Colab 코드)
아래 코드를 Google Colab에 붙여넣고 실행하면, 야후 파이낸스에서 조정종가를 받아옵니다.
# !pip install yfinance pandas numpy matplotlib --quiet
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
tickers = ["QQQ", "VTI", "TLT"]
start, end = "2010-01-01", "2025-01-01"
prices = yf.download(tickers, start=start, end=end)["Adj Close"].dropna()
returns = prices.pct_change().dropna()
prices.tail()
3. 리밸런싱 전략 구현 (월/분기)
월간(M)과 분기(Q) 리밸런싱을 비교합니다. 간단한 거래비용(fee)을 반영했습니다.
def rebalance_backtest(prices, target_weights, freq="M", fee=0.0005):
rets = prices.pct_change().fillna(0.0)
if freq == "M":
rebal_dates = prices.resample("M").last().index
elif freq == "Q":
rebal_dates = prices.resample("Q").last().index
else:
raise ValueError("freq must be M or Q")
cols = list(target_weights.keys())
weights = pd.Series(target_weights, index=cols, dtype=float)
port_val = 1.0
holdings = (weights * port_val) / prices.iloc[0][cols]
port_vals = []
for i in range(1, len(prices)):
day_ret = (prices.iloc[i][cols] / prices.iloc[i-1][cols]) - 1.0
holdings *= (1 + day_ret)
port_val = (holdings * prices.iloc[i][cols]).sum()
if prices.index[i] in rebal_dates:
current_weights = (holdings * prices.iloc[i][cols]) / port_val
turnover = (current_weights - weights).abs().sum()
cost = port_val * fee * turnover
port_val -= cost
holdings = (weights * port_val) / prices.iloc[i][cols]
port_vals.append(port_val)
return pd.Series(port_vals, index=prices.index[1:])
4. 실행 및 성과 비교
target = {"QQQ":0.4, "VTI":0.4, "TLT":0.2}
eq_M = rebalance_backtest(prices, target, freq="M")
eq_Q = rebalance_backtest(prices, target, freq="Q")
def cagr(series):
yrs = (series.index[-1] - series.index[0]).days / 365.25
return (series.iloc[-1] / series.iloc[0]) ** (1/yrs) - 1
def vol(series):
return series.pct_change().std() * np.sqrt(252)
def mdd(series):
return ((series / series.cummax()) - 1).min()
import pandas as pd
summary = pd.DataFrame({
"Monthly": [cagr(eq_M), vol(eq_M), mdd(eq_M)],
"Quarterly": [cagr(eq_Q), vol(eq_Q), mdd(eq_Q)]
}, index=["CAGR","Volatility","MDD"])
print(summary)
# 누적수익 곡선(지수화)
plt.figure(figsize=(10,5))
(eq_M/eq_M.iloc[0]).plot(label="Monthly")
(eq_Q/eq_Q.iloc[0]).plot(label="Quarterly")
plt.legend()
plt.title("QQQ·VTI·TLT Portfolio Backtest")
plt.ylabel("Equity (Index=1)")
plt.grid(True)
plt.show()
5. 결과 해석 및 포트폴리오 설계 팁
- 월간 리밸런싱: 변동성 관리에 유리하지만 거래비용이 더 발생할 수 있습니다.
- 분기 리밸런싱: 거래비용 절감 효과가 있고, 장기 수익률은 월간과 큰 차이가 없을 때가 많습니다.
- TLT 비중 20% 포함 시 MDD가 낮아지는 경향 → 하락장 방어력 개선.
- 기술주 비중이 높다면 채권(TLT)로 완충하세요.
- 리밸런싱 주기는 시장 변동성과 거래비용을 함께 고려하세요.
- 연 1~2회는 포트폴리오 점검 및 티커 교체 룰을 검토하세요.
6. FAQ
Q1. 한국에서 미국 ETF 투자 가능한가요?
네. 해외주식 거래 계좌 개설 후 대부분의 한국 증권사에서 QQQ·VTI·TLT를 거래하실 수 있습니다.
Q2. 리밸런싱 주기 추천은?
변동성이 큰 포트폴리오는 월간, 비교적 안정적인 포트폴리오는 분기 리밸런싱을 우선 검토해 보세요.
Q3. 채권 ETF는 꼭 필요한가요?
주식 100% 대비 기대수익률은 낮아질 수 있으나, 하락장에서 포트폴리오 유지에 중요한 방어력을 제공합니다.
📊 더 편하게 쓰고 싶으시면 백테스트 Google Colab 템플릿과 포트폴리오 설계 PDF를 준비해 두었습니다. 필요하시면 댓글로 요청해 주세요.
또한, 미국 ETF 거래 수수료 할인 등의 이벤트는 아래 추천링크에서 확인하실 수 있습니다.
관련 글
'Analysis' 카테고리의 다른 글
| 정가 주고 샀는데… 일주일 뒤 반값? 스노우피크 65주년 리빙쉘 프로 아이보리 충격 후기 (4) | 2025.08.09 |
|---|---|
| QQQ, VTI, and TLT 3-Asset Portfolio Rebalancing Backtest (Full Guide + Python Code) (0) | 2025.08.08 |
| ChatGPT로 주식 포트폴리오 리밸런싱 시뮬레이션 하는 법 (완전 초보 가이드 + 코드 제공) (4) | 2025.08.08 |
| 무자본으로 시작할 수 있는 글로벌 창업 아이템 10선 (0) | 2025.07.16 |
| 현대차 하이브리드 배터리 오진 사례 및 소비자 대응 방안 조사 (1) | 2025.07.15 |