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:

Snapshot from a book

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!


2 Answers 2


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.


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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.