A twenty-point curve has twenty degrees of freedom on paper. It has about three in practice, and knowing that changes how a rates book is measured, hedged and stress-tested.
The technique that establishes it is principal component analysis on the covariance of daily yield changes across tenors. DA2.02 teaches PCA itself, the eigendecomposition, the scaling choices and what a component is; nothing here re-derives it. What this section owns is the specific, stable answer PCA gives when you point it at a yield curve, and what to do with that answer.
Start from data. Take daily changes in the G-Sec par yield at seven tenors, 0.5, 1, 2, 3, 5, 7 and 10 years, and compute their covariance matrix in basis points squared. The synthetic panel used in Worked Example 7 produces this covariance, and the matrix is printed there in full so that every number below can be reproduced from it by eigendecomposition alone.
Advertisement
What does PCA find when you point it at a yield curve?
Eigendecompose that matrix and three things fall out.
Start with the variance shares, which are lopsided. On this panel the three largest eigenvalues carry 88.14%, 6.58% and 2.30% of total curve variance, cumulating to 97.02%. The remaining four components share under 3% between them. Real curves in developed and Indian markets land in the same neighbourhood, which is why a curve with twenty quoted points is treated as a three-factor object.
The loadings then turn out to have a fixed shape. Read each eigenvector as a curve move, one number per tenor.
| Tenor | 0.5y | 1y | 2y | 3y | 5y | 7y | 10y |
|---|---|---|---|---|---|---|---|
| PC1 loading | 0.2349 | 0.3029 | 0.3908 | 0.4339 | 0.4521 | 0.4191 | 0.3634 |
| PC2 loading | 0.4620 | 0.4870 | 0.3425 | 0.1207 | −0.2520 | −0.4073 | −0.4337 |
| PC3 loading | 0.5236 | 0.3035 | −0.3329 | −0.5399 | −0.1773 | 0.2018 | 0.3991 |
How do you name the factors and size them?
PC1 is positive at every tenor: the whole curve moves the same way, so it is the level factor. PC2 changes sign exactly once, positive at the short end and negative at the long: a slope factor, a flattener in one direction and a steepener in the other. PC3 changes sign twice, positive at both ends and negative in the middle: curvature, the butterfly. The count of sign changes is what names each factor, and it is worth checking rather than assuming, because a badly conditioned or too-short panel can produce components that do not sort this cleanly.
Each factor also arrives with a size attached. The square root of each eigenvalue is that factor's daily standard deviation: 11.16 bp, 3.05 bp and 1.80 bp here. Multiply a loading vector by its factor's standard deviation and you get a one-standard-deviation curve move in basis points, which is the object a stress test actually wants. A one-sd level move on this panel is +2.6 bp at six months rising to +5.0 bp at five years and easing to +4.1 bp at ten; a one-sd slope move is +1.4 to +1.5 bp at the front end against −1.3 bp at ten years.
How do you use the factors on a bond portfolio?
The connection to FI1.02 is direct and it is the reason this section sits in a bootstrapping module rather than a statistics one. A portfolio's key-rate durations are a vector with one entry per tenor. Multiply that vector by a loading vector and you have the portfolio's exposure to that factor:
exposure to factor k = Σ_j KRD_j × loading_kj
and its return under a one-standard-deviation move in factor k is − Σ_j KRD_j × (loading_kj × sd_k) / 10,000. Run that on the barbell-versus-bullet pair FI1.02 already built, both at a total duration of 4.50, and the two portfolios separate exactly where a single duration number said they were identical. The bullet, all 4.50 years of key-rate duration at the five-year point, carries a level exposure of 2.0346 and a curvature exposure of −0.7980. The duration-matched barbell, 0.43 at one year and 4.07 at ten, carries a level exposure of 1.6092 and a curvature exposure of +1.7549. Same duration, opposite sign on curvature, and a level exposure 21% lower on the barbell because the level factor loads most heavily in the three-to-seven-year region where the bullet is concentrated.
What does the volatility structure of the curve look like?
One more object falls out of the same covariance matrix and is usually reported alongside the factors: the maturity structure of yield volatilities, which is simply the square root of the diagonal. On this panel it runs 3.2, 3.8, 4.6, 5.0, 5.2, 4.9 and 4.4 bp per day from six months to ten years, or 51, 60, 73, 79, 83, 78 and 70 bp annualised at √252. The shape is humped rather than monotonic, peaking in the belly, and that is a real feature rather than an artefact. Policy expectations dominate the short end and are anchored by the central bank, while the very long end is damped by duration demand from insurers and pension funds. What is left is the five-to-seven-year region as the most volatile part of the curve. A hedge that ignores this and treats a basis point at ten years as equivalent to a basis point at five is mis-weighted before it starts.
What are the limits of a factor model?
Three honest limits. The factors are estimated from a sample, so they move with the window: a panel that spans a policy regime change will produce a different slope loading from one that does not, and the components are only as stable as the period they were fitted on. The decomposition is linear, so it describes curve moves rather than the convexity of any instrument sitting on the curve. And PCA gives you orthogonal directions, not economic causes; calling PC1 "the level factor" is a description of its shape, and any story about what drives it is yours to defend separately.