Main Content

drc

Calculate default risk capital (DRC) charge results for each portfolio

Since R2024b

Description

DRCResults = drc(frtbsaObject) computes the default risk capital (DRC) charge results for each portfolio using the frtbsa object. For more information, see Default Risk Capital.

example

Examples

collapse all

Use a frtbsa object and the drc function to calculate the default risk capital (DRC) charge results for each portfolio. FRTB-SA (Standardized Approach for Fundamental Review of Trading Book) is a Basel Committee on Banking Supervision framework forcalculating market capital risk requirements that is based on a set of standardized risk factors.

Create frtbsa Object

Use bank format for numeric data to use two decimal places.

format bank

Define the ISDA® FRTB-SA CRIF file.

FRTBSACRIF = "FRTBSA_CRIF.csv";

Define the DRC reference date.

DrcRefCOBDate = datetime(2023,9,21);

Use frtbsa to create the FRTB-SA object.

myFRTBSA = frtbsa(FRTBSACRIF,DRCValuationDate=DrcRefCOBDate)
myFRTBSA = 
  frtbsa with properties:

                CRIF: [159×18 table]
       NumPortfolios: 2.00
        PortfolioIDs: [2×1 string]
          Portfolios: [2×1 frtbsa.Portfolio]
          Regulation: "Basel_d491"
    DomesticCurrency: "USD"
    DRCValuationDate: 21-Sep-2023
         NumDaysYear: 365.00

Examine Output

Display the contents of the ISDA FRTB-SA CRIF file.

myFRTBSA.CRIF
ans=159×18 table
    PortfolioID    TradeID       Variant       SensitivityID      RiskType      Qualifier     Bucket     Label1        Label2        Amount      AmountCurrency    AmountUSD    Label3    EndDate    CreditQuality    LongShortInd    CoveredBondInd    TrancheThickness
    ___________    ________    ____________    _____________    ____________    __________    ______    _________    ___________    _________    ______________    _________    ______    _______    _____________    ____________    ______________    ________________

       "P1"        "EQD_a1"    <missing>        "P1_EQD_a1"     "EQ_DELTA"      "ISSUER A"     "1"      <missing>    "SPOT"           8250.00        "USD"           8250.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQD_a2"    <missing>        "P1_EQD_a2"     "EQ_DELTA"      "ISSUER A"     "1"      <missing>    "REPO"           8333.33        "USD"           8333.33     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQD_b1"    <missing>        "P1_EQD_b1"     "EQ_DELTA"      "ISSUER B"     "2"      <missing>    "SPOT"          22000.00        "USD"          22000.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQV_a1"    "Variant 1"      "P1_EQV_a1"     "EQ_VEGA"       "ISSUER A"     "1"      "0.5"        <missing>         -50.00        "USD"            -50.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQV_a2"    "Variant 1"      "P1_EQV_a2"     "EQ_VEGA"       "ISSUER A"     "1"      "1"          <missing>         200.00        "USD"            200.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQV_b1"    "Variant 1"      "P1_EQV_b1"     "EQ_VEGA"       "ISSUER B"     "2"      "0.5"        <missing>        -166.67        "USD"           -166.67     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQC_a1"    "Variant 1a"     "P1_EQC_a1"     "EQ_CURV"       "ISSUER A"     "1"      "0.5"        <missing>      -18910.00        "USD"         -18910.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQC_a1"    "Variant 1a"     "P1_EQC_a1"     "EQ_CURV"       "ISSUER A"     "1"      "-0.5"       <missing>        6526.25        "USD"           6526.25     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQC_b1"    "Variant 1a"     "P1_EQC_b1"     "EQ_CURV"       "ISSUER B"     "2"      "0.5"        <missing>       -6288.00        "USD"          -6288.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "EQC_b1"    "Variant 1a"     "P1_EQC_b1"     "EQ_CURV"       "ISSUER B"     "2"      "-0.5"       <missing>        6120.00        "USD"           6120.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "CMD_a1"    <missing>        "P1_CMD_a1"     "COMM_DELTA"    "COAL"         "1"      "0"          "NEWCASTLE"      2000.00        "USD"           2000.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "CMD_a2"    <missing>        "P1_CMD_a2"     "COMM_DELTA"    "COAL"         "1"      "0"          "LONDON"         -500.00        "USD"           -500.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "CMD_b1"    <missing>        "P1_CMD_b1"     "COMM_DELTA"    "BRENT"        "2"      "0"          "LE HAVRE"        666.67        "USD"            666.67     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "CMD_c1"    <missing>        "P1_CMD_c1"     "COMM_DELTA"    "WTI"          "2"      "2"          "OKLAHOMA"       -875.00        "USD"           -875.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "CMV_a1"    "Variant 1"      "P1_CMV_a1"     "COMM_VEGA"     "COAL"         "1"      "0.5"        <missing>         333.33        "USD"            333.33     NaN        NaT        <missing>       <missing>        <missing>             NaN       
       "P1"        "CMV_a2"    "Variant 1"      "P1_CMV_a2"     "COMM_VEGA"     "COAL"         "1"      "1"          <missing>        -100.00        "USD"           -100.00     NaN        NaT        <missing>       <missing>        <missing>             NaN       
      ⋮

