[This article was first published on K & L Fintech Modeling, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This post explains how to calculate the IRRBB interest rate shock scenarios of BCBS(2016) prior to discussing change in economic value of equity (∆EVE) and net interest income (∆NII).

# IRRBB Interest Rate Shock Scenarios

IRRBB refers to the current or prospective risk to a bank’s capital and to its earnings, arising from the impact of adverse movements in interest rates on its banking book. The adverse movements of interest rates are implemented by hypothetical shock scenarios using the guideline of BCBS (2016).

The impact of interest rate shocks on individual bank’s change in economic value of equity (∆EVE) and net interest income (∆NII) are computed based on these interest rate shock scenarios. These interest rate shocks are heuristic and purely hypothetical. They do not reflect monetary policy considerations.

### 6 Interest Rate Shock Scenarios

Banks should apply six prescribed interest rate shock scenarios to capture parallel and non-parallel gap risks for EVE and two prescribed interest rate shock scenarios for NII (two parallel shocks).

These scenarios are applied to IRRBB exposures in each currency for which the bank has material positions. BCBS (2016) presents the standardized interest rate shock scenarios as follows.

 parallel shock up : a constant parallel shock up across all maturity parallel shock down : a constant parallel shock down across all maturity short rates shock upshort rates shock down steeper shock : short rates down and long rates upﬂatter shock : short rates up and long rates down

For illustration purpose, when we assume that a yield curve is constant at 1% across all maturities (Base), shocked curves are generated as follows.

### Formula for IRRBB IR Shock Scenarios

The size of shock is different from currency to currency. For instance, 6 shocks for USD currency are derived as follows.

1) Parallel shock up/down
\begin{align} \Delta R_{p}(t_k) = \pm \overline{R}_{p,US}= \pm 0.02 \end{align}
2) Short rates shock up/down
\begin{align} \Delta R_{short}(t_k) &= \pm \overline{R}_{short,US} \times \exp \left(-\frac{t_k}{4} \right) \\ &= \pm 0.03 \times \exp \left(-\frac{t_k}{4} \right) \end{align} Here, $$\exp \left(-\frac{t_k}{4} \right)$$ is a monotonic decreasing function with maturity. This type of functional form is already used as forward rate slope factor of Nelson-Siegel model.

To define the steepener/flattener shock, additional long rate shock is needed to move long-term rates as follows.

3) Long rates shock up/down
\begin{align} \Delta R_{long}(t_k) &= \pm \overline{R}_{long,US} \times \left(1-e^{-\frac{t_k}{4}}\right) \\ &= \pm 0.015 \times \left(1-e^{-\frac{t_k}{4}}\right) \end{align} This is used only when steepener/flattener shock are defined.

4) Rotational shock up/down (steepener/flattener)

\begin{align} \Delta R_{steep}(t_k) &= -0.65 \times |\Delta R_{short}(t_k)| + 0.9 \times |\Delta R_{long}(t_k)| \\ \Delta R_{flat}(t_k) &= +0.80 \times |\Delta R_{short}(t_k)| – 0.6 \times |\Delta R_{long}(t_k)| \end{align}
As these formula are for USD currency using $$\overline{R}_{shock,US}$$, for other currencies refer to the next table in BCBS (2016) to find $$\overline{R}_{shock,c}$$.

### R code

The following R code implements IRRBB IR scenarios with the guideline of BCBS (2016).

 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 #========================================================## Quantitative ALM, Financial Econometrics & Derivatives # ML/DL using R, Python, Tensorflow by Sang-Heon Lee ## https://kiandlee.blogspot.com#——————————————————–## IRRBB Interest Rate Shock Scenarios#========================================================# graphics.off(); rm(list = ls()) #=======================================================# read data#=======================================================str.zero <– “mat rate     0.083333333    0.01529     0.25            0.01648     0.5            0.01815     0.75            0.01947     1              0.02045     2              0.02252     3              0.02410     4              0.02549     5              0.02637     6              0.02730     7              0.02787     8              0.02825     9              0.02857     10              0.02881     12              0.02913     15              0.02953     20              0.03042″ df <– read.table(text = str.zero, header = TRUE) #=======================================================# make shocks#======================================================= # size of shocks by each currency# USD parameter : BCBS (2016)r_bar_p_c <– 0.02r_bar_s_c <– 0.03r_bar_l_c <– 0.015 # placeholder for rate shocksdr <– data.frame(base = rep(0,length(df$mat))) # Parallel shock up/downdr$pu <–  r_bar_p_cdr$pd <– –r_bar_p_c # Short rate shock up/downdr$su <–  r_bar_s_c*exp(–df$mat/4)dr$sd <– –r_bar_s_c*exp(–df$mat/4) # Long rate shockdrlong <– r_bar_l_c*(1–exp(–df$mat/4)) # Rotational shock dr$steep <– –0.65*dr$su + 0.9*drlongdr$flat <– 0.8*dr$su – 0.6*drlong dr #=======================================================# generate shocked curves#======================================================= (df.irrbb <– 0.01 + dr)x11(width = 5, height = 4) matplot(df$mat, df.irrbb, type=“l”, lty = 1, lwd = 3, xlab = “Maturity(year)”, ylab = “Yield(decimal)”, main = “IRRBB IR shock scenarios (Base = 1%)”) (df.irrbb <– df$rate + dr)x11(width = 5, height = 4) matplot(df\$mat, df.irrbb, type=“l”, lty = 1, lwd = 3,        xlab = “Maturity(year)”, ylab = “Yield(decimal)”,        main = “IRRBB IR shock scenarios”) Colored by Color Scripter cs

Running this R code, we can get the following table which contains the base curve and 6 shocked curves.

The base yield curve and the six shock scenarios are depicted as follows.

### Concluding Remarks

In this post we have implemented R code to calculate BCBS(2016) IRRBB IR scenarios. Now that these IR scenarios are given, understanding and calculating ∆EVE and ∆NII in IRRBB will be discussed later.

### Reference

BCBS (2016), “Standards – Interest rate risk in the banking book,” Bank for International Settlements. $$\blacksquare$$

To leave a comment for the author, please follow the link and comment on their blog: K & L Fintech Modeling.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

# Never miss an update! Subscribe to R-bloggers to receive e-mails with the latest R posts.(You will not see this message again.)

Click here to close (This popup will not appear again)