Systemic risk estimation

This method is based on the paper

Systemic risk analysis in reconstructed economic and financial networks
Giulio Cimini, Tiziano Squartini, Diego Garlaschelli, Andrea Gabrielli
Sci. Rep. 5 (15758) (2015)

DebtRank: a microscopic foundation for shock propagation
Marco Bardoscia, Stefano Battiston, Fabio Caccioli, Guido Caldarelli
PLoS ONE 10(6): e0130406 (2015)


(Partial) information represented by the total number N of banks, the (known or reconstructed) weighted, directed adjacency matrix W, banks' equity E0 at time 0, banks' equity E1 at time 1 and the total amount of time tau one is interested in letting our simulation run.

Since the weighted, directed adjacency matrix W is usually not known, an algorithmis needed in order to estimate the presence and the magnitude of each entry of W.


[1] check if some banks are already defaulted, by checking if the corresponding equities are zero, E0(i)<0. If this is the case, they remain in the "default" state at all subsequent time steps;

[2] a shock is assumed to affect the equities of the healthy banks. Since this shock is assumed to be external, its only effect is a reduction of all banks' equities: E1(i)<E0(i).

[3] assign a parameter (known as ``relative equity loss'') h(i)=(E0(i)-E1(i))/E0(i) to healthy banks in order to measure their level of distress. In fact, even if they are not defaulted as a consequence of the equity reduction, they become "closer" to default because of the external shock (and their relationships with other banks become more risky). A distressed bank is characterized by 0<h(i)<1. Whenever h(i)=1 or h(i)>1 bank i is defaulted;

[4] check if some banks are defaulted because of the external shock, by checking if h(i)=1 or h(i)>1. If this is the case, they remain in the "default" state at all subsequent time steps;

[5] calculate the transmitted distress to bank i (by ALL remaining banks with h(j,t-1)<1, i.e. both simply distressed and defaulted banks before being disconnected) as

(i,t) = ∑(j) (h(j,t)-h(j,t-1))*W(i,j)/E0(i)

where L(i,j) = W(i,j)/E0(i) is the leverage matrix;

[6] update the state of banks by calculating

h(i,t+1) = min{1,h(i,t)+∆(i,t)}

and check if some banks are defaulted because of the transmitted distress, by checking if h(i)=1 or h(i)>1;

[7] repeat steps 5-7 for the desired number of time steps.


The output of our algorithm consists of a list for each time step t=1...tau, each entry being the parameter h(i,t) for the corresponding bank. If the algorithm has reached a stationary condition before tau, then it stops. Such a list can be output as a *.txt, *.dat, *.csv file.

The algorithm also outputs a global index, i.e. the DebtRank, which is defined as the weighted average of the h indices:

DR(t) = ∑(j) e(j)*(h(i,t)-h(i,1))

where e(j)=E0(j)/(j)E0(j).

In order to run our algorithm:

[1] download the *.rar file at the bottom of the page;

[2] put the Matlab routines and the *.txt files inside the same folder;

[3] run the code line: [hList,DR]=DebtRank(W,E0,E1,tau);

[4] as output, the list of the h indices and the DebtRank indicator are obtained.

Here we show the result of our simulation for three external shocks of different entity.

Systemic risk estimation.rar
Tiziano Squartini,
Mar 5, 2017, 4:53 AM