CapitalMetricsStandard.java

  1. package org.drip.capital.bcbs;

  2. /*
  3.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  4.  */

  5. /*!
  6.  * Copyright (C) 2020 Lakshmi Krishnamurthy
  7.  * Copyright (C) 2019 Lakshmi Krishnamurthy
  8.  *
  9.  *  This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
  10.  *      asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
  11.  *      analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
  12.  *      equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
  13.  *      numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
  14.  *      and computational support.
  15.  *  
  16.  *      https://lakshmidrip.github.io/DROP/
  17.  *  
  18.  *  DROP is composed of three modules:
  19.  *  
  20.  *  - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
  21.  *  - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
  22.  *  - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
  23.  *
  24.  *  DROP Product Core implements libraries for the following:
  25.  *  - Fixed Income Analytics
  26.  *  - Loan Analytics
  27.  *  - Transaction Cost Analytics
  28.  *
  29.  *  DROP Portfolio Core implements libraries for the following:
  30.  *  - Asset Allocation Analytics
  31.  *  - Asset Liability Management Analytics
  32.  *  - Capital Estimation Analytics
  33.  *  - Exposure Analytics
  34.  *  - Margin Analytics
  35.  *  - XVA Analytics
  36.  *
  37.  *  DROP Computational Core implements libraries for the following:
  38.  *  - Algorithm Support
  39.  *  - Computation Support
  40.  *  - Function Analysis
  41.  *  - Model Validation
  42.  *  - Numerical Analysis
  43.  *  - Numerical Optimizer
  44.  *  - Spline Builder
  45.  *  - Statistical Learning
  46.  *
  47.  *  Documentation for DROP is Spread Over:
  48.  *
  49.  *  - Main                     => https://lakshmidrip.github.io/DROP/
  50.  *  - Wiki                     => https://github.com/lakshmiDRIP/DROP/wiki
  51.  *  - GitHub                   => https://github.com/lakshmiDRIP/DROP
  52.  *  - Repo Layout Taxonomy     => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
  53.  *  - Javadoc                  => https://lakshmidrip.github.io/DROP/Javadoc/index.html
  54.  *  - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
  55.  *  - Release Versions         => https://lakshmidrip.github.io/DROP/version.html
  56.  *  - Community Credits        => https://lakshmidrip.github.io/DROP/credits.html
  57.  *  - Issues Catalog           => https://github.com/lakshmiDRIP/DROP/issues
  58.  *  - JUnit                    => https://lakshmidrip.github.io/DROP/junit/index.html
  59.  *  - Jacoco                   => https://lakshmidrip.github.io/DROP/jacoco/index.html
  60.  *
  61.  *  Licensed under the Apache License, Version 2.0 (the "License");
  62.  *      you may not use this file except in compliance with the License.
  63.  *  
  64.  *  You may obtain a copy of the License at
  65.  *      http://www.apache.org/licenses/LICENSE-2.0
  66.  *  
  67.  *  Unless required by applicable law or agreed to in writing, software
  68.  *      distributed under the License is distributed on an "AS IS" BASIS,
  69.  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  70.  *  
  71.  *  See the License for the specific language governing permissions and
  72.  *      limitations under the License.
  73.  */

  74. /**
  75.  * <i>CapitalMetricsStandard</i> implements the Basel Capital Metrics Standards. The References are:
  76.  *
  77.  * <br><br>
  78.  *  <ul>
  79.  *      <li>
  80.  *          Basel Committee on Banking Supervision (2017): Basel III Leverage Ratio Framework and Disclosure
  81.  *              Requirements https://www.bis.org/publ/bcbs270.pdf
  82.  *      </li>
  83.  *      <li>
  84.  *          Central Banking (2013): Fed and FDIC agree 6% Leverage Ratio for US SIFIs
  85.  *              https://www.centralbanking.com/central-banking/news/2280726/fed-and-fdic-agree-6-leverage-ratio-for-us-sifis
  86.  *      </li>
  87.  *      <li>
  88.  *          European Banking Agency (2013): Implementing Basel III in Europe: CRD IV Package
  89.  *              https://eba.europa.eu/regulation-and-policy/implementing-basel-iii-europe
  90.  *      </li>
  91.  *      <li>
  92.  *          Federal Reserve (2013): Liquidity Coverage Ratio – Liquidity Risk Measurements, Standards, and
  93.  *              Monitoring
  94.  *              https://web.archive.org/web/20131102074614/http:/www.federalreserve.gov/FR_notice_lcr_20131024.pdf
  95.  *      </li>
  96.  *      <li>
  97.  *          Wikipedia (2018): Basel III https://en.wikipedia.org/wiki/Basel_III
  98.  *      </li>
  99.  *  </ul>
  100.  *
  101.  *  <br><br>
  102.  *  <ul>
  103.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/PortfolioCore.md">Portfolio Core Module</a></li>
  104.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/CapitalAnalyticsLibrary.md">Capital Analytics</a></li>
  105.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/capital/README.md">Basel Market Risk and Operational Capital</a></li>
  106.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/capital/bcbs/README.md">BCBS and Jurisdictional Capital Ratios</a></li>
  107.  *  </ul>
  108.  *
  109.  * @author Lakshmi Krishnamurthy
  110.  */

  111. public class CapitalMetricsStandard extends org.drip.capital.bcbs.CapitalMetrics
  112. {
  113.     private double _cet1DeductionsPhaseIn = java.lang.Double.NaN;

  114.     /**
  115.      * Construct the Basel III 2013 Version of the Capital Metrics Standard
  116.      *
  117.      * @return Basel III 2013 Version of the Capital Metrics Standard
  118.      */

  119.     public static final CapitalMetricsStandard Basel_III_2013()
  120.     {
  121.         try
  122.         {
  123.             return new CapitalMetricsStandard (
  124.                 0.030,
  125.                 0.035,
  126.                 0.035,
  127.                 0.045,
  128.                 0.045,
  129.                 0.045,
  130.                 0.00
  131.             );
  132.         }
  133.         catch (java.lang.Exception e)
  134.         {
  135.             e.printStackTrace();
  136.         }

  137.         return null;
  138.     }

  139.     /**
  140.      * Construct the Basel III 2014 Version of the Capital Metrics Standard
  141.      *
  142.      * @return Basel III 2014 Version of the Capital Metrics Standard
  143.      */

  144.     public static final CapitalMetricsStandard Basel_III_2014()
  145.     {
  146.         try
  147.         {
  148.             return new CapitalMetricsStandard (
  149.                 0.030,
  150.                 0.040,
  151.                 0.040,
  152.                 0.055,
  153.                 0.080,
  154.                 0.080,
  155.                 0.20
  156.             );
  157.         }
  158.         catch (java.lang.Exception e)
  159.         {
  160.             e.printStackTrace();
  161.         }

  162.         return null;
  163.     }

  164.     /**
  165.      * Construct the Basel III 2015 Version of the Capital Metrics Standard
  166.      *
  167.      * @return Basel III 2015 Version of the Capital Metrics Standard
  168.      */

  169.     public static final CapitalMetricsStandard Basel_III_2015()
  170.     {
  171.         try
  172.         {
  173.             return new CapitalMetricsStandard (
  174.                 0.030,
  175.                 0.045,
  176.                 0.045,
  177.                 0.060,
  178.                 0.080,
  179.                 0.080,
  180.                 0.40
  181.             );
  182.         }
  183.         catch (java.lang.Exception e)
  184.         {
  185.             e.printStackTrace();
  186.         }

  187.         return null;
  188.     }

  189.     /**
  190.      * Construct the Basel III 2016 Version of the Capital Metrics Standard
  191.      *
  192.      * @return Basel III 2016 Version of the Capital Metrics Standard
  193.      */

  194.     public static final CapitalMetricsStandard Basel_III_2016()
  195.     {
  196.         try
  197.         {
  198.             return new CapitalMetricsStandard (
  199.                 0.03000,
  200.                 0.04500,
  201.                 0.05125,
  202.                 0.06000,
  203.                 0.08000,
  204.                 0.08625,
  205.                 0.60
  206.             );
  207.         }
  208.         catch (java.lang.Exception e)
  209.         {
  210.             e.printStackTrace();
  211.         }

  212.         return null;
  213.     }

  214.     /**
  215.      * Construct the Basel III 2017 Version of the Capital Metrics Standard
  216.      *
  217.      * @return Basel III 2017 Version of the Capital Metrics Standard
  218.      */

  219.     public static final CapitalMetricsStandard Basel_III_2017()
  220.     {
  221.         try
  222.         {
  223.             return new CapitalMetricsStandard (
  224.                 0.03000,
  225.                 0.04500,
  226.                 0.05750,
  227.                 0.06000,
  228.                 0.08000,
  229.                 0.09250,
  230.                 0.80
  231.             );
  232.         }
  233.         catch (java.lang.Exception e)
  234.         {
  235.             e.printStackTrace();
  236.         }

  237.         return null;
  238.     }

  239.     /**
  240.      * Construct the Basel III 2018 Version of the Capital Metrics Standard
  241.      *
  242.      * @return Basel III 2018 Version of the Capital Metrics Standard
  243.      */

  244.     public static final CapitalMetricsStandard Basel_III_2018()
  245.     {
  246.         try
  247.         {
  248.             return new CapitalMetricsStandard (
  249.                 0.03000,
  250.                 0.04500,
  251.                 0.06375,
  252.                 0.06000,
  253.                 0.08000,
  254.                 0.09875,
  255.                 1.00
  256.             );
  257.         }
  258.         catch (java.lang.Exception e)
  259.         {
  260.             e.printStackTrace();
  261.         }

  262.         return null;
  263.     }

  264.     /**
  265.      * Construct the Basel III 2019 Version of the Capital Metrics Standard
  266.      *
  267.      * @return Basel III 2019 Version of the Capital Metrics Standard
  268.      */

  269.     public static final CapitalMetricsStandard Basel_III_2019()
  270.     {
  271.         try
  272.         {
  273.             return new CapitalMetricsStandard (
  274.                 0.03000,
  275.                 0.04500,
  276.                 0.07000,
  277.                 0.06000,
  278.                 0.08000,
  279.                 0.10500,
  280.                 1.00
  281.             );
  282.         }
  283.         catch (java.lang.Exception e)
  284.         {
  285.             e.printStackTrace();
  286.         }

  287.         return null;
  288.     }

  289.     /**
  290.      * Construct the Federal Reserve's Version of the Capital Metrics Standard for Systemically Important
  291.      *  Financial Institutions (SIFI)
  292.      *
  293.      * @return Federal Reserve's Version of the Capital Metrics Standard for Systemically Important Financial
  294.      *  Institutions (SIFI)
  295.      */

  296.     public static final CapitalMetricsStandard US_SIFI()
  297.     {
  298.         try
  299.         {
  300.             return new CapitalMetricsStandard (
  301.                 0.06000,
  302.                 0.04500,
  303.                 0.07000,
  304.                 0.06000,
  305.                 0.08000,
  306.                 0.10500,
  307.                 1.00
  308.             );
  309.         }
  310.         catch (java.lang.Exception e)
  311.         {
  312.             e.printStackTrace();
  313.         }

  314.         return null;
  315.     }

  316.     /**
  317.      * Construct the Federal Reserve's Version of the Capital Metrics Standard for Systemically Important
  318.      *  Financial Institutions' Insured Bank Holding Corporations (BHC)
  319.      *
  320.      * @return Federal Reserve's Version of the Capital Metrics Standard for Systemically Important Financial
  321.      *  Institutions' Insured Bank Holding Corporations (BHC)
  322.      */

  323.     public static final CapitalMetricsStandard US_SIFI_BHC()
  324.     {
  325.         try
  326.         {
  327.             return new CapitalMetricsStandard (
  328.                 0.05000,
  329.                 0.04500,
  330.                 0.07000,
  331.                 0.06000,
  332.                 0.08000,
  333.                 0.10500,
  334.                 1.00
  335.             );
  336.         }
  337.         catch (java.lang.Exception e)
  338.         {
  339.             e.printStackTrace();
  340.         }

  341.         return null;
  342.     }

  343.     /**
  344.      * CapitalMetricsStandard Constructor
  345.      *
  346.      * @param leverageRatio Leverage Ratio
  347.      * @param commonEquityRatio Common Equity Capital Ratio
  348.      * @param commonEquityPlusConservationBufferRatio Common Equity Capital Plus Capital Conservation Buffer
  349.      *      Ratio
  350.      * @param tier1Ratio Tier 1 Capital Ratio
  351.      * @param totalRatio Total Capital Ratio
  352.      * @param totalPlusConservationBufferRatio Total Capital Plus Conservation Buffer Ratio
  353.      * @param cet1DeductionsPhaseIn CET1 Deductions Phase-in
  354.      *
  355.      * @throws java.lang.Exception Thrown if the Inputs are Invalid
  356.      */

  357.     public CapitalMetricsStandard (
  358.         final double leverageRatio,
  359.         final double commonEquityRatio,
  360.         final double commonEquityPlusConservationBufferRatio,
  361.         final double tier1Ratio,
  362.         final double totalRatio,
  363.         final double totalPlusConservationBufferRatio,
  364.         final double cet1DeductionsPhaseIn)
  365.         throws java.lang.Exception
  366.     {
  367.         super (
  368.             leverageRatio,
  369.             commonEquityRatio,
  370.             commonEquityPlusConservationBufferRatio,
  371.             tier1Ratio,
  372.             totalRatio,
  373.             totalPlusConservationBufferRatio
  374.         );

  375.         if (!org.drip.numerical.common.NumberUtil.IsValid (_cet1DeductionsPhaseIn = cet1DeductionsPhaseIn) ||
  376.             0. > _cet1DeductionsPhaseIn)
  377.         {
  378.             throw new java.lang.Exception ("CapitalMetricsStandard Contructor => Invalid Inputs");
  379.         }
  380.     }

  381.     /**
  382.      * Retrieve the CET1 Deductions Phase-in
  383.      *
  384.      * @return The CET1 Deductions Phase-in
  385.      */

  386.     public double cet1DeductionsPhaseIn()
  387.     {
  388.         return _cet1DeductionsPhaseIn;
  389.     }
  390. }