Display the number of portfolios and their IDs.

myFRTBSA.NumPortfolios
ans = 
          2.00

myFRTBSA.PortfolioIDs
ans = 2×1 string
    "P1"
    "P2"

Display the properties of the first Portfolio object.

myFRTBSA.Portfolios(1)
ans = 
  Portfolio with properties:

    PortfolioID: "P1"
         Trades: [69×1 frtbsa.Trade]
      RiskTypes: [69×1 string]

Display risk types of the portfolio.

myFRTBSA.Portfolios(1).RiskTypes
ans = 69×1 string
    "EQ_DELTA"
    "EQ_DELTA"
    "EQ_DELTA"
    "EQ_VEGA"
    "EQ_VEGA"
    "EQ_VEGA"
    "EQ_CURV"
    "EQ_CURV"
    "COMM_DELTA"
    "COMM_DELTA"
    "COMM_DELTA"
    "COMM_DELTA"
    "COMM_VEGA"
    "COMM_VEGA"
    "COMM_VEGA"
    "COMM_VEGA"
    "COMM_CURV"
    "COMM_CURV"
    "COMM_CURV"
    "GIRR_DELTA"
    "GIRR_DELTA"
    "GIRR_DELTA"
    "GIRR_VEGA"
    "GIRR_VEGA"
    "GIRR_VEGA"
    "GIRR_CURV"
    "GIRR_CURV"
    "FX_DELTA"
    "FX_DELTA"
    "FX_VEGA"
      ⋮

Display some of the trades of the portfolio.

myFRTBSA.Portfolios(1).Trades(1)
ans = 
  Trade with properties:

             TradeID: "EQD_a1"
             Variant: <missing>
       SensitivityID: "P1_EQD_a1"
            RiskType: "EQ_DELTA"
           Qualifier: "ISSUER A"
              Bucket: "1"
              Label1: <missing>
              Label2: "SPOT"
              Amount: 8250.00
      AmountCurrency: "USD"
           AmountUSD: 8250.00
              Label3: NaN
             EndDate: NaT
       CreditQuality: <missing>
        LongShortInd: <missing>
      CoveredBondInd: <missing>
    TrancheThickness: NaN

myFRTBSA.Portfolios(1).Trades(30)
ans = 
  Trade with properties:

             TradeID: "FXV_b1"
             Variant: "Variant 1"
       SensitivityID: "P1_FXV_b1"
            RiskType: "FX_VEGA"
           Qualifier: "EURCLP"
              Bucket: <missing>
              Label1: "0.5"
              Label2: <missing>
              Amount: 175.00
      AmountCurrency: "USD"
           AmountUSD: 175.00
              Label3: NaN
             EndDate: NaT
       CreditQuality: <missing>
        LongShortInd: <missing>
      CoveredBondInd: <missing>
    TrancheThickness: NaN

