Skip to content

Distress Insurance Premium (DIP)

API

function
distress_insurance_premium(default_prob, correlations, default_threshold=0.15, random_seed=0, n_simulated_returns=500000, n_simulations=1000)

Distress Insurance Preimum (DIP)

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]. The mean LGD of 0.55 is taken down from the Basel II IRB formula.
  3. Compute the probability of losses and the expected losses from the simulations.
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.
  • 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 (float)

The distress insurance premium against a systemic financial distress.

Examples
>>> import numpy as np
>>> from frds.measures import distress_insurance_premium

Arbitrary default probabilities for 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, -0.1260125, -0.6366762, 0.1744837, 0.4689378, 0.2831761],
...         [-0.1260125, 1, 0.294223, 0.673963, 0.1499695, 0.05250343],
...         [-0.6366762, 0.294223, 1, 0.07259309, -0.6579669, -0.0848825],
...         [0.1744837, 0.673963, 0.07259309, 1, 0.2483188, 0.5078022],
...         [0.4689378, 0.1499695, -0.6579669, 0.2483188, 1, -0.3703121],
...         [0.2831761, 0.05250343, -0.0848825, 0.5078022, -0.3703121, 1],
...     ]
... )

Calculate the distress insurance premium.

>>> distress_insurance_premium(default_probabilities, correlations)
0.28661995758
>>> distress_insurance_premium(default_probabilities, correlations, n_simulations=10_000, n_simulated_returns=1_000_000)
0.2935815484909995

References

Source code | Bug report | Sponsor me


Last update: July 26, 2021
Back to top