Using PCA Loadings to Shape and Decompose Yield-Curve Shocks
Summary
This discussion explains how principal component analysis can inform yield-curve stress scenarios. The leading components describe common historical patterns in rates: the example’s first component has positive, similarly sized loadings across several swap tenors, with one tenor somewhat more volatile than the others. A broad upward-rate scenario can therefore be shaped by those loadings instead of assigning the same move to every tenor, making the shock resemble observed co-movements in the sample.
For a specific shock, such as changing one tenor alone, the discussion says to express that change in the PCA coordinate system by decomposing it across the eigenvectors. Their weighted effects then combine to reproduce the requested change. It also suggests using historical factor-multiplier distributions to choose stress magnitudes rather than treating a particular basis-point move as self-evident. These are conceptual recommendations, not a complete calibration procedure; the resulting scenarios depend on the data, PCA setup, and the choice between historically typical and deliberately hypothetical shocks.
Key ideas
- PCA loadings describe historical patterns of joint movement across yield-curve tenors.
- A broad rate shock can be shaped by component loadings to reflect observed co-movement.
- A tenor-specific shock must be decomposed across the principal-component basis.
- Historical distributions of component multipliers can help inform stress magnitudes.
- PCA-based scenarios reflect the sample and need not capture every hypothetical risk event.
Tags
Full text
# Reconstruct yield curve from principal components # Reconstruct yield curve from principal components I am currently building a model which aim is to model shocks to the yield curve (i.e. 25bps hike in the short rate). Currently I am looking at a swap curve from which I derive the PCs. Assessing the "normalised eigenvalues" the first three components represent most of the variation. My problem then is how to implement the shocks to the curve. I have been thinking of maybe an impulse-response function, but some literature simply suggest the following: Thus should I then multiply the first eigenvector by 25bps for all tenors except the bumped one and then just add these loadings to the actual yield, or am I misinterpret the guidance? Thankful for any advice! ## Answer by Attack68 (score 3) https://quant.stackexchange.com/a/42524 The point of PCA is that your components are supposed to represent axes of principal variation. I.e. if you just use one principal component you can describe the most variation of true market movements with that, than you can with any other relative combinations of instruments. So if your component (eigenvector) is: [2y,5y,7y,10y] = ~[25,33,24,23], where I have used the ~ symbol to represent a normalisation opertion (the vector should really have norm equal to one), then the most common market-movement amidst your data is for 5y to be slightly more volatile than the other rates and 10y to be the least, but all swaps move in the same direction. The point being that if you are considering a shock scenario described as "rates go higher by a considerable amount" then rather than saying [2y,5y,7y,10y]=[+25,+25,+25,+25] you can use the weights as determined by PCA which are more statistically likely (as measured from your historic dataset) to be representative of future market moves. Indeed if I were tasked with this I would go one stage further. 25bps is an arbitrary choice of scenario, why have you chosen 25bps, why not 10 or 100 or 1bn? I would probably employ a statistical analysis over my historic dataset to see what is a reasonable scenario of stress given the distribution of factor multipliers that are applied to the dataset for any particular principal component. ## Answer by Phil H (score 0) https://quant.stackexchange.com/a/42532 I would support Attack68's answer that using PCA implies looking at historic patterns in how the market moves, so you might as well make use of that. ## Get in the right space However, assuming you still need to apply specific shocks or scenarios you can still do so: you must decompose your change over the eigenvectors. PCA allows you to find a set of axes which are aligned with the patterns in your data. The component weights you have for each instrument give those instruments' positions in terms of those axes. The change you want to implement needs to be located in terms of those axes too, so that you can apply it in that space. ## Archer Analogy Consider the analogy of an archer aiming at a distant target. Having made 100 shots, they can perform a PCA to understand which things (vertical angle, horizontal angle, wind measurement, draw distance, arrow weight etc) are having the biggest impact on horizontal and vertical accuracy. But the eigenvectors will be things like `0.1*draw+0.9*vertical`, `1.4*wind-0.4*weight` etc. If the archer wants to know for a given shot what the effect will be of just changing the vertical angle, then they will need to split that change over the eigenvectors - maybe it's 95% the first eigenvector, -3% the 5th, etc. Then the expected effects those eigenvectors with the decomposed weights will sum to give the overall expected result. Essentially your components are held in a different coordinate system, so you have to shift to that coordinate system to use the information they contain.
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.