Documentation Center

  • Trial Software
  • Product Updates

transprobgrouptotals

Aggregate credit ratings information into fewer rating categories

Syntax

totalsGrouped = transprobgrouptotals(totals,groupingEdges)

Description

totalsGrouped = transprobgrouptotals(totals,groupingEdges) aggregates the credit ratings information stored in the totals input into fewer ratings categories, which are defined by the groupingEdges argument.

Input Arguments

totals

Structure, or a struct array of length nTotals, with fields:

  • totalsVeC — A vector of size 1-by-nRatings1.

  • totalsMat — A matrix of size nRatings1-by-nRatings2, with nRatings1nRatings2.

  • algorithm — A string with values 'duration' or 'cohort'.

    For the 'duration' algorithm, totalsMat(i,j) contains the total transitions observed out of rating i into rating j (all the diagonal elements are 0). The total time spent on rating i is stored in totalsVec(i). For example, if there are three rating categories, Investment Grade (IG), Speculative Grade (SG) and Default (D), and the following information:

    Total time spent    IG       SG       D
    in rating:       4859.09  1503.36  1162.05
     
    Transitions             IG   SG    D
    out of (row)       IG    0   89    7
    into (column):     SG  202    0   32
                        D    0    0    0

    Then:

    totals.totalsVec = [4859.09  1503.36  1162.05]
    totals.totalsMat = [  0   89    7
                        202    0   32
                          0    0    0]
    totals.algorithm = 'duration'

    For the 'cohort' algorithm, totalsMat(i,j) contains the total transitions observed from rating i to rating j, and totalsVec(i) is the initial count in rating i. For example, given the following information:

    Initial count       IG     SG     D
    in rating:        4808   1572   1145
    
    Transitions         IG     SG     D
    from (row)    IG  4721     80      7
    to (column):  SG   193   1347     32
                   D     0      0   1145

    Then:

    totals.totalsVec = [4808   1572   1145]
    totals.totalsMat = [4721     80      7
                         193   1347     32
                           0      0   1145]
    totals.algorithm = 'cohort'

    Note:   Common totals structures are the optional output arguments from transprob:

    • sampleTotals — A single structure summarizing the totals information for the whole dataset.

    • idTotals — A struct array with the totals information at the ID level.

    For more information, see Algorithms.

groupingEdges

Numeric array with increasing, positive integers to indicate how to group credit ratings into categories.

This table illustrates how to group a list of whole ratings into investment grade (IG) and speculative grade (SG) categories. Eight ratings are in the original list. Ratings 1 to 4 are IG, ratings 5 to 7 are SG, and rating 8 is a category of its own. In this example, the array of grouping edges is [4 7 8].

Original ratings: 'AAA' 'AA'  'A'   'BBB' | 'BB'  'B'   'CCC' | 'D'
                                          |                   |    
Relative ordering: (1)   (2)   (3)   (4)  |  (5)  (6)    (7)  | (8)
                                          |                   |    
Grouped ratings:           'IG'           |      'SG'         | 'D'
                                          |                   |    
Grouping edges:                      (4)  |              (7)  | (8)

In general, if groupingEdges has K elements edge1 < edge2 < ... <edgeK, ratings 1 to edge1 (inclusive) are grouped in the first category, ratings edge1+1 to edge2 in the second category, and so forth.

Regarding the last element, edgeK:

  • If nRatings1 equals nRatings2, then edgeK must equal nRatings1. This leads to K groups, and nRatingsGrouped1 = nRatingsGrouped2 = K.

  • If nRatings1 < nRatings2, then either:

    • edgeK equals nRatings1, in which case ratings edgeK+1,...,nRatings2 will be treated as categories of their own. This results in K+(nRatings2-edgeK) groups, with nRatingsGrouped1 = K and nRatingsGrouped2 = K + (nRatings2edgeK); or

    • edgeK equals nRatings2, in which case there must be a jth edge element, edgej, such that edgej equals nRatings1. This leads to K groups, and nRatingsGrouped1 = j and nRatingsGrouped2 = K.

Output Arguments

totalsGrouped

Structure, or a struct array of length nTotals, with fields:

  • totalsVec — A vector of size 1-by-nRatingsGrouped1.

  • totalsMat — A matrix of size nRatingsGrouped1-by-nRatingsGrouped2.

  • algorithm — A string, 'duration' or 'cohort'.

