Main Content

frtbsa

Create frtbsa object to support ISDA FRTB-SA workflows for calculating capital market risk charge

Since R2024b

Description

Create a frtbsa object using this workflow:

  1. Create a FRTB-SA CRIF file.

    The ISDA® FRTB-SA Common Risk Interchange Format (CRIF) is a standardized format developed by the International Swaps and Derivatives Association (ISDA) for reporting capital market risk charges under the Standardized Approach for Fundamental Review of the Trading Book (FRTB-SA) framework. For more information on creating an ISDA FRTB-SA CRIF file, see ISDA FRTB-SA CRIF File Specifications. FRTB-SA functionality meets ISDA benchmarks for use in the frtbsa object.

  2. Create a frtbsa object.

    Use frtbsa to create a frtbsa object.

  3. Use frtbsa object functions.

    Use the following functions to calculate total capital market risk, sensitivity-based method (SBM) charge, default risk capital (DRC) charge, and residual risk add-on (RRAO) charge results for each portfolio:

For more information on this workflow, see ISDA FRTB-SA Workflows and for an example, see Compute Capital Risk Charge Using FRTB-SA Framework.

Creation

Description

myFRTBSA = frtbsa(FRTBSACRIF) creates a frtbsa object and sets the properties. The frtbsa object provides an object-based framework that supports Basel-compliant, International Swaps and Derivatives Association (ISDA) workflows for calculating capital market risk charge.

example

myFRTBSA = frtbsa(___,Name=Value) creates a frtbsa object and sets the optional name-value arguments for DRCValuationDate and NumDaysYear. These additional properties are required for drc calculation.

example

Input Arguments

expand all

ISDA FRTB-SA Common Risk Interchange Format (CRIF) data, specified as a string.

The ISDA FRTB-SA CRIF file is designed to facilitate the exchange of risk factor information between market participants and regulatory authorities. Under the FRTB regulations, banks are required to report their trading book risk factors and sensitivities to these risk factors to their regulators. The CRIF file is a structured data file that includes all the necessary details to perform the required calculations for capital adequacy under FRTB-SA. ISDA CRIF is a proprietary model developed by the International Swaps and Derivatives Association, Inc. (ISDA). You can get a license to use CRIF from ISDA by contacting them at ISDABenchmarking@isda.org.

The ISDA FRTB-SA CRIF file typically includes information such as:

  • Risk factor categories — This data includes types of risk factors, such as interest rates, credit spreads, equity prices, commodity prices, foreign exchange rates, and so on.

  • Risk factor qualifiers — This data includes additional details that further specify the risk factor, like maturity buckets, currency, country, and so on.

  • Risk factor sensitivities — This data includes information related to the sensitivities of the trading book positions to the various risk factors.

  • Risk weights and correlations — This data includes information required to apply the standardized risk weights and correlations as prescribed by the FRTB-SA rules.

  • Aggregated risk data — This data contains aggregated risk data, such as the default risk charge (DRC) and the residual risk add-on (RRAO).

The ISDA FRTB-SA CRIF file is based on industry-standard data formats, such as extensible markup language (XML) or comma-separated values (CSV). It follows a predefined schema that specifies the structure and data elements required for reporting market capital risk under the FRTB-SA framework.

By using the ISDA FRTB-SA CRIF file, market participants and regulatory authorities can efficiently exchange and analyze counterparty capital market risk information, enabling better risk management and regulatory compliance.

For more information on creating an ISDA FRTB-SA CRIF file, see ISDA FRTB-SA CRIF File Specifications.

Data Types: string

Name-Value Arguments

Specify required and optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: myFrtbsa = frtbsa("FRTB_CRIF.xlsx",DRCValuationDate = datetime(2023,9,21))

Reference date for DRC calculations, specified as a scalar datetime.

Note

DRCValuationDate is a required name-value argument for DRC calculations.

Data Types: datetime

Number of days in a year to compute maturity scaling factor for DRC calculations, specified as a scalar integer.

Data Types: double

Properties

expand all

This property is read-only.

ISDA FRTB-SA CRIF data, returned as a table.

Data Types: table

This property is read-only.

Number of portfolios, returned as a scalar numeric.

Data Types: double

This property is read-only.

Portfolio objects, returned as a NumPortfolios-by-1 vector of objects.

Data Types: object

This property is read-only.

Portfolio IDs, returned as a NumPortfolios-by-1 string vector.

Data Types: string

This property is read-only.

Indicator of Basel regulation, returned as scalar string with a value of "Basel_CRE52".

Data Types: string

This property is read-only.

Indicator for domestic currency, returned as a scalar string for the three-letter ISO currency code.

Data Types: string

This property is read-only.

Reference date for DRC calculations, returned as a scalar datetime.

Note

DRCValuationDate is a required property for DRC calculations.

Data Types: datetime

This property is read-only.

Number of days in a year to compute maturity scaling factor for DRC calculations, returned as a scalar integer.

Data Types: double

Object Functions

chargeCalculate total capital market risk charge results for each portfolio
sbmCalculate sensitivity-based method (SBM) charge results for each portfolio
drcCalculate default risk capital (DRC) charge results for each portfolio
rraoCalculate residual risk add-on (RRAO) charge results for each portfolio

Examples

collapse all

Use a ISDA® FRTB-SA CRIF file to create a frtbsa object that supports workflows for calculating capital market risk charge.

Create frtbsa Object

FRTB-SA (Standardized Approach for Fundamental Review of Trading Book) is a Basel Committee on Banking Supervision framework for calculating market capital risk requirements that is based on a set of standardized risk factors.

Use bank format to display numeric data using two decimal places.

format bank

Define the ISDA® FRTB-SA CRIF file.

FRTBSACRIF = "FRTBSA_CRIF.csv";

Define 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

More About

expand all

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 — Securitization: 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