myFRTBSA.Portfolios(1).Trades(60)
ans = 
  Trade with properties:

             TradeID: "RRAO_a2"
             Variant: <missing>
       SensitivityID: "P1_RRAO_a2"
            RiskType: "RRAO_01_PERCENT"
           Qualifier: <missing>
              Bucket: <missing>
              Label1: <missing>
              Label2: <missing>
              Amount: 300000.00
      AmountCurrency: "USD"
           AmountUSD: 300000.00
              Label3: NaN
             EndDate: NaT
       CreditQuality: <missing>
        LongShortInd: <missing>
      CoveredBondInd: <missing>
    TrancheThickness: NaN

Compute DRC Charge

The DRC charge captures the risk of default of issuers of debt and equity instruments in the trading book. Use drc to compute the DRC charge for each portfolio using the frtbsa object.

DRCResults = drc(myFRTBSA)
DRCResults = 
  drcResults with properties:

       NumPortfolios: 2.00
        PortfolioIDs: [2×1 string]
          Regulation: "Basel_d491"
    DomesticCurrency: "USD"
             Charges: [2×1 double]
    ComponentResults: [2×1 frtbsa.drcPortfolioResults]
        ResultsTable: [2×4 table]

The Charge output contains the DRC risk charge of the portfolios.

DRCResults.Charges
ans = 2×1

     177008.51
      51024.29

The ResultsTable output contains the high-level risk DRC charge calculations of the portfolios.

DRCResults.ResultsTable
ans=2×4 table
    PortfolioIDs      Total         NS          SNC   
    ____________    _________    ________    _________

        "P1"        177008.51    20750.00    156258.51
        "P2"         51024.29    20750.00     30274.29

The ComponentResults output contains the detailed DRC risk charge information for a given portfolio. Examine the DRC risk charge for the first portfolio.

DRCResults.ComponentResults(1)
ans = 
  drcPortfolioResults with properties:

            PortfolioID: "P1"
                 Charge: 177008.51
    ChargeByCreditClass: [2×2 table]
     IntrabucketCharges: [1×1 struct]

Display charges by credit class. Portfolio P1 has non-securitization and securitization non-CTP trades.

DRCResults.ComponentResults(1).ChargeByCreditClass
ans=2×2 table
    CreditClass     Charge  
    ___________    _________

       "NS"         20750.00
       "SNC"       156258.51

Display the intrabucket charges for the non-securitization trades.

DRCResults.ComponentResults(1).IntrabucketCharges.NS
ans=2×4 table
       Bucket       NetLongJtd    NetShortJdt     Charge 
    ____________    __________    ___________    ________

    "CORPORATES"     12750.00        0.00        12750.00
    "SOVEREIGNS"      8000.00        0.00         8000.00

Display the intrabucket charges for the securitization non-CTP trades.

DRCResults.ComponentResults(1).IntrabucketCharges.SNC
ans=1×9 table
       Bucket       NonSeniorLongJtd    NonSeniorShortJtd    SeniorLongJtd    SeniorShortJtd    NetLongJtd    NetShortJtd    HBR      Charge  
    ____________    ________________    _________________    _____________    ______________    __________    ___________    ____    _________

    "CORPORATES"          0.00                0.00             746666.67        -300000.00      746666.67      300000.00     0.71    156258.51

Input Arguments

collapse all

FRTB-SA object, specified as a frtbsa object. You create a frtbsa object using frtbsa.

Data Types: object

Output Arguments

collapse all

