The impact_susceptibility
measures the
feasible contagion paths that can reach a vertex in relation to its
direct contagion paths. When the impact susceptibility is greater than 1,
it means that the vertex is vulnerable to other vertices beyond its direct
neighbors (remotely vulnerable).
The impact_fluidity
is simply the average of the impact susceptibility in
the network.
The impact_diffusion
tries to capture the influence
exercised by a node on the propagation of impacts in the network. The
impact diffusion of a vertex is measured by the change it causes on the
impact susceptibility of other vertices when its power to
propagate contagion is removed from the network.
All these measures are based on the communicability of the
vulnerability matrix (see vulnerability_matrix
and
communicability_matrix
).
impact_susceptibility(
exposures,
buffer,
weights = NULL,
terms = Inf,
sparse = TRUE,
binary = TRUE,
exposure_type = c("assets", "liabilities", "impact", "vulnerability")
)impact_fluidity(
exposures,
buffer,
weights = NULL,
terms = Inf,
sparse = TRUE,
binary = TRUE,
exposure_type = c("assets", "liabilities", "impact", "vulnerability")
)
impact_diffusion(
exposures,
buffer,
weights = NULL,
terms = Inf,
sparse = TRUE,
binary = TRUE,
exposure_type = c("assets", "liabilities", "impact", "vulnerability")
)
an adjacency matrix
, (sparse) Matrix
or an igraph
object with the network of bilateral exposures between vertices. By default, the function
expects the exposures in the form of an assets matrix
in which A -> B means that A has an asset with B. However, you can
change that with the parameter exposure_type
. When using a matrix, preferably it should have
rows and columns names.
a numeric vector with the capital buffer for each vertex.
Values should be in the same row/column order as the network of bilateral exposures. The
buffer is not needed if exposure_type = "vulnerability"
.
default is NULL
. You can use a numeric
vector of weights to give some economic significance to the measures, like,
for instance, the total assets of the nodes.
truncates the communicability matrix evaluation up to a pre-defined number of terms.
If terms = Inf
the function computes the matrix exponential using expm
.
should the function use sparse matrices when computing the communicability?
However, if terms = Inf
the function will use expm
which uses dgeMatrix-class
.
if binary = TRUE
the function computes a 'binary' impact or vulnerability matrix.
It truncates all values less than 1 to 0 and all values greater than 1 to 1.
character vector indicating the type of the bilateral exposures. It can be
an "assets"
network (where A -> B means that A has an asset with B),
a "liabilities"
network (where A -> B means that A has a debt with B),
a (binary) "impact"
matrix (where A -> B indicates the relative impact
of A in B's capital buffer), or
a (binary) "vulnerability"
matrix
(where A -> B indicates the relative impact A suffers from B's default).
The default is "assets"
.
The impact_susceptibility
function returns a vector with the (weighted) impact susceptibility
The impact_fluidity
function returns a vector with the (weighted) impact fluidity of the network.
The impact_diffusion
function returns a data.frame
with
the vertex name and the (weighted) start, intermediate and total impact diffusion.
Silva, T.C.; Souza, S.R.S.; Tabak, B.M. (2015) Monitoring vulnerability and impact diffusion in financial networks. Working Paper 392, Central Bank of Brazil.
Silva, T.C.; Souza, S.R.S.; Tabak, B.M. (2015) Network structure analysis of the Brazilian interbank market . Working Paper 391, Central Bank of Brazil.
# NOT RUN {
# Creating example data
## Assets Matrix (bilateral exposures)
assets_matrix <- matrix(c(0, 10, 3, 1, 0, 2, 0, 3, 0), ncol = 3)
rownames(assets_matrix) <- colnames(assets_matrix) <- letters[1:3]
## Capital Buffer
buffer <- c(a = 2, b = 5, c = 2)
# Measures
impact_susceptibility(assets_matrix, buffer)
impact_fluidity(assets_matrix, buffer)
impact_diffusion(assets_matrix, buffer)
# }
Run the code above in your browser using DataLab