The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

An example with 3 banks

An example with 3 banks

This document describe a toy example for the use of the package systemicrisk.

set.seed(123910) # arbitrary seed 
library(systemicrisk)

Suppose we are dealing with 3 banks and that they have total interbank liabilities/assets given by the following:

l <- c(1,2.5,3)
a <- c(0.7,2.7,3.1)

Suppose we are assuming \(p=0.5\) and \(\lambda=0.25\). Then we can run the Gibbs sampler to get a sample of the liabilities matrix condtional on \(l\) and \(a\).

L <- sample_ERE(l,a,p=0.5,lambda=0.25,nsamples=200,thin=20,burnin=10)

Some examples of the matrics generated are below.

L[[1]]
##      [,1] [,2] [,3]
## [1,]  0.0  0.0  1.0
## [2,]  0.4  0.0  2.1
## [3,]  0.3  2.7  0.0
L[[2]]
##           [,1]       [,2]      [,3]
## [1,] 0.0000000 0.09298631 0.9070137
## [2,] 0.3070137 0.00000000 2.1929863
## [3,] 0.3929863 2.60701369 0.0000000
L[[3]]
##           [,1]       [,2]      [,3]
## [1,] 0.0000000 0.09298631 0.9070137
## [2,] 0.3070137 0.00000000 2.1929863
## [3,] 0.3929863 2.60701369 0.0000000

Diagnostic of the R-output

All the caveats of MCMC algorithms apply. In particular it is useful to plot the paths of the individual liabilities, which we do below for the liabilities of Bank 1 towards Bank 2.

plot(sapply(L,function(x)x[1,2]),type="b")

plot of chunk unnamed-chunk-5

Also, the autocorrelation function should decline quickly.

acf(sapply(L,function(x)x[1,2]))

plot of chunk unnamed-chunk-6

In this case it decays quickly below the white-noise threshold (the horizontal dashed lines).

Default of banks

To be able to talk about default of banks we need to know the external assets and liabilities of the banks. Suppose we assume the following:

ea <- c(1,1,1)
el <- c(1,1,1)
default(L[[1]],ea=ea,el=el)$defaultind
## [1] 1 0 1
default(L[[2]],ea=ea,el=el)$defaultind
## [1] 1 0 1
default(L[[3]],ea=ea,el=el)$defaultind
## [1] 1 0 1

Below we apply two different default algorithms (without default costs and with default costs) to the liabilities matrices and compute the average number of times each bank defaults.

rowMeans(sapply(L, function(Lakt) default(Lakt,ea=ea,el=el)$defaultind))
## [1] 1.000 0.000 0.515
rowMeans(sapply(L, function(Lakt) default(Lakt,ea=ea,el=el,alpha=0.98,beta=0.98)$defaultind))
## [1] 1 0 1

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.