Using PCA to Shock an On-the-Run Yield Curve and Reprice Bonds
Summary
The document explores how to shock selected points on an on-the-run Treasury yield curve, propagate those shocks to other maturities, and reprice an off-the-run bond. The proposed method applies principal component analysis to historical yield changes, then solves for component weights that match chosen shocks at the two-, five-, and thirty-year points. The author also asks whether a constant Z-spread can be carried over to the shocked curve for bond valuation.
The text presents this as an open question and gives no numerical results or accepted method. It highlights practical limits: the curve has only a small set of quoted maturities, and on-the-run securities change over time, which complicates historical PCA. It does not resolve how explained variance should affect the shock construction or whether a constant spread captures changes in off-the-run liquidity and relative value.
Key ideas
- PCA components can describe historical patterns in yield curve changes.
- A linear combination of components can be chosen to match shocks at selected maturities.
- The document questions how to account for component variance and changing on-the-run securities in PCA.
- Repricing an off-the-run bond may involve carrying its Z-spread over to the shocked curve, but this assumption is not evaluated.
- Sparse curve tenors can limit the detail of bond repricing.
Tags
Full text
# Shocking an OTR curve to price an OFF THE RUN
# Shocking an OTR curve to price an OFF THE RUN
I would like to shock an OTR curve in a certain way and reprice an off-the-run bond after that shock.
I have a yield curve that I want to shock. This yield curve is the YTM of the OTR bonds. The way I want to shock it is as follow: I want to be able to shock the YTM of the OTR at the 2 year point, 5year point or 30 year point. I'll call these shocks $s_2, s_5, s_{30}$. For example if I think the $30$y point is going to increase by $1$bp I'll have: $s_2 = 0, s_5 = 0, s_{30} = 1$. If I think the $2y$ will decrease by $2$bp, the $5$y increase by $3$bp and the $30$y increase by $1$ I'll get: $s_2 = -2, s_5 = 3, s_{30} = 1$.
Since all points on the curve are correlated if I shock the $5$year point it should also shock the $7, 20, ...$ and all the other point on the curve (except the $2, 30$ since these are the points I shock myself => the points I have a view on)
The first way I thought about was to use PCA. I do PCA on the difference in yield of that OTR curve. I thus get $PC_1, PC_2, PC_3$. where $PC_i(t)$ is the coordinate of $PC_i$ at $t$ years.
Now if I introduce a shock I solve the system of equations:
$$s_2 = \lambda_1 \cdot PC_1(2) + \lambda_2 \cdot PC_2(2) + \lambda_3 \cdot PC_3(2) \\ s_5 = \lambda_1 \cdot PC_1(5) + \lambda_2 \cdot PC_2(5) + \lambda_3 \cdot PC_3(5)\\ s_{30} = \lambda_1 \cdot PC_1(30) + \lambda_2 \cdot PC_2(30) + \lambda_3 \cdot PC_3(30)$$
Hence after solving these equations I get the new yield curve: $y_{today} + \lambda_1 \cdot PC_1 + \lambda_2 \cdot PC_2 + \lambda_{30} \cdot PC_{30}$ where $y_{today}$is the yield curve today.
Hence my first question is:
Q1: Is that a correct way of doing it? I don't feel super confident because this system of equation don't take into account the explained variance of each $PC$. Also the problem is how to perform PCA correctly since OTR changes, so what to do when I don't have enough historical data for an OTR?
Now that I have shocked my yield curve I want to see how I can reprice an off the run bon in this new environment. Can I just assume a constant Z-spread and use the point on my new OTR curve to reprice the bond?
The problem is that the number of points is very small ($2, 3, 5, 7, 10, 20, 30$), so using only these points to reprice my curve is probably not ideal.
Hence my second question:
Q2: Can I just assume a constant Z-spread and use the new yield curve to reprice my off-the-run? or is there a better way of doing it?
Many thanks.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.