jaehyeong.net
writing
2026-06-17·economics·9 min

3개 팩터로 분해돼도 random walk를 못 이긴 국채 곡선

미 국채 수익률 곡선은 세 팩터로 분산 99.91%가 분해되지만, Diebold-Li도 XGBoost도 random walk를 180칸·90칸 어디서도 못 이긴다. residual-RV는 gross Sharpe 1.28인데 0.5bp 비용 후 음수. 분해·예측·거래의 세 null이 전부 near-unit-root(φ ≈ 0.999) 하나로 묶인다.

토이프로젝트 정리 노트, 이번엔 FICC/금리 쪽. 미 국채 수익률 곡선이 정말 세 숫자로 줄어드는지, 그 세 숫자가 곡선을 예측하는지, 곡선의 미세한 미스프라이싱이 거래가 되는지를 본다. 데이터는 Gürkaynak-Sack-Wright(GSW) 제로쿠폰 국채 수익률, 만기 1–30년, 1961-06-14부터 2026-06-05까지 16,953영업일(합성 아니고 실제 다운로드). 코드는 repo. 금융 배경 없이 읽도록 썼다.

수익률은 미 정부가 돈을 빌리며 무는 연이자율이다. 1년·2년·…·30년 만기별 수익률을 죽 세우면 곡선이 된다. 보통은 우상향하고(길게 빌릴수록 더 준다), 가끔 평평해지거나 단기가 장기보다 높은 역전이 일어나면 흔히 경기 침체 신호로 본다. 채권 가격은 수익률과 반대로 움직이니, 곡선에 베팅하는 건 가격에 베팅하는 거다.

곡선은 만기마다 점이 있어 약 30개 숫자다. 그런데 65년 내내 곡선이 거의 세 가지 방식으로만 움직인다. 전체가 같이 위아래로 가는 level, 단기와 장기가 다르게 움직여 기울어지는 slope, 가운데가 양 끝에 비해 부풀거나 들어가는 curvature. Nelson-Siegel(NS)이라는 고전 공식이 어떤 곡선이든 이 세 모양의 합으로 쓴다. 날마다 그날 곡선에 가장 잘 맞는 세 숫자를 찾았다.

이 세 숫자가 곡선 분산의 99.91%를 설명한다(가정 없는 PCA로 교차검증해도 똑같은 세 모양이 나온다. level·slope 상관 0.97/0.89). 65년 16,953일 곡선 전부를 중위 5.79bps 안으로 재구성한다. 곡선은 진짜로 3차원 위에 산다.

PCA 성분설명 분산NS 팩터|corr| NS↔PC누적
PC1 (level)96.66%β₀ level0.97
PC2 (slope)3.09%β₁ slope0.89
PC3 (curvature)0.16%β₂ curvature0.4699.91%

curvature만 상관 0.46으로 어긋나는데, 버그가 아니다. 고정한 Diebold-Li λ가 NS curvature 봉우리를 2.5년에 박아두는데 경험적 PC3 봉우리는 10년쯤에 있어서 생기는 약속의 결과다. PC3가 전체 분산의 0.16%뿐이라 재구성엔 안 보인다(5.79bps가 증거다). 상관을 올리려고 λ를 튜닝하는 건 거부했다. spec이 λ를 고정하니 0.46이 정직한 답이다.

분해되면 예측도 되겠지

곡선이 세 숫자고 그 숫자들이 시간을 따라 움직이는 걸 지켜보면, 다음 곡선을 맞힐 수 있을 것 같다. 이게 Diebold-Li다. 팩터마다 AR(1)과 결합 VAR(1)을 적합해 h스텝 앞을 내다보고 NS 로딩으로 미래 곡선을 다시 쌓는다. 예측·거래 평가는 모든 만기가 존재하는 조밀한 구간 1985-11-25부터 2026까지 10,118일에서, 누수 없이 expanding-window로 돌렸다.

비교 대상은 가장 멍청한 baseline, random walk(RW)다. "내일 곡선 = 오늘 곡선." 금융 시계열에서 악명 높게 안 깨지는 기준이다.

구간DL-ARDL-VARRW-curveRW-factorDL-AR / RW
1일11.4311.425.6911.422.01
21일28.7128.2825.7627.431.12
63일50.1048.3244.9045.651.12

(만기 평균 RMSE bps, 낮을수록 좋다)

Forecast RMSE by horizon: random walk (RW-curve) is lowest at every horizon; Diebold-Li AR and VAR sit above it
모든 구간에서 RW-curve(남색)가 가장 낮다. Diebold-Li는 1·21·63일 어디서도 그 밑으로 못 내려간다. DL과 RW-factor가 겹치는 1일 칸이 핵심이다.

DL-AR도 DL-VAR도 180칸(2모델 × 30만기 × 3구간) 어디서도 RW보다 낮지 않았다. Diebold-Mariano 검정은 모든 칸에서 RW 손을 들어준다. 1일에서 DL이 RW의 2배인 건 NS 재구성 잔차 탓이다. RW-curve는 그 잔차를 안 지고, DL은 약 5.8bps 적합 오차를 떠안는다. 증거는 같은 1일에서 RW-factor(11.42) ≈ DL-AR(11.43)이라는 점이다. 잔차를 똑같이 진 운동장에 올려두면 DL과 "팩터 안 변함" RW가 구별되지 않는다.

