RiskMeasureSensitivitySettingsCR.java

  1. package org.drip.simm.parameters;

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

  75. /**
  76.  * <i>RiskMeasureSensitivitySettingsCR</i> holds the Settings that govern the Generation of the ISDA SIMM
  77.  * Bucket Sensitivities across Individual CR Class Risk Measure Buckets. The References are:
  78.  *
  79.  * <br><br>
  80.  *  <ul>
  81.  *      <li>
  82.  *          Andersen, L. B. G., M. Pykhtin, and A. Sokol (2017): Credit Exposure in the Presence of Initial
  83.  *              Margin https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2806156 <b>eSSRN</b>
  84.  *      </li>
  85.  *      <li>
  86.  *          Albanese, C., S. Caenazzo, and O. Frankel (2017): Regression Sensitivities for Initial Margin
  87.  *              Calculations https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2763488 <b>eSSRN</b>
  88.  *      </li>
  89.  *      <li>
  90.  *          Anfuso, F., D. Aziz, P. Giltinan, and K. Loukopoulus (2017): A Sound Modeling and Back-testing
  91.  *              Framework for Forecasting Initial Margin Requirements
  92.  *                  https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2716279 <b>eSSRN</b>
  93.  *      </li>
  94.  *      <li>
  95.  *          Caspers, P., P. Giltinan, R. Lichters, and N. Nowaczyk (2017): Forecasting Initial Margin
  96.  *              Requirements - A Model Evaluation https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2911167
  97.  *                  <b>eSSRN</b>
  98.  *      </li>
  99.  *      <li>
  100.  *          International Swaps and Derivatives Association (2017): SIMM v2.0 Methodology
  101.  *              https://www.isda.org/a/oFiDE/isda-simm-v2.pdf
  102.  *      </li>
  103.  *  </ul>
  104.  *
  105.  * <br><br>
  106.  *  <ul>
  107.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/PortfolioCore.md">Portfolio Core Module</a></li>
  108.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/MarginAnalyticsLibrary.md">Initial and Variation Margin Analytics</a></li>
  109.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/simm/README.md">Initial Margin Analytics based on ISDA SIMM and its Variants</a></li>
  110.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/simm/parameters/README.md">ISDA SIMM Risk Factor Parameters</a></li>
  111.  *  </ul>
  112.  * <br><br>
  113.  *
  114.  * @author Lakshmi Krishnamurthy
  115.  */

  116. public class RiskMeasureSensitivitySettingsCR
  117. {
  118.     private org.drip.measure.stochastic.LabelCorrelation _crossBucketCorrelation = null;
  119.     private java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  120.         _bucketSensitivitySettingsMap = null;

  121.     /**
  122.      * Generate SIMM 2.0 Credit Qualifying Delta Sensitivity Settings
  123.      *
  124.      * @return The SIMM 2.0 Credit Qualifying Delta Sensitivity Settings
  125.      */

  126.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRQ_DELTA_20()
  127.     {
  128.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  129.             bucketSensitivitySettingsMap = new
  130.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  131.         java.util.Set<java.lang.Integer> bucketIndexSet =
  132.             org.drip.simm.credit.CRQSettingsContainer20.BucketSet();

  133.         for (int bucketIndex : bucketIndexSet)
  134.         {
  135.             bucketSensitivitySettingsMap.put (
  136.                 "" + bucketIndex,
  137.                 org.drip.simm.parameters.BucketSensitivitySettingsCR.ISDA_CRQ_DELTA_20 (bucketIndex)
  138.             );
  139.         }

  140.         try
  141.         {
  142.             return new RiskMeasureSensitivitySettingsCR (
  143.                 bucketSensitivitySettingsMap,
  144.                 org.drip.simm.credit.CRQSettingsContainer20.CrossBucketCorrelation()
  145.             );
  146.         }
  147.         catch (java.lang.Exception e)
  148.         {
  149.             e.printStackTrace();
  150.         }

  151.         return null;
  152.     }

  153.     /**
  154.      * Generate SIMM 2.1 Credit Qualifying Delta Sensitivity Settings
  155.      *
  156.      * @return The SIMM 2.1 Credit Qualifying Delta Sensitivity Settings
  157.      */

  158.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRQ_DELTA_21()
  159.     {
  160.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  161.             bucketSensitivitySettingsMap = new
  162.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  163.         java.util.Set<java.lang.Integer> bucketIndexSet =
  164.             org.drip.simm.credit.CRQSettingsContainer21.BucketSet();

  165.         for (int bucketIndex : bucketIndexSet)
  166.         {
  167.             bucketSensitivitySettingsMap.put (
  168.                 "" + bucketIndex,
  169.                 org.drip.simm.parameters.BucketSensitivitySettingsCR.ISDA_CRQ_DELTA_21 (bucketIndex)
  170.             );
  171.         }

  172.         try
  173.         {
  174.             return new RiskMeasureSensitivitySettingsCR (
  175.                 bucketSensitivitySettingsMap,
  176.                 org.drip.simm.credit.CRQSettingsContainer21.CrossBucketCorrelation()
  177.             );
  178.         }
  179.         catch (java.lang.Exception e)
  180.         {
  181.             e.printStackTrace();
  182.         }

  183.         return null;
  184.     }

  185.     /**
  186.      * Generate SIMM 2.0 Credit Qualifying Vega Sensitivity Settings
  187.      *
  188.      * @return The SIMM 2.0 Credit Qualifying Vega Sensitivity Settings
  189.      */

  190.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRQ_VEGA_20()
  191.     {
  192.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  193.             bucketSensitivitySettingsMap = new
  194.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  195.         java.util.Set<java.lang.Integer> bucketIndexSet =
  196.             org.drip.simm.credit.CRQSettingsContainer20.BucketSet();

  197.         for (int bucketIndex : bucketIndexSet)
  198.         {
  199.             bucketSensitivitySettingsMap.put (
  200.                 "" + bucketIndex,
  201.                 org.drip.simm.parameters.BucketVegaSettingsCR.ISDA_CRQ_20 (bucketIndex)
  202.             );
  203.         }

  204.         try
  205.         {
  206.             return new RiskMeasureSensitivitySettingsCR (
  207.                 bucketSensitivitySettingsMap,
  208.                 org.drip.simm.credit.CRQSettingsContainer20.CrossBucketCorrelation()
  209.             );
  210.         }
  211.         catch (java.lang.Exception e)
  212.         {
  213.             e.printStackTrace();
  214.         }

  215.         return null;
  216.     }

  217.     /**
  218.      * Generate SIMM 2.1 Credit Qualifying Vega Sensitivity Settings
  219.      *
  220.      * @return The SIMM 2.1 Credit Qualifying Vega Sensitivity Settings
  221.      */

  222.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRQ_VEGA_21()
  223.     {
  224.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  225.             bucketSensitivitySettingsMap = new
  226.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  227.         java.util.Set<java.lang.Integer> bucketIndexSet =
  228.             org.drip.simm.credit.CRQSettingsContainer21.BucketSet();

  229.         for (int bucketIndex : bucketIndexSet)
  230.         {
  231.             bucketSensitivitySettingsMap.put (
  232.                 "" + bucketIndex,
  233.                 org.drip.simm.parameters.BucketVegaSettingsCR.ISDA_CRQ_21 (bucketIndex)
  234.             );
  235.         }

  236.         try
  237.         {
  238.             return new RiskMeasureSensitivitySettingsCR (
  239.                 bucketSensitivitySettingsMap,
  240.                 org.drip.simm.credit.CRQSettingsContainer21.CrossBucketCorrelation()
  241.             );
  242.         }
  243.         catch (java.lang.Exception e)
  244.         {
  245.             e.printStackTrace();
  246.         }

  247.         return null;
  248.     }

  249.     /**
  250.      * Generate SIMM 2.0 Credit Qualifying Curvature Sensitivity Settings
  251.      *
  252.      * @return The SIMM 2.0 Credit Qualifying Curvature Sensitivity Settings
  253.      */

  254.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRQ_CURVATURE_20()
  255.     {
  256.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  257.             bucketSensitivitySettingsMap = new
  258.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  259.         java.util.Set<java.lang.Integer> bucketIndexSet =
  260.             org.drip.simm.credit.CRQSettingsContainer20.BucketSet();

  261.         for (int bucketIndex : bucketIndexSet)
  262.         {
  263.             bucketSensitivitySettingsMap.put (
  264.                 "" + bucketIndex,
  265.                 org.drip.simm.parameters.BucketCurvatureSettingsCR.ISDA_CRQ_20 (bucketIndex)
  266.             );
  267.         }

  268.         try
  269.         {
  270.             return new RiskMeasureSensitivitySettingsCR (
  271.                 bucketSensitivitySettingsMap,
  272.                 org.drip.simm.credit.CRQSettingsContainer20.CrossBucketCorrelation()
  273.             );
  274.         }
  275.         catch (java.lang.Exception e)
  276.         {
  277.             e.printStackTrace();
  278.         }

  279.         return null;
  280.     }

  281.     /**
  282.      * Generate SIMM 2.1 Credit Qualifying Curvature Sensitivity Settings
  283.      *
  284.      * @return The SIMM 2.1 Credit Qualifying Curvature Sensitivity Settings
  285.      */

  286.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRQ_CURVATURE_21()
  287.     {
  288.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  289.             bucketSensitivitySettingsMap = new
  290.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  291.         java.util.Set<java.lang.Integer> bucketIndexSet =
  292.             org.drip.simm.credit.CRQSettingsContainer21.BucketSet();

  293.         for (int bucketIndex : bucketIndexSet)
  294.         {
  295.             bucketSensitivitySettingsMap.put (
  296.                 "" + bucketIndex,
  297.                 org.drip.simm.parameters.BucketCurvatureSettingsCR.ISDA_CRQ_21 (bucketIndex)
  298.             );
  299.         }

  300.         try
  301.         {
  302.             return new RiskMeasureSensitivitySettingsCR (
  303.                 bucketSensitivitySettingsMap,
  304.                 org.drip.simm.credit.CRQSettingsContainer21.CrossBucketCorrelation()
  305.             );
  306.         }
  307.         catch (java.lang.Exception e)
  308.         {
  309.             e.printStackTrace();
  310.         }

  311.         return null;
  312.     }

  313.     /**
  314.      * Generate SIMM 2.0 Non-Credit Qualifying Delta Sensitivity Settings
  315.      *
  316.      * @return The SIMM 2.0 Non-Credit Qualifying Delta Sensitivity Settings
  317.      */

  318.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRNQ_DELTA_20()
  319.     {
  320.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  321.             bucketSensitivitySettingsMap = new
  322.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  323.         java.util.Set<java.lang.Integer> bucketIndexSet =
  324.             org.drip.simm.credit.CRNQSettingsContainer20.BucketSet();

  325.         int bucketCount = bucketIndexSet.size();

  326.         java.util.List<java.lang.String> bucketLabelList = new java.util.ArrayList<java.lang.String>();

  327.         double[][] crossBucketCorrelation = new double[bucketCount][bucketCount];

  328.         for (int bucketIndexOuter = 0; bucketIndexOuter < bucketCount; ++bucketIndexOuter)
  329.         {
  330.             bucketSensitivitySettingsMap.put (
  331.                 "" + bucketIndexOuter,
  332.                 org.drip.simm.parameters.BucketSensitivitySettingsCR.ISDA_CRNQ_DELTA_20 (bucketIndexOuter)
  333.             );

  334.             bucketLabelList.add ("" + bucketIndexOuter);

  335.             for (int bucketIndexInner = 0; bucketIndexInner < bucketCount; ++bucketIndexInner)
  336.             {
  337.                 crossBucketCorrelation[bucketIndexInner][bucketIndexOuter] =
  338.                     bucketIndexInner == bucketIndexOuter ? 1. :
  339.                     org.drip.simm.credit.CRNQBucketCorrelation20.NON_RESIDUAL_TO_NON_RESIDUAL;
  340.             }
  341.         }

  342.         try
  343.         {
  344.             return new RiskMeasureSensitivitySettingsCR (
  345.                 bucketSensitivitySettingsMap,
  346.                 new org.drip.measure.stochastic.LabelCorrelation (
  347.                     bucketLabelList,
  348.                     crossBucketCorrelation
  349.                 )
  350.             );
  351.         }
  352.         catch (java.lang.Exception e)
  353.         {
  354.             e.printStackTrace();
  355.         }

  356.         return null;
  357.     }

  358.     /**
  359.      * Generate SIMM 2.1 Non-Credit Qualifying Delta Sensitivity Settings
  360.      *
  361.      * @return The SIMM 2.1 Non-Credit Qualifying Delta Sensitivity Settings
  362.      */

  363.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRNQ_DELTA_21()
  364.     {
  365.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  366.             bucketSensitivitySettingsMap = new
  367.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  368.         java.util.Set<java.lang.Integer> bucketIndexSet =
  369.             org.drip.simm.credit.CRNQSettingsContainer21.BucketSet();

  370.         int bucketCount = bucketIndexSet.size();

  371.         java.util.List<java.lang.String> bucketLabelList = new java.util.ArrayList<java.lang.String>();

  372.         double[][] crossBucketCorrelation = new double[bucketCount][bucketCount];

  373.         for (int bucketIndexOuter = 0; bucketIndexOuter < bucketCount; ++bucketIndexOuter)
  374.         {
  375.             bucketSensitivitySettingsMap.put (
  376.                 "" + bucketIndexOuter,
  377.                 org.drip.simm.parameters.BucketSensitivitySettingsCR.ISDA_CRNQ_DELTA_21 (bucketIndexOuter)
  378.             );

  379.             bucketLabelList.add ("" + bucketIndexOuter);

  380.             for (int bucketIndexInner = 0; bucketIndexInner < bucketCount; ++bucketIndexInner)
  381.             {
  382.                 crossBucketCorrelation[bucketIndexInner][bucketIndexOuter] =
  383.                     bucketIndexInner == bucketIndexOuter ? 1. :
  384.                     org.drip.simm.credit.CRNQBucketCorrelation21.NON_RESIDUAL_TO_NON_RESIDUAL;
  385.             }
  386.         }

  387.         try
  388.         {
  389.             return new RiskMeasureSensitivitySettingsCR (
  390.                 bucketSensitivitySettingsMap,
  391.                 new org.drip.measure.stochastic.LabelCorrelation (
  392.                     bucketLabelList,
  393.                     crossBucketCorrelation
  394.                 )
  395.             );
  396.         }
  397.         catch (java.lang.Exception e)
  398.         {
  399.             e.printStackTrace();
  400.         }

  401.         return null;
  402.     }

  403.     /**
  404.      * Generate SIMM 2.0 Non-Credit Qualifying Vega Sensitivity Settings
  405.      *
  406.      * @return The SIMM 2.0 Non-Credit Qualifying Vega Sensitivity Settings
  407.      */

  408.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRNQ_VEGA_20()
  409.     {
  410.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  411.             bucketSensitivitySettingsMap = new
  412.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  413.         java.util.Set<java.lang.Integer> bucketIndexSet =
  414.             org.drip.simm.credit.CRNQSettingsContainer20.BucketSet();

  415.         int bucketCount = bucketIndexSet.size();

  416.         java.util.List<java.lang.String> bucketLabelList = new java.util.ArrayList<java.lang.String>();

  417.         double[][] crossBucketCorrelation = new double[bucketCount][bucketCount];

  418.         for (int bucketIndexOuter = 0; bucketIndexOuter < bucketCount; ++bucketIndexOuter)
  419.         {
  420.             bucketSensitivitySettingsMap.put (
  421.                 "" + bucketIndexOuter,
  422.                 org.drip.simm.parameters.BucketVegaSettingsCR.ISDA_CRNQ_20 (bucketIndexOuter)
  423.             );

  424.             bucketLabelList.add ("" + bucketIndexOuter);

  425.             for (int bucketIndexInner = 0; bucketIndexInner < bucketCount; ++bucketIndexInner)
  426.             {
  427.                 crossBucketCorrelation[bucketIndexInner][bucketIndexOuter] =
  428.                     bucketIndexInner == bucketIndexOuter ? 1. :
  429.                     org.drip.simm.credit.CRNQBucketCorrelation20.NON_RESIDUAL_TO_NON_RESIDUAL;
  430.             }
  431.         }

  432.         try
  433.         {
  434.             return new RiskMeasureSensitivitySettingsCR (
  435.                 bucketSensitivitySettingsMap,
  436.                 new org.drip.measure.stochastic.LabelCorrelation (
  437.                     bucketLabelList,
  438.                     crossBucketCorrelation
  439.                 )
  440.             );
  441.         }
  442.         catch (java.lang.Exception e)
  443.         {
  444.             e.printStackTrace();
  445.         }

  446.         return null;
  447.     }

  448.     /**
  449.      * Generate SIMM 2.1 Non-Credit Qualifying Vega Sensitivity Settings
  450.      *
  451.      * @return The SIMM 2.1 Non-Credit Qualifying Vega Sensitivity Settings
  452.      */

  453.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRNQ_VEGA_21()
  454.     {
  455.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  456.             bucketSensitivitySettingsMap = new
  457.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  458.         java.util.Set<java.lang.Integer> bucketIndexSet =
  459.             org.drip.simm.credit.CRNQSettingsContainer21.BucketSet();

  460.         int bucketCount = bucketIndexSet.size();

  461.         java.util.List<java.lang.String> bucketLabelList = new java.util.ArrayList<java.lang.String>();

  462.         double[][] crossBucketCorrelation = new double[bucketCount][bucketCount];

  463.         for (int bucketIndexOuter = 0; bucketIndexOuter < bucketCount; ++bucketIndexOuter)
  464.         {
  465.             bucketSensitivitySettingsMap.put (
  466.                 "" + bucketIndexOuter,
  467.                 org.drip.simm.parameters.BucketVegaSettingsCR.ISDA_CRNQ_21 (bucketIndexOuter)
  468.             );

  469.             bucketLabelList.add ("" + bucketIndexOuter);

  470.             for (int bucketIndexInner = 0; bucketIndexInner < bucketCount; ++bucketIndexInner)
  471.             {
  472.                 crossBucketCorrelation[bucketIndexInner][bucketIndexOuter] =
  473.                     bucketIndexInner == bucketIndexOuter ? 1. :
  474.                     org.drip.simm.credit.CRNQBucketCorrelation21.NON_RESIDUAL_TO_NON_RESIDUAL;
  475.             }
  476.         }

  477.         try
  478.         {
  479.             return new RiskMeasureSensitivitySettingsCR (
  480.                 bucketSensitivitySettingsMap,
  481.                 new org.drip.measure.stochastic.LabelCorrelation (
  482.                     bucketLabelList,
  483.                     crossBucketCorrelation
  484.                 )
  485.             );
  486.         }
  487.         catch (java.lang.Exception e)
  488.         {
  489.             e.printStackTrace();
  490.         }

  491.         return null;
  492.     }

  493.     /**
  494.      * Generate SIMM 2.0 Non-Credit Qualifying Curvature Sensitivity Settings
  495.      *
  496.      * @return The SIMM 2.0 Non-Credit Qualifying Curvature Sensitivity Settings
  497.      */

  498.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRNQ_CURVATURE_20()
  499.     {
  500.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  501.             bucketSensitivitySettingsMap = new
  502.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  503.         java.util.Set<java.lang.Integer> bucketIndexSet =
  504.             org.drip.simm.credit.CRNQSettingsContainer20.BucketSet();

  505.         int bucketCount = bucketIndexSet.size();

  506.         java.util.List<java.lang.String> bucketLabelList = new java.util.ArrayList<java.lang.String>();

  507.         double[][] crossBucketCorrelation = new double[bucketCount][bucketCount];

  508.         for (int bucketIndexOuter = 0; bucketIndexOuter < bucketCount; ++bucketIndexOuter)
  509.         {
  510.             bucketSensitivitySettingsMap.put (
  511.                 "" + bucketIndexOuter,
  512.                 org.drip.simm.parameters.BucketCurvatureSettingsCR.ISDA_CRNQ_20 (bucketIndexOuter)
  513.             );

  514.             bucketLabelList.add ("" + bucketIndexOuter);

  515.             for (int bucketIndexInner = 0; bucketIndexInner < bucketCount; ++bucketIndexInner)
  516.             {
  517.                 crossBucketCorrelation[bucketIndexInner][bucketIndexOuter] =
  518.                     bucketIndexInner == bucketIndexOuter ? 1. :
  519.                     org.drip.simm.credit.CRNQBucketCorrelation20.NON_RESIDUAL_TO_NON_RESIDUAL;
  520.             }
  521.         }

  522.         try
  523.         {
  524.             return new RiskMeasureSensitivitySettingsCR (
  525.                 bucketSensitivitySettingsMap,
  526.                 new org.drip.measure.stochastic.LabelCorrelation (
  527.                     bucketLabelList,
  528.                     crossBucketCorrelation
  529.                 )
  530.             );
  531.         }
  532.         catch (java.lang.Exception e)
  533.         {
  534.             e.printStackTrace();
  535.         }

  536.         return null;
  537.     }

  538.     /**
  539.      * Generate SIMM 2.1 Non-Credit Qualifying Curvature Sensitivity Settings
  540.      *
  541.      * @return The SIMM 2.1 Non-Credit Qualifying Curvature Sensitivity Settings
  542.      */

  543.     public static final RiskMeasureSensitivitySettingsCR ISDA_CRNQ_CURVATURE_21()
  544.     {
  545.         java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  546.             bucketSensitivitySettingsMap = new
  547.                 org.drip.analytics.support.CaseInsensitiveHashMap<org.drip.simm.parameters.BucketSensitivitySettingsCR>();

  548.         java.util.Set<java.lang.Integer> bucketIndexSet =
  549.             org.drip.simm.credit.CRNQSettingsContainer21.BucketSet();

  550.         int bucketCount = bucketIndexSet.size();

  551.         java.util.List<java.lang.String> bucketLabelList = new java.util.ArrayList<java.lang.String>();

  552.         double[][] crossBucketCorrelation = new double[bucketCount][bucketCount];

  553.         for (int bucketIndexOuter = 0; bucketIndexOuter < bucketCount; ++bucketIndexOuter)
  554.         {
  555.             bucketSensitivitySettingsMap.put (
  556.                 "" + bucketIndexOuter,
  557.                 org.drip.simm.parameters.BucketCurvatureSettingsCR.ISDA_CRNQ_21 (bucketIndexOuter)
  558.             );

  559.             bucketLabelList.add ("" + bucketIndexOuter);

  560.             for (int bucketIndexInner = 0; bucketIndexInner < bucketCount; ++bucketIndexInner)
  561.             {
  562.                 crossBucketCorrelation[bucketIndexInner][bucketIndexOuter] =
  563.                     bucketIndexInner == bucketIndexOuter ? 1. :
  564.                     org.drip.simm.credit.CRNQBucketCorrelation21.NON_RESIDUAL_TO_NON_RESIDUAL;
  565.             }
  566.         }

  567.         try
  568.         {
  569.             return new RiskMeasureSensitivitySettingsCR (
  570.                 bucketSensitivitySettingsMap,
  571.                 new org.drip.measure.stochastic.LabelCorrelation (
  572.                     bucketLabelList,
  573.                     crossBucketCorrelation
  574.                 )
  575.             );
  576.         }
  577.         catch (java.lang.Exception e)
  578.         {
  579.             e.printStackTrace();
  580.         }

  581.         return null;
  582.     }

  583.     /**
  584.      * RiskMeasureSensitivitySettingsCR Constructor
  585.      *
  586.      * @param bucketSensitivitySettingsMap Credit Bucket Sensitivity Settings Map
  587.      * @param crossBucketCorrelation Cross Bucket Correlation
  588.      *
  589.      * @throws java.lang.Exception Thrown if the Inputs are Invalid
  590.      */

  591.     public RiskMeasureSensitivitySettingsCR (
  592.         final java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  593.             bucketSensitivitySettingsMap,
  594.         final org.drip.measure.stochastic.LabelCorrelation crossBucketCorrelation)
  595.         throws java.lang.Exception
  596.     {
  597.         if (null == (_bucketSensitivitySettingsMap = bucketSensitivitySettingsMap) ||
  598.                 0 == _bucketSensitivitySettingsMap.size() ||
  599.             null == (_crossBucketCorrelation = crossBucketCorrelation))
  600.         {
  601.             throw new java.lang.Exception ("RiskMeasureSensitivitySettingsCR Constructor => Invalid Inputs");
  602.         }
  603.     }

  604.     /**
  605.      * Retrieve the Cross Bucket Correlation
  606.      *
  607.      * @return The Cross Bucket Correlation
  608.      */

  609.     public org.drip.measure.stochastic.LabelCorrelation crossBucketCorrelation()
  610.     {
  611.         return _crossBucketCorrelation;
  612.     }

  613.     /**
  614.      * Retrieve the Credit Bucket Sensitivity Settings Map
  615.      *
  616.      * @return The Credit Bucket Sensitivity Settings Map
  617.      */

  618.     public java.util.Map<java.lang.String, org.drip.simm.parameters.BucketSensitivitySettingsCR>
  619.         bucketSensitivitySettingsMap()
  620.     {
  621.         return _bucketSensitivitySettingsMap;
  622.     }
  623. }