Banking and Financial Intermediation
Department of Applied Finance
2025-03-20
Interest Rate Risk
Interest rate risk is the possibility of a financial loss due to changes in interest rates.
Recall that in Week 1, we explained one of the key functions performed by financial institutions (especially depositary institutions) is maturity transformation. For DIs, they take short-term deposits from depositors and make long-term loans to borrowers.
Assets | Liabilities and Equity |
---|---|
Loans (relatively long-term) | Deposits (relatively short-term) |
Other assets | Other liabilities |
Equity |
As a result,
Consider an example bank that has $2 million of 10-year fixed-rate loans and $1 million of 1-year fixed-rate term deposits now. The bank expects to have the same balance sheet in the future.
What would happen in 1 year from now?
This is a typical refinancing risk - the costs of rolling over funds or re-borrowing funds will rise above the returns generated on investments.
Consider another example bank that has $2 million of 1-year fixed-rate loans and $1 million of 2-year fixed-rate term deposits now. The bank expects to have the same balance sheet in the future.
What would happen in 1 year from now?
This is a typical reinvestment risk - the returns on funds to be reinvested will fall below the cost of funds.
The value of longer-maturity instruments typically is more sensitive to interest rate.
For example, a bond’s price is given by
\[ P = \sum_{t=1}^T\frac{C}{(1+r)^t} + \frac{F}{(1+r)^T} \qquad(1)\]
where \(C\) is coupon payment, \(F\) face value, \(T\) maturity, and \(r\) interest rate.
If a FI is financed by issuing long-term bonds and invests in short-term loans, given a change in interest rate, its liabilities’ value would change by more than the change in its assets’ value, thereby causing an impact on its net worth.
viewof maturity4 = Inputs.range(
[1, 30],
{value: 15, step: 1, label: "Maturity (years):"}
)
viewof couponRate4 = Inputs.range(
[0.01, 0.2],
{value: 0.05, step: 0.01, label:"Coupon rate:"}
)
d = {
const f = 100;
let c, m;
c = couponRate4;
m = maturity4;
function pv(c, f, t, r) {
return c * (1 - (1+r)**(-t)) / r + f / (1+r)**(t)
}
const prices = {"YTM": [], "Price": []};
let coupon = f * c;
for (let ytm = 0.01; ytm < 20; ytm++) {
let price = pv(coupon, f, m, ytm/100);
prices["YTM"].push(ytm);
prices["Price"].push(price);
}
return prices;
}
data4 = transpose(d)
Plot.plot({
caption: "Assume $100 bond, annual coupons paid in arrears and effective annual discount rate.",
x: {padding: 0.4, label: "YTM (%)"},
grid: true,
marks: [
Plot.ruleY([0, 100]),
Plot.ruleX([0]),
Plot.lineY(data4, {x: "YTM", y: "Price", stroke: "blue"}),
]
})
The relative degree of interest rate volatility is directly linked to the monetary policy of the Reserve Bank of Australia (RBA).
No matter what, interest rate volatility exists and thus, the appropriate measurement of management of interest rate risk is important to every FI.
Image source: Steven Desmyter
As discussed last week, the three pillars of Basel framework (since Basel II) include:
The Pillar 1 involves a capital adequacy framework surrounding minimum ratios of various capital (CET1, Tier 1, Total) to RWA.
The Interest Rate Risk in the Banking Book (IRRBB) is part of the Basel capital framework’s Pillar 2 (and Pillar 3).
Basel III guidelines address the issue of interest rate risk primarily through:
Interest Rate Risk in the Banking Book (IRRBB)
Supervisory Review Process (Pillar 2)
Disclosure Requirements (Pillar 3)
From here, we’re to study specific models and technique for measuring FI’s interest rate risk. However, it is helpful to first explain the general rule so to better understand the big picture.
A risk causes an unwanted negative impact on a FI. To measure such risk, we need to specify a few things:
The rest of this lecture discusses two models for measuring interest rate risk with different focuses.
Repricing model | Duration model | |
---|---|---|
Which characteristic? | Net interest income (NII) | Net worth |
Sensitivity measurement? | By assumption | Duration |
Size of risk? | Flexible | Flexible |
Book value or market value? | Book value | Market value |
Time frame? | Flexible | Flexible |
Repricing gap is the difference between rate-sensitive assets (RSA) and rate-sensitive liabilities (RSL).
An asset (or liability) is “rate-sensitive” if it is repriced at or near current market interest rates within a certain time horizon (or maturity bucket). For example,
Under repricing model, banks report their repricing gaps for various maturity buckets. For example,
How to determine RSA/RSL for each bucket?
Ask a simple question: Will or can this asset or liability have its interest rate changed within the maturity bucket? If the answer is yes, it is a rate-sensitive asset or liability. If the answer is no, it is not rate sensitive.
Let’s practice. Try to identify the one-year RSA and RSL given the following assets and liabilities of a bank.
Assets | Liabilities | Gaps | Cumulative gap | ||
---|---|---|---|---|---|
1 | One day | 20 | 30 | -10 | -10 |
2 | One day to three months | 30 | 40 | -10 | -20 |
3 | Three months to six months | 70 | 85 | -15 | -35 |
4 | Six months to 12 months | 90 | 70 | +20 | -15 |
5 | One year to five years | 40 | 30 | +10 | -5 |
6 | Over five years | 10 | 5 | +5 | 0 |
Total | $260 | $260 |
For example, a negative $10 million difference between its RSA and RSL being repriced in one day (one-day bucket). A rise in the overnight rate would lower the FI’s net interest income since the FI has more rate-sensitive liabilities than assets in this bucket.
The repricing model can be used to estimate the change in the FI’s net interest income in a particular repricing bucket if interest rates change.
\[ \Delta NII_i = (GAP_i) \times \Delta R_i = (RSA_i - RSL_i) \times \Delta R_i \]
where:
One-day repricing gap
In the first bucket of Table 3, if the gap is negative $10 million and overnight interest rate rises by 1 percent, the annualized change in the FI’s future NII is:
\[ \Delta NII_i = GAP_i \times \Delta R_i = -10 \text{ million} \times 0.01 = -100,000 \]
So, the repricing model suggests a loss of $100,000 in net interest income for the FI.
One-year repricing gap
It is common to also estimate the one-year (cumulative) repricing gap, which is -$15 million from Table 3.
\[ \Delta NII_i = CGAP_i \times \Delta R_i = -15 \text{ million} \times 0.01 = -150,000 \]
If the average interest rises by 1 percent, the model suggests a loss of $150,000 in net interest income.
Assume both RSAs and RSLs equal $155 million. Suppose that there is a general interest rate rise and that the rates on RSAs rise by 1.2 percent and rates on RSLs rise by only 1 percent. What is the resulting change in NII?
\[ \Delta NII_i = RSA_i \times \Delta R^A_i - RSL_i \times \Delta R^L_i = (\$155M \times 0.012) - (\$155M \times 0.01) = \$310,000 \]
Suppose the RSA is $155 million and the RSL is $140 million. Interest rates rise by 1.2% on RSAs and 1% on RSLs. What is the change in NII?
\[ \Delta NII_i = RSA_i \times \Delta R_i^A - RSL_i \times \Delta R_i^L = (\$155M \times 0.012) - (\$140M \times 0.01) = \$460,000 \]
Let see a real-world application of repricing model by Texas Capital Bank, a (relatively small) commercial bank headquartered in Dallas, Texas, United States.
We can find its annual reports from SEC’s EDGAR system, which allows us to search for any corporate filings.
The repricing model is very simple and intuitive, but is NOT an accurate measure of interest rate risk.
Major shortcomings:
In the early 2000s, the BIS issued a consultative document suggesting a standardized model be used by regulators in evaluating a bank’s interest rate risk exposure. The approach suggested is firmly based on market value accounting and the duration gap model.
The duration gap (model):
Bigger banks have adopted duration model as their primary measure of interest rate risk.1
The essence of duration gap model is the concept of duration, which is covered in introductory finance courses.
Simply put, duration is the weighted-average time to maturity on the loan using the relative present values of the cash flows as weights.
\[ D = \sum_{t=1}^{N} w_t \times t \]
where \(D\) is the duration, and
\[ w_t = \frac{\text{PV of the cash flow at time } t}{\text{Total PV of all cash flows}} \]
Consider the duration of a 3-year coupon bond with a face value of $1,000, a coupon rate of 5%, and a yield to maturity of 4%. The bond pays annual coupons.
import pandas as pd
# Parameters
face_value, coupon_rate, yield_to_maturity, years = 1000, 0.05, 0.04, 3
annual_coupon_payment = face_value * coupon_rate
# Initialize and calculate values
data = [
(t, annual_coupon_payment if t < years else annual_coupon_payment + face_value)
for t in range(1, years + 1)
]
total_pv = sum(payment / (1 + yield_to_maturity) ** t for t, payment in data)
table = [
(
t,
payment,
pv := payment / (1 + yield_to_maturity) ** t,
weight := pv / total_pv,
t * weight,
)
for t, payment in data
]
# Create DataFrame
df = pd.DataFrame(
table,
columns=[
"Time (Years)",
"Payment ($)",
"PV of Payment ($)",
"Weight (PV/Total PV)",
"Weighted Time",
],
)
# Add totals row
totals = df.sum(numeric_only=True)
totals = pd.DataFrame(totals).T
totals["Time (Years)"] = "Total"
df = pd.concat([df, totals], ignore_index=True)
df.style.highlight_max(["Weighted Time"]).format(precision=2).hide()
Time (Years) | Payment ($) | PV of Payment ($) | Weight (PV/Total PV) | Weighted Time |
---|---|---|---|---|
1 | 50.00 | 48.08 | 0.05 | 0.05 |
2 | 50.00 | 46.23 | 0.04 | 0.09 |
3 | 1050.00 | 933.45 | 0.91 | 2.72 |
Total | 1150.00 | 1027.75 | 1.00 | 2.86 |
The bond’s duration is 2.86 years.
Consider the duration of a 5-year coupon bond with a face value of $1,000, a coupon rate of 4%, and a yield to maturity of 6%. The bond pays annual coupons.
import pandas as pd
# Parameters
face_value, coupon_rate, yield_to_maturity, years = 1000, 0.04, 0.06, 5
annual_coupon_payment = face_value * coupon_rate
# Initialize and calculate values
data = [
(t, annual_coupon_payment if t < years else annual_coupon_payment + face_value)
for t in range(1, years + 1)
]
total_pv = sum(payment / (1 + yield_to_maturity) ** t for t, payment in data)
table = [
(
t,
payment,
pv := payment / (1 + yield_to_maturity) ** t,
weight := pv / total_pv,
t * weight,
)
for t, payment in data
]
# Create DataFrame
df = pd.DataFrame(
table,
columns=[
"Time (Years)",
"Payment ($)",
"PV of Payment ($)",
"Weight (PV/Total PV)",
"Weighted Time",
],
)
# Add totals row
totals = df.sum(numeric_only=True)
totals = pd.DataFrame(totals).T
totals["Time (Years)"] = "Total"
df = pd.concat([df, totals], ignore_index=True)
df.style.highlight_max(["Weighted Time"]).format(precision=2).hide()
Time (Years) | Payment ($) | PV of Payment ($) | Weight (PV/Total PV) | Weighted Time |
---|---|---|---|---|
1 | 40.00 | 37.74 | 0.04 | 0.04 |
2 | 40.00 | 35.60 | 0.04 | 0.08 |
3 | 40.00 | 33.58 | 0.04 | 0.11 |
4 | 40.00 | 31.68 | 0.03 | 0.14 |
5 | 1040.00 | 777.15 | 0.85 | 4.24 |
Total | 1200.00 | 915.75 | 1.00 | 4.61 |
The bond’s duration is 4.61 years.
We are interested in the sensitivity of bond price to interest rate.
Duration directly measures the interest rate sensitivity of an asset or liability:
\[ \frac{\Delta P}{P} = - D \times \frac{\Delta R}{1+R} = - MD \times \Delta R \qquad(2)\]
where
The larger the numerical value of \(D\), the more sensitive is the price of that asset or liability to changes or shocks in interest rates.
Important
The relationship is only true for small changes in the yield.
Why does it work?
\[ \frac{\Delta P}{P} = - D \times \frac{\Delta R}{1+R} = - MD \times \Delta R \]
Why is it only true for small changes in the yield?
Consider the previous example of a 5-year annual-coupon bond in Table 5 with a 4% coupon rate and 6% yield. It has a duration of 4.61 years.
What is the price change if the interest rate (yield) decreases by 1 percent (\(\Delta R=-0.01\))?
Note
Recall Equation 2 that \(\frac{\Delta P}{P} = - D \times \frac{\Delta R}{1+R} = - MD \times \Delta R\).
\[ \text{Modified duration} = MD = \frac{D}{1+R} = \frac{4.61}{1+0.06} = 4.349 \]
So, we have
\[ \Delta P = - MD \times P \times \Delta R = - 4.349 \times \$1000 \times (-0.01) = \$43.49 \]
That is, a one percentage point (100 basis points) decrease in yield would increase bond price by $43.49.
Note that \(MD\times P\) is also named “dollar duration”, i.e., modified duration times the bond price.
Now that we have refreshed our knowledge of duration, how is duration relevant in FI’s interest rate risk management?
Let’s consider two cases.
Superannuation funds or insurers often have to make a specific amount of payment to their policyholders at a given future date. How to guarantee it? Investments may decrease in value if interest rate changes over the period.
There are two options:
However,
Duration can be used to measure a financial institution’s duration gap to evaluate the FI’s overall interest rate exposure. It is possible to calculate the duration of the asset portfolio and of the liability portfolio.
Duration of assets portfolio:
\[ D_A = \sum_{i=1}^{N_A} w_{iA} \times D^A_i \]
where \(N_A\) is the total number of assets, \(w_{iA}\) is the market value weight of asset \(i\), \(D^A_i\) is the duration of asset \(i\).
So, change of assets value for a given change in interest rate is
\[ \Delta A = - D_A \times A \times \frac{\Delta R}{1+R} \qquad(3)\]
Duration of liabilities portfolio:
\[ D_L = \sum_{i=1}^{N_L} w_{iL} \times D^L_i \]
where \(N_L\) is the total number of liabilities, \(w_{iL}\) is the market value weight of liability \(i\), \(D^L_i\) is the duration of liability \(i\).
So, change of liabilities for a given change in interest rate is
\[ \Delta L = - D_L \times L \times \frac{\Delta R}{1+R} \qquad(4)\]
We know that total assets (\(A\)) is the sum of liabilities (\(L\)) and equity (\(E\)): \(A=E+L\).
Therefore, \(E = A - L\), and \(\Delta E = \Delta A - \Delta L\).
Making use of the previous results Equation 3 and Equation 4, we have
\[ \Delta E = \left[- D_A \times A \times \frac{\Delta R}{1+R}\right] - \left[- D_L \times L \times \frac{\Delta R}{1+R}\right] \qquad(5)\]
If the level of interest and expected shock to interest rates are the same for both assets and liabilities, then:
\[ \Delta E = - (D_A - D_L k) \times A \times \frac{\Delta R}{1+R} \qquad(6)\]
where \(k=\frac{L}{A}\) measures the FI’s leverage.
Let’s examine the duration model Equation 6:
\[ \Delta E = - (D_A - D_L k) \times A \times \frac{\Delta R}{1+R} \]
The effect of interest rate changes on the market value of an FI’s net worth breaks down into three effects:
Suppose a FI has total assets of $100 million and total liabilities of $90 million.
Assume that the average duration of assets is 5 years, while the average duration of liabilities is 3 years. The current interest rate is 10%, but is expected to increase to 11% in the future.
We can calculate the expected change in the FI’s net worth as follows:
\[ \Delta E = - (D_A - D_L k) \times A \times \frac{\Delta R}{1+R} = -(5 - 3\times 0.9) \times \$100 \times \frac{0.01}{1+0.1} = -\$2.09 \]
This means that the FI could lose $2.09 million in net worth if interest rates rose by 1 per cent.
How can the FI manage the interest rate exposure?
Regulators, like APRA in Australia, require banks to hold a minimum amount of capital against their (risk-weighted) assets.
Thus, in order to comply with regulations, the aim of risk management should not be \(\Delta E=0\) but \(\Delta (\frac{E}{A}) = 0\).
Instead of setting \(D_A-D_L k=0\), the bank now needs to target \(D_A-D_L=0\).
AFIN8003 Banking and Financial Intermediation