이유는 팩터가 near-unit-root라서다. 실제 팩터에 적합한 AR(1) φ가 level·slope·curvature 각각 0.9993 / 0.9988 / 0.9969다. 반감기로 1–4년. Diebold-Li가 추정한 자기 동역학이 일 단위에선 통계적으로 random walk라는 뜻이다. 단기에선 RW와 다를 수가 없고, 그나마 부과하는 약한 회귀가 63일에선 외려 살짝 해친다. 적합하고 나면 똑똑한 모델이 random walk가 돼버린다.

ML이 구해줄까 싶어 XGBoost를 똑같은 누수 없는 틀에 떨궜다(같은 팩터·구간·baseline·DM). 90칸 어디서도 RW를 못 이기고, 63일에선 DL보다도 나쁘다(비율 1.25 vs DL-VAR 1.08). 유연한 학습기에 거의 random walk인 타깃을 주니 노이즈를 과적합하며 구간이 길수록 더 무너진다. 방향 정확도는 0.50, 동전 던지기다(21일 0.52가 최고). null은 모델 종류가 아니라 데이터다.

그럼 미스프라이싱은 거래가 되나

곡선 전체를 못 맞혀도, 개별 점이 매끄러운 곡선 대비 살짝 비싸지거나(rich) 싸졌다가(cheap) 되돌아오는 걸 잡을 순 있다. relative value(RV)다. 싼 걸 사고 비싼 걸 팔되 DV01-중립으로(곡선 전체가 위아래로 가는 데는 면역, 상대 주름에만 베팅) 수렴을 기다린다. 미리 등록한 두 신호를 0.5bp 호가 절반 스프레드 비용 전후로 쟀다.

residual-RV의 gross Sharpe가 40년에 걸쳐 1.28이다. 진짜 edge다(누수면 5–15가 나오고 비용 후에도 살아남는데, 이건 어제 신호로도 71%가 남고 future-perturbation 테스트를 통과한다). 그런데 0.41bp 절반 스프레드에서 손익분기고, 현실적인 0.5bp에선 net Sharpe −0.29로 음수다. 호가가 먹어치우는 얇은 edge다.

Net Sharpe vs transaction cost: residual-RV crosses zero near 0.41bp and goes negative at the realistic 0.5bp
비용을 0으로 두면 residual-RV(남색) net Sharpe가 1.28이지만, 0.41bp에서 0을 끊고 0.5bp(빨간 선)에서 음수로 내려간다. gross에서 약했던 factor-RV(주황)는 더 일찍 꺼진다.

이 residual은 종목 단위 rich/cheap이 아니다. GSW SVENY 자체가 이미 Svensson으로 매끄럽게 깎은 곡선이라, 내 residual = (3팩터 NS) − (6모수 Svensson), 간결한 모델이 빠뜨린 구조적 curvature(5–19bps, 반감기 약 100일)다. 실제 cash desk가 따먹는 CUSIP 단위 on/off-the-run rich/cheap이 아니다(이 데이터엔 개별 채권이 없다). 그렇게 미리 등록했고 다르게 주장하지 않는다. 그리고 carry가 부호를 뒤집을 수 있다. factor-RV(2s10s30s 나비)의 gross PnL은 curve-move +300에 carry+rolldown −153이 붙어 net +147이다. carry가 양의 곡선 신호를 거의 절반 깎는다. residual-RV gross PnL의 58%가 20–30년 장기물에 몰려 있어, 30만기 분산 장부처럼 보여도 사실 장기물 베팅이고, 0.5bp는 29년 제로엔 낙관적이라 현실 net은 −0.29보다 나쁘다.

셋 다 같은 사실

곡선은 세 팩터로 무너지고(99.91%), 그 팩터가 너무 near-unit-root(φ ≈ 0.999, 반감기 1–4년)라서 내일 곡선의 최선의 추측이 오늘 곡선이다. 그래서 Diebold-Li가 예측을 못 하고(자기 동역학이 random walk다), ML도 못 하고(null은 데이터다), 시스템에서 가장 빨리 되돌아오는 적합 잔차(φ ≈ 0.993, 반감기 100일)조차 호가를 넘기엔 너무 느리고 얇게 되돌아온다. 분해, 예측, 거래가 같은 persistence 하나의 세 얼굴이다.

금리 데스크에 곡선의 level/slope/curvature 구조는 위험 분해와 헤지엔 훌륭하다. 일 단위 알파 신호로는 쓸모가 없다. 거래 가능한 곡선 RV엔 이 데이터에 없는 게 필요하다. 더 높은 빈도, 미리 깎인 제로 곡선 대신 cash-bond CUSIP rich/cheap, 아니면 구조적 신호가 실제로 사는 장기물에서의 진짜 비용·유동성 edge. 합성 mean-reverting 팩터에선 Diebold-Li가 RW를 이기고 XGBoost도 이긴다. positive control이 통과하니, 실제 데이터의 null은 코드가 아니라 시장에 관한 사실이다. 더 높은 빈도로 가면 φ가 0.999에서 얼마나 떨어지는지, 그 지점에서 곡선이 예측되기 시작하는지는 이 데이터로는 모른다.


Data: GSW zero-coupon UST, 만기 1–30y, 1961-06-14 → 2026-06-05, 16,953일(분해). 예측·거래는 조밀 구간 1985-11-25 → 2026, 10,118일. NS 고정 λ=0.0609/month. Diebold-Mariano + Newey-West HAC, RV는 carry+rolldown+bid-ask 총수익 회계. 누수 차단 future-perturbation 검증, 합성 positive control 통과, 19/19 tests green.