Liquidity risk measurement

Traditional liquidity risk measurement tools are the so-called static and dynamic liquidity gap tables. A liquidity gap table gives a cash-flow view of the balance sheet, and organizes the balance sheet items according to their contractual cash-inflows and cash-outflows into maturity buckets. The net cash-flow gap in each bucket shows the bank structural liquidity position. The static view assumes a rundown balance sheet while the dynamic liquidity table also takes into account the cash-flows from rollovers and new businesses. For the sake of simplicity, we demonstrate here only the static view of the liquidity positions.

Starting with the preparation of daily cash-flow positions. Sometimes, we need to know what the forecasted liquidity position is on a given date. It is easy to aggregate the cashflow.table by date.

head(aggregate(. ~ date, FUN = sum, data = subset(cashflow.table,select = -c(id, account))))
        date            cf    interest    capital remaining
1 2014-10-01   930.0387500   0.0387500   930.0000      0.00
2 2014-10-14     0.6246667   0.6246667     0.0000   3748.00
3 2014-10-15  2604.2058990 127.5986646  2476.6072  13411.39
4 2014-10-28   390.7256834 124.6891519   266.0365  23444.96
5 2014-10-30 -3954.2638670  52.6149502 -4006.8788 -33058.12
6 2014-10-31    -0.1470690  -0.1470690     0.0000  -2322.00

Secondly, let's prepare a liquidity gap table and create a chart. We can also use a predefined function (lq.table) and check the resulting table.

lq <- lq.table(cashflow.table, now = NOW)
round(lq[,1:5],2)
               1M    2-3M     3-6M    6-12M     1-2Y
afs_1        2.48 3068.51 14939.42     0.00     0.00
cb_1       930.04    0.00     0.00     0.00     0.00
cl_1      3111.11    0.00   649.51  2219.41  2828.59
cor_sd_1  -217.75 -217.73  -653.09 -1305.69 -2609.42
cor_td_1    -1.90 -439.66 -6566.03     0.00     0.00
is_1        -8.69  -17.48 -2405.31  -319.80  -589.04
mmp_1        0.16 2400.25     0.00     0.00     0.00
mmt_1       -0.12   -0.54    -0.80 -1201.94     0.00
oth_a_1      0.00    0.00     0.00     0.00     0.00
oth_l_1      0.00    0.00     0.00     0.00     0.00
rep_1     -500.05    0.00     0.00     0.00     0.00
ret_sd_1  -186.08 -186.06  -558.04 -1115.47 -2228.46
ret_td_1 -4038.96   -5.34 -5358.13 -3382.91     0.00
rm_1       414.40  808.27  1243.86  2093.42  4970.14
ro_1       466.67  462.50  1362.50  2612.50   420.83
total      -28.69 5872.72  2653.89  -400.48  2792.63

To plot the liquidity gap figure, we can use the barplot function, which is as follows:

plot.new()
par.backup <- par()
par(oma = c(1, 1, 1, 6), new = TRUE)
barplot(nii, density=5*(1:(NROW(nii)-1)), xlab="Maturity", cex.names=0.8, ylab = "EUR", cex.axis = 0.8, args.legend = list(x = "right"))
title(main = "Net interest income table", cex = 0.8, sub = paste("Actual date: ",as.character(as.Date(NOW))) )
par(fig = c(0, 1, 0, 1), oma = c(0, 0, 0, 0),mar = c(0, 0, 0, 0), new = TRUE)
plot(0, 0, type = "n", bty = "n", xaxt = "n", yaxt = "n")
legend("right", legend = row.names(nii[1:(NROW(nii)-1),]), density = 5*(1:(NROW(nii)-1)), bty = "n", cex = 1)
par(par.backup)

The output of the barplot function is as follows:

Liquidity risk measurement

The bars on the plot show the liquidity gap in each time bucket. The dashed line with squares represents the net liquidity position (financial need), while the solid black line shows the cumulative liquidity gap.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.81.98