# Filtered Historical Simulation VaR for swaps

I am trying to understand how to calculate FHS VaR for a portofolio of vanilla swaps. I think I understand the main ideas behind FHS VaR and how to implement it for other assets such as equities. I have the historical underlying yield curves for the look-back period and I was thinking to reprice the swaps for each historical scenario and calculate returns as the difference between the swaps PV from each scenario and the today's PV. Then filter returns using EWMA or GARCH. Is this the right approach ? Could you suggest some papers that describe the implementation of the FHS VaR for swaps?

Thanks!

Let us suppose for concreteness that the 10y swap rate is 0.5% today and was 7% a year and and 6.5% a "year minus a day" ago...

reprice the swaps for each historical scenario and calculate returns as the difference between the swaps PV from each scenario and the today's PV

This won't help you at all, really. Take a step back and consider your goal. You're looking at your book's market risk. Should you be concerned about the possibility that the market will jump from where is is today to exactly where it was a year ago? No, that's not a realistic concern and not one you should be worried about. Calculating mark to market (mtm) of your current positions directly using some historical market data will not tell you anything useful here.

Rather, you want to see how the markets moved (changed from one day to another day) historically, and calculate the P&L as the change from the mtm today to mtm if the markets move the same way starting from where they are today.

But what does "the same way" mean exactly? We see that historically, some interest rate moved from 7% to 6.5%; what would "the same" move mean today? I've seen a surprising number of people treating interest rates as equity prices - this is a (6.5-7)/7 = 7.41 decrease, so we likewise decrease today's .5% by 7.41 to get 0.464%. Others look in the change in rate - it decreased by 0.5%, so the same decrease today would be from .5% to 0. Others seek to replicate the percentage change in discount factors (i.e. in the prices of zero-coupon bonds with the same time left to maturity). Still others mix in logs in various creative ways.

(You could be looking at the change in log(1+rate) and applying the same change to today's rate.)

It doesn't help that some regulatory guidance (misguided, in my humble opinion) discuss interest rate stress ecenarios in basis points, for example https://www.fdic.gov/news/financial-institution-letters/2012/fil12002.html says:

Management should ensure it stress tests IRR exposures using appropriate scenarios, including meaningful interest rate shocks, to identify the inherent risk. For example, in a low-rate environment, institutions should run interest rate shocks of +300 and +400 basis points. If conditions warrant, institutions should test more severe scenarios.

Once you have the perturbation, you can fully reprice your swaps under the perturbed market data (this is the most accurate if you have enough computing power) to get the perturbed mtm, and subtract the current mtm to get the P&L; or you can escimate the P&L's faster, but less accurately, from the perturbations and the risk measures.

• All valid points. Just curious what are the best practices to overcome the level problem (e.g. 7% historical level may not be as relevant and the absolute changes may be (e.g. 7% - 6.5% = 0.5% may not be representative).
– AK88
Commented Sep 27, 2021 at 14:40
• @AK88 sadly, what we do often see out there goes along the lines of "66°F is twice as hot as 33°F" or "The stock used to cost 25, went down to 20, so the same move would take it down to 15". :) Denote 1+rate(date) by F(date). (ideally, zero rate as Kermittfrog wrote in his excellent answer, but observable swap rate may be "close enough") A better way to derive a rate perturbed under a scenario similar to a historical one might be F(perturbed) = F(today) / F(historical date) × F(historical date+1) = exp (log(F(today)) - log(F(historical date)) + log(F(historical date+1))), rather than rate. Commented Sep 30, 2021 at 12:22
• What if you have a swap with more than one risk factor, e.g. a commodity swap, with depends on the price of the underlying commodity, interest rates and tenors? I have never seen this implemented, but I guess it is possible to have a VaR figure for each risk factor given the perturbations obtained from historical prices. How the VaR for this trade would be computed considering all risk factors? Commented Jan 10, 2023 at 14:56
• A long ago I actually worked on the VaR of exotic commodity trades that my bank did with Rnron. That was a long time ago - I don't think today's market participants like Glencore are as inventive as Enron used to be :) anyway, you can have a position whose mark ro market and p&l depends on interest rate curve, commodity curve, credit spreads, equity prices, all sorts of inputs. Most, not all, liquid commodities have curves built from exchange traded futures. In a historical simulation, just keep in mind that if it's January 23 now, and your position is sensitive to, say, potatoes in January 24 Commented Jan 10, 2023 at 15:27
• So, for every day in the last, say, 3 years, you see how 12mo interest rates and 12mo potatoes (12mo as of that hiatorical date, not Jan '24!) moved, and how the same move would affect your position today. Commented Jan 10, 2023 at 16:00

Adding to Dimitris' answer (this is a too long for a comment)

Proceed as follows:

1. Identify risk factors $$r^{(i)}$$, $$i=1\ldots n$$. Say the absolute returns of the pillars 1Y,2Y,...30Y of the discounting and forwarding zero rate term structures. Make sure that you have no gaps in your observations.

2. Based on the time series of each risk factor, run a GARCH model $$y^{(i)}_{t}-y^{(i)}_{t-1}\equiv r^{(i)}_t=\sigma^{(i)}_t\epsilon^{(i)}_t$$ with $$(\sigma^{(i)}_t)^2=a^{(i)}_0+\sum\limits_{k=1}^n\alpha^{(i)}_k(r^{(i)}_{t-k})^2+\beta^{(i)}(\sigma_{t-1}^{(i)})^2$$, and store the time series of the pure innovation terms, $$\epsilon^{(i)}_t$$ as well as the $$\sigma^{(i)}_t$$-values.

3. Prepare today's $$\sigma_{t_0}^{(i)}$$ and randomly draw a historical time index $$\tau$$, and use historical risk factor returns $$\epsilon_{\tau}^{(i)}$$ in order to arrive at some simulated $$r^{(i)}_{t_0+1}$$ for each risk factor. You can repeat this step for some time (updating all $$\sigma_t^{(i)}$$ along the way according to you GARCH specifications) to arrive at a series of changes for all risk factors. Then, for some time horizon $$h$$, you can get your simulated zero rates as $$y_{t_0+h}^{(i)}=y_{t_0}^{(i)}+\sum_{k=1}^hr_{t_0+i}^{(i)}$$, thereby simulating new curves.

4. Price under the new curves.

5. Repeat 3. + 4. for some simulation number $$M$$ and infer risk.