File
default_insurance_premium.m
Name
default_insurance_premium
Synopsis
dip - Calculated the default insurance premium based on Huang et al. (2009).
Introduction
NOTE: PART OF A SET OF 2 RELATED FILES:
The Distressed Insurance Premium (DIP) is proposed as an ex ante systemic risk metric by Huang, Zhou, and Zhu (2009b) and it 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 marginalcontribution to systemic risk is a function of its size, probability of default (PoD), and asset correlation. The last two components need to be estimated from market data.
License
=============================================================================
Copyright 2011, Dimitrios Bisias, Andrew W. Lo, and Stavros Valavanis
COPYRIGHT STATUS: This work was funded in whole or in part by the Office of
Financial Research under U.S. Government contract TOSOFR-11-C-0001, and is,
therefore, subject to the following license: The Government is granted for
itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
worldwide license to reproduce, prepare derivative works,
distribute copies to the public, perform and display the work.
All other rights are reserved by the copyright owner.
THIS SOFTWARE IS PROVIDED "AS IS". YOU ARE USING THIS SOFTWARE AT YOUR OWN RISK. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS, CONTRIBUTORS, OR THE UNITED STATES GOVERNMENT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=============================================================================
Inputs
Outputs
Code
% Run warning message
warning('OFRwp0001:UntestedCode', ...
['This version of the source code is very preliminary, ' ...
'and has not been thoroughly tested. Users should not rely on ' ...
'these calculations.']);
num_banks = length(default_probabilities);
% Find the default thresholds for each bank We assume that the returns are
% standard normally distributed
default_thresholds = norminv(default_probabilities);
% Generate 500000 random Gaussian vectors
num_repetitions = 500000;
R = chol(correlations);
z = randn(num_repetitions,num_banks)*R;
% Find the probability distribution of joint defaults
default_distribution = zeros(num_banks+1,1); % 0,1,.., num_banks
for i=1:num_repetitions
num_defaults = sum(z(i,:)<default_thresholds');
default_distribution(num_defaults+1) = default_distribution( ...
num_defaults+1)+1;
end
default_distribution = default_distribution/num_repetitions;
num_repetitions = 1000;
losses_given_default = zeros(num_banks,num_repetitions);
% Calculate the distribution of total losses
for k = 1:num_banks
lgd = 0;
for i = 1:k
lgd = lgd + my_trirnd(0.1,0.55,1,num_repetitions);
end
losses_given_default(k,:) = lgd;
end
% Maximum losses are N. Divide this into N*100 intervals.
% Find the probability distribution of total losses in the default case
intervals = 100;
prob_losses = zeros(num_banks*intervals,1);
for i=1:num_banks
for j=1:num_repetitions
% Multiply losses_given_default(i,j) by intervals to find the right slot
%in the prob_losses. Then we increment this by probability of i defaults
prob_losses(ceil(losses_given_default(i,j)*intervals),1) ...
= prob_losses(ceil(losses_given_default(i,j)*intervals),1) ...
+default_distribution(i+1);
end
end
% Convert it to probability
prob_losses = prob_losses/num_repetitions;
% Find the probability that the losses are great than 0.15 the total
% liabilities i.e. > 0.15*N
prob_great_losses = sum(prob_losses(15*num_banks:end));
% expected losses given that losses are above 15% of the sector
exp_losses = [15*num_banks:100*num_banks]*prob_losses(15*num_banks:end) ...
/(100*prob_great_losses);
dip = prob_great_losses*exp_losses;
Examples
NOTE: Numbers used in the examples are arbitrary valid values.
They do not necessarily represent a realistic or plausible scenario.
default_probabilities = [.02, .10, .03, .20, .50, .15]';
correlations = ...
[ 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];
dip = default_insurance_premium(default_probabilities, correlations);
References