Default risk capital charge results, returned as a DRCResults object. The DRCResults object has the following properties:

  • NumPortfolios — Number of portfolios whose default risk capital charges are contained in the DRCResults object.

  • Regulation — Jurisdiction. The default is "Basel".

  • DomesticCurrency — Domestic currency. The default is "USD".

  • ChargesNumPortfolios-by-1 array of default risk capital charges.

  • PortfolioIDsNumPortfolios-by-1 array of strings containing the portfolio IDs of each portfolio.

  • ComponentResultsNumPortfolios-by-1 array of frtbsa.drcPortfolioResults objects containing the calculation results for each portfolio. The frtbsa.drcPortfolioResults object properties are:

    • PortfolioIDs — Scalar string indicating the ID of the portfolio.

    • Charge — Default risk capital charge of the portfolio.

    • ChargeByCreditClass — Table displaying the default risk capital charge calculations by credit class.

    • IntrabucketCharges — Table displaying the default risk capital charge intrabucket calculations.

  • ResultsTable — Table displaying the high-level default risk capital calculation results for all portfolios.

More About

collapse all

Default Risk Capital

Under the FRTB-SA framework, the default risk capital (DRC) covers potential losses from the default of an issuer or counterparty of debt or equity instruments held in the trading book.

DRC is intended to capture jump-to-default (JTD) risk that may not be captured by credit spread shocks under the sensitivities-based method (SBM). The instruments subject to DRC are:

  • Non-securitization portfolios. For more information, see Non-Securization Portfolio.

  • Securitization portfolio (non-correlation trading portfolio, or non-CTP).

DRC is calculated using a supervisory formula that considers the following factors:

  • Position Values — The current market value of each position in the trading book

  • Risk Weights — Prescribed risk weights based on the credit quality of the issuer (for debt) or the issuer and the market capitalization (for equity)

  • Maturities — The effective maturity of the positions, which influences the potential exposure to default risk

  • Correlations — Prescribed correlations between issuers within the same bucket (a grouping of issuers based on similar characteristics) and across different buckets

Non-Securization Portfolio

Under the FRTB-SA framework, a non-securization portfolio consists of other types of financial instruments and exposures within the trading book, such as equities, bonds, commodities, foreign exchange, and derivatives that are not tied to a securitization structure.

The FRTB-SA provides a framework for calculating capital requirements for these non-securitization portfolios based on various risk factors, including:

  • Default Risk — The risk of loss due to an obligor's failure to meet its payment obligations

  • Credit Spread Risk — The risk of loss due to changes in the credit spread of an issuer or counterparty

  • Market Risk — The risk of loss due to changes in market variables, such as interest rates, equity prices, commodity prices, and foreign exchange rates

  • Residual Risk — Any additional risk not captured by the standardized risk factor sensitivities

For non-securitization portfolios, banks must calculate the capital charge by assessing the sensitivities of the portfolio to these risk factors and applying the appropriate risk weights as specified by the FRTB-SA regulations. The resulting capital charges are designed to ensure that banks hold sufficient capital to protect against potential losses from their trading activities.

References

[1] Bank for International Settlements. "MAR21 — Standardised Approach: Sensitivities-Based Method." March 2020. https://www.bis.org/basel_framework/chapter/MAR/21.htm.

[2] Bank for International Settlements. "MAR22 — Standardised Approach: Default Risk Capital Requirement." March 2020. https://www.bis.org/basel_framework/chapter/MAR/22.htm.

[3] Bank for International Settlements. "MAR23 — Standardised Approach: Residual Risk Add-On." March 2020. https://www.bis.org/basel_framework/chapter/MAR/23.htm.

[4] Bank for International Settlements. "CRE42 — Securitisation: External-Ratings-Based Approach (SEC-ERBA)." January 2023. https://www.bis.org/basel_framework/chapter/CRE/42.htm.

[5] Bank for International Settlements. "Basel Committee on Banking Supervision: Minimum Capital Requirements for Market Risk"." January 2019. https://www.bis.org/bcbs/publ/d457.pdf.

Version History

Introduced in R2024b