DATAUNION

QQQ·VTI·TLT 3자산 리밸런싱 백테스트 (보수적 포트폴리오 설계 가이드 + 코드) 본문

Analysis

QQQ·VTI·TLT 3자산 리밸런싱 백테스트 (보수적 포트폴리오 설계 가이드 + 코드)

DATAUNION 2025. 8. 8. 18:03
반응형

 

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에서 바로 실행 가능한 백테스트 코드

목차

  1. 3자산 개요
  2. 데이터 수집 및 준비 (Colab 코드)
  3. 리밸런싱 전략 구현 (월/분기)
  4. 성과지표 비교
  5. 결과 해석 및 포트폴리오 설계 팁
  6. 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 거래 수수료 할인 등의 이벤트는 아래 추천링크에서 확인하실 수 있습니다.

관련 글

 


 

반응형