nRatingsGrouped1 and nRatingsGrouped2 are defined in the description of groupingEdges. Each structure contains aggregated information by categories, based on the information provided in the corresponding structure in totals, according to the grouping of ratings defined by groupingEdges and consistent with the algorithm choice.

Following the examples in the description of the totals input, suppose IG and SG are grouped into a single ND (Not-Defaulted) category, using the edges[2 3]. For the 'cohort' algorithm, the output is:

totalsGrouped.totalsVec = [6380   1145]
totalsGrouped.totalsMat = [6341     39
                              0   1145]
totalsGrouped.algorithm = 'cohort'

and for the 'duration' algorithm:

totalsGrouped.totalsVec = [6362.45  1162.05]
totalsGrouped.totalsMat = [0  39
                           0   0]
totalsGrouped.algorithm = 'duration'

Examples

expand all

Aggregate the Credit Ratings Information Stored in the totals Input

Use historical credit rating input data from Data_TransProb.mat. Load input data from file Data_TransProb.mat.

load Data_TransProb

% Call TRANSPROB with two output arguments
[transMat, sampleTotals] = transprob(data);
transMat
transMat =

  Columns 1 through 7

   93.1170    5.8428    0.8232    0.1763    0.0376    0.0012    0.0001
    1.6166   93.1518    4.3632    0.6602    0.1626    0.0055    0.0004
    0.1237    2.9003   92.2197    4.0756    0.5365    0.0661    0.0028
    0.0236    0.2312    5.0059   90.1846    3.7979    0.4733    0.0642
    0.0216    0.1134    0.6357    5.7960   88.9866    3.4497    0.2919
    0.0010    0.0062    0.1081    0.8697    7.3366   86.7215    2.5169
    0.0002    0.0011    0.0120    0.2582    1.4294    4.2898   81.2927
         0         0         0         0         0         0         0

  Column 8

    0.0017
    0.0396
    0.0753
    0.2193
    0.7050
    2.4399
   12.7167
  100.0000

Group into investment grade (ratings 1-4) and speculative grade (ratings 5-7); note, the default is the last rating (number 8).

edges = [4 7 8];
sampleTotalsGrp = transprobgrouptotals(sampleTotals,edges);

% Transition matrix at investment grade / speculative grade level
transMatIGSG = transprobbytotals(sampleTotalsGrp)
transMatIGSG =

   98.5336    1.3608    0.1056
    3.9155   92.9692    3.1153
         0         0  100.0000

Obtain the 1-year, 2-year, 3-year, 4-year, and 5-year default probabilities at investment grade and speculative grade level.

DefProb = zeros(2,5);
for t = 1:5
transMatTemp = transprobbytotals(sampleTotalsGrp,'transInterval',t);
DefProb(:,t) = transMatTemp(1:2,3);
end
DefProb
DefProb =

    0.1056    0.2521    0.4359    0.6537    0.9027
    3.1153    6.0157    8.7179   11.2373   13.5881

More About

expand all

Cohort Estimation

The cohort algorithm estimates the transition probabilities based on a sequence of snapshots of credit ratings at regularly spaced points in time. If the credit rating of a company changes twice between two snapshot dates, the intermediate rating is overlooked and only the initial and final ratings influence the estimates. For more information, see Algorithms.

Duration Estimation

Unlike the cohort algorithm , the duration algorithm estimates the transition probabilities based on the full credit ratings history, looking at the exact dates on which the credit rating migrations occur. There is no concept of snapshots in this method, and all credit rating migrations influence the estimates, even when a company's rating changes twice within a short time. For more information, see Algorithms.

References

Hanson, S., T. Schuermann, "Confidence Intervals for Probabilities of Default," Journal of Banking & Finance, Elsevier, vol. 30(8), pages 2281–2301, August 2006.

Löffler, G., P. N. Posch, Credit Risk Modeling Using Excel and VBA, West Sussex, England: Wiley Finance, 2007.

Schuermann, T., "Credit Migration Matrices," in E. Melnick, B. Everitt (eds.), Encyclopedia of Quantitative Risk Analysis and Assessment, Wiley, 2008.

See Also

|

Was this topic helpful?