US 5-Asset Class 100% Stacked Allocation (Equity, Treasury, Cash, Gold, Crypto)
Data
Macro
주식 40%, 국채 25%, 현금 20%, 금 13%, 가상자산 2%
Author
gitSAM
Published
September 27, 2026
Keywords
Macro Capital Flow, Asset Allocation, DuckDB, FRED, Z.1, Stacked Area
1 분석 배경 및 목적
전략적 자산배분(Strategic Asset Allocation)은 각 자산군에 거의 고정된 목표 비중을 부여한다. 그런데 얼마가 적절할까? 미국 기준 경험적 휴리스틱(Heuristics)으로 포트폴리오 배분 비율은 주식 40%, 국채 25%, 현금 20%, 금 13%, 가상자산 2% 인듯 하다. 그러나 거시 자본시장은 정체된 구조가 아니며, 경기 국면과 통화 정책 충격에 따라 거대한 자본이 자산군 간을 끊임없이 이동한다.
미국 시장을 닫힌 계(Closed System)로 근사하여 5대 주요 자산군의 총 명목 평가액(Nominal Dollar Valuation, 단위: 10억 달러, Billions USD)을 산출하고, 전체 거시 자본 풀 내에서 각 자산군이 차지하는 100% 누적 상대 비중(100% Stacked Dynamic Allocation)의 시계열 동학을 추적해 봤다.
2 5대 자산군 대리 변수 및 평가 체계
자산군 간 상대 비중을 단일 매트릭스로 결합하기 위해 각 자산의 단순 가격 지수가 아닌 총 평가액 대리 변수(Proxy)를 10억 달러(Billions USD) 단위로 환산한다.
자산군 (Asset Class)
원천 통계 및 심볼
발표 기관
환산 공식 및 대리 변수 규격
US Cash (미국 달러)
M2 통화량 (M2SL)
St. Louis Fed FRED
원천 단위 10억 달러(Billions USD) 직접 연동
US Treasury Bond (미국 국채)
연방 총 공공부채 (GFDEBTN)
FRED
백만 달러 / 1,000 로 나누어 10억 달러 단위로 변환
US Equities (미국 주식)
Z.1 비금융법인 주식 시가총액 (NCBEILQ027S)
Federal Reserve Z.1
백만 달러 / 1,000 환산 및 Wilshire 5000(W5000) 비율로 최근 결측치 외삽 보간
Gold (실물 금)
전 세계 지상 금 재고량 및 선물 종가 (gold_close)
WGC / COMEX
지상 재고 21만 톤 x 32,150.7 트로이온스 x 온스당 가격 / 10억 달러
Crypto (가상자산)
비트코인 유통 공급량 및 종가 (btc_close)
Blockchain / Exchange
추정 유통량 1,970만 BTC x BTC 달러 가격 / 10억 달러
임의 분기 시점 \(t\)에서 추적 대상 5대 자산군의 명목 총합 \(V_{\text{Total}, t}\)과 개별 자산군 \(k\)의 상대적 비중 \(W_{k, t}\)는 다음과 같이 정의된다.
원천 데이터는 capital_flow.duckdb에 적재된 시계열 테이블을 직접 조회하여 분기말(Quarterly End, QE) 주기로 리샘플링 및 결측치 보정을 수행한다.
Code
from pathlib import Pathimport duckdbimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns# 플롯 스타일 설정plt.style.use('seaborn-v0_8-whitegrid'if'seaborn-v0_8-whitegrid'in plt.style.available else'default')plt.rcParams['font.family'] ='DejaVu Sans'plt.rcParams['font.size'] =10# DuckDB 파일 경로 탐색db_candidates = [ Path('capital_flow.duckdb'), Path('posts/capital_flow.duckdb'), Path('../posts/capital_flow.duckdb')]db_path =next(p for p in db_candidates if p.exists())con = duckdb.connect(str(db_path), read_only=True)m2_df = con.execute("SELECT date, M2SL FROM m2sl ORDER BY date").fetchdf().set_index('date')debt_df = con.execute("SELECT date, GFDEBTN FROM gfdebtn ORDER BY date").fetchdf().set_index('date')z1_eq_df = con.execute("SELECT date, NCBEILQ027S FROM ncbeilq027s ORDER BY date").fetchdf().set_index('date')w5000_df = con.execute("SELECT date, W5000 FROM w5000 ORDER BY date").fetchdf().set_index('date')gold_df = con.execute("SELECT date, gold_close FROM gold ORDER BY date").fetchdf().set_index('date')btc_df = con.execute("SELECT date, btc_close FROM btc ORDER BY date").fetchdf().set_index('date')con.close()# 명목 가치 환산 ($ Billions)cash_val = m2_df['M2SL']bonds_val = debt_df['GFDEBTN'] /1000.0eq_val = z1_eq_df['NCBEILQ027S'] /1000.0w5000_idx = w5000_df['W5000']gold_val =210000.0*32150.7* gold_df['gold_close'] /1e9btc_val =19.7e6* btc_df['btc_close'] /1e9# 분기말(QE) 리샘플링 및 결측치 외삽 정합macro_df = pd.DataFrame({'Cash': cash_val,'Treasury': bonds_val,'Equities': eq_val,'W5000': w5000_idx,'Gold': gold_val,'Crypto': btc_val}).resample('QE').last()# 최근 Z.1 주식 결측치는 직전 분기 W5000 대비 비율로 외삽 보완ratio = (macro_df['Equities'] / macro_df['W5000']).dropna().iloc[-1]macro_df['Equities'] = macro_df['Equities'].fillna(macro_df['W5000'] * ratio)macro_df['Treasury'] = macro_df['Treasury'].ffill()macro_df['Crypto'] = macro_df['Crypto'].fillna(0.0)# 최종 5대 자산 명목 평가액 매트릭스 (2000년 이후)asset_cols = ['Cash', 'Treasury', 'Equities', 'Gold', 'Crypto']nominal_matrix = macro_df[asset_cols].loc['2000':].dropna()# 100% 상대 비중 매트릭스 (%)pct_matrix = nominal_matrix.divide(nominal_matrix.sum(axis=1), axis=0) *100pct_matrix.tail(5).round(2)
Cash
Treasury
Equities
Gold
Crypto
date
2025-09-30
13.98
23.73
44.38
16.49
1.42
2025-12-31
13.64
23.50
43.93
17.88
1.05
2026-03-31
13.77
23.76
42.58
19.08
0.82
2026-06-30
13.31
22.50
47.83
15.70
0.66
2026-09-30
13.10
21.92
47.67
16.37
0.94
4 거시 자본흐름 시계열 동학 시각화
2000년 1분기부터 최근까지 5대 자산군의 100% 누적 면적 그래프(Stacked Area Plot)를 통해 거시 충격 시점별 자본 재배분 양상을 시각화한다.