Distress Insurance Premium

Introduction

A systemic risk metric by Huang, Zhou, and Zhu (2009) which represents a hypothetical insurance premium against a systemic financial distress, defined as total losses that exceed a given threshold, say 15%, of total bank liabilities.

The methodology is general and can apply to any pre-selected group of firms with publicly tradable equity and CDS contracts. Each institutions marginal contribution to systemic risk is a function of its size, probability of default, and asset correlation. The last two components need to be estimated from market data.

The general steps are:

  1. Use simulated asset returns from a joint normal distribution (using the correlations) to compute the distribution of joint defaults.

  2. The loss-given-default (LGD) is assumed to follow a symmetric triangular distribution with a mean of 0.55 and in the range of \([0.1,1]\).

Note

The mean LGD of 0.55 is taken down from the Basel II IRB formula.

  1. Compute the probability of losses and the expected losses from the simulations.

References

API

class frds.measures.DistressInsurancePremium(default_prob: ndarray, correlations: ndarray)[source]

Distress Insurance Premium

__init__(default_prob: ndarray, correlations: ndarray) None[source]
Parameters:
  • default_prob (np.ndarray) – (n_banks,) array of the bank risk-neutral default probabilities.

  • correlations (np.ndarray) – (n_banks, n_banks) array of the correlation matrix of the banks’ asset returns.

estimate(default_threshold: float = 0.15, random_seed: int = 0, n_simulated_returns: int = 500000, n_simulations: int = 1000) float[source]
Parameters:
  • default_threshold (float, optional) – the threshold used to calculate the total losses to total liabilities. Defaults to 0.15.

  • random_seed (int, optional) – the random seed used in Monte Carlo simulation for reproducibility. Defaults to 0.

  • n_simulated_returns (int, optional) – the number of simulations to compute the distrituion of joint defaults. Defaults to 500,000.

  • n_simulations (int, optional) – the number of simulations to compute the probability of losses. Defaults to 1,000.

Returns:

The distress insurance premium against a systemic financial distress.

Return type:

float

Examples

>>> import numpy as np
>>> from frds.measures import DistressInsurancePremium
>>> # hypothetical implied default probabilities of 6 banks
>>> default_probabilities = np.array([0.02, 0.10, 0.03, 0.20, 0.50, 0.15])
>>> # Hypothetical correlations of the banks' asset returns.
>>> correlations = np.array(
...     [
...         [ 1.000, -0.126, -0.637, 0.174,  0.469,  0.283],
...         [-0.126,  1.000,  0.294, 0.674,  0.150,  0.053],
...         [-0.637,  0.294,  1.000, 0.073, -0.658, -0.085],
...         [ 0.174,  0.674,  0.073, 1.000,  0.248,  0.508],
...         [ 0.469,  0.150, -0.658, 0.248,  1.000, -0.370],
...         [ 0.283,  0.053, -0.085, 0.508, -0.370,  1.000],
...     ]
... )
>>> dip = DistressInsurancePremium(default_probabilities, correlations)
>>> dip.estimate()
0.2865733550799999