Choosing PCA Inputs for Yield Curve Level and Rate Changes
Summary
The document poses two practical questions about principal component analysis of a long history of US yields across many maturities. One asks whether PCA should be applied to yield levels or to their daily first differences when the research target is movement in the curve. The distinction is central: level data describe cross-sectional variation in yields, while changes focus on co-movement in rate movements. The question provides the sample dimensions and period but no computed components or empirical conclusion.
The second question asks whether loading-vector positions can be read directly as the six-month and one-year rates relevant to a coupon bond. Loadings correspond to the maturity columns supplied to PCA, so their interpretation depends on the ordering and spacing of those columns. Translating curve moves into bond-price effects also requires mapping the bond’s cash flows to discount rates and accounting for their sensitivities; a PCA loading alone is not a bond valuation or price-impact estimate. The document raises these issues but does not provide a solution or results.
Key ideas
- PCA on yield levels describes variation in curve levels, while PCA on first differences targets rate changes.
- Choose the PCA input to match whether the research question concerns yield states or daily movements.
- Loading positions map to input maturities according to the data’s column ordering.
- Estimating a coupon bond’s price response requires cash-flow discounting and rate sensitivity, beyond reading a loading entry.
Tags
Full text
# PCA on yield curve - Matlab # PCA on yield curve - Matlab Consider that I have a dataset of 8964 daily observation of US yields from 1990 to May 2024. These yields are related to each maturity from 3 months, every 3 months, to 30 years, for a total of 120 maturities, so that the matrix $y$ is $120\times8964$. My purpose is to evaluate the main factors that can affect the yield curve, i.e. the level, the slope and the curvature, but, in particular, I would like to analyse the factors that affect the movement of this curve ($dr$). For this reason, I just applied the command `[coeff, scores, vlambda] = pca(y');` on Matlab, where `coeff` should be the matrix of the loadings. About this, I have two questions: - Should I use `y'` or `cov(diff(y',1,1))` as input of `PCA` ? The second option represents the matrix of the daily changes (first difference) of the interest rates for each maturity. I was wondering about using this as input, because I saw from the literature that maybe it is the right way to perform the PCA on the yield curve. - Suppose that I have my matrix of loadings `coeff` and I'm interested in seeing what is the effect on the price of a 30 years coupon bond, which pays coupons every 6 months, due to a movement in the interest rate term structure $dr$. Then, can I say that the second element in each of the loading vectors is linked to the 6-months interest rate, which is the first relevant element for that bond? For instance, the same would hold for the 4th element on the loading vector that would correspond to 1-year maturity and so to the second relevant element of the bond.
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.