StressScenarioDefinition.java

  1. package org.drip.sample.systemicstress;

  2. import java.util.List;
  3. import java.util.Map;

  4. import org.drip.capital.env.SystemicScenarioDefinitionContextManager;
  5. import org.drip.capital.shell.PredictorScenarioSpecificationContainer;
  6. import org.drip.capital.systemicscenario.CapitalBaselineDefinition;
  7. import org.drip.capital.systemicscenario.HistoricalScenarioDefinition;
  8. import org.drip.capital.systemicscenario.HypotheticalScenarioDefinition;
  9. import org.drip.capital.systemicscenario.PredictorScenarioSpecification;
  10. import org.drip.capital.systemicscenario.StressScenarioQuantification;
  11. import org.drip.capital.systemicscenario.StressScenarioSpecification;
  12. import org.drip.numerical.common.FormatUtil;
  13. import org.drip.service.env.EnvManager;

  14. /*
  15.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  16.  */

  17. /*!
  18.  * Copyright (C) 2019 Quantitative Risk Analytics
  19.  */

  20. /**
  21.  * <i>StressScenarioDefinition</i> zeds the Built-in Stress Scenario Definitions used for GSST Scenario
  22.  *  Design. The References are:
  23.  *
  24.  * <br><br>
  25.  *  <ul>
  26.  *      <li>
  27.  *          Bank for International Supervision(2005): Stress Testing at Major Financial Institutions: Survey
  28.  *              Results and Practice https://www.bis.org/publ/cgfs24.htm
  29.  *      </li>
  30.  *      <li>
  31.  *          Glasserman, P. (2004): <i>Monte Carlo Methods in Financial Engineering</i> <b>Springer</b>
  32.  *      </li>
  33.  *      <li>
  34.  *          Kupiec, P. H. (2000): Stress Tests and Risk Capital <i>Risk</i> <b>2 (4)</b> 27-39
  35.  *      </li>
  36.  *  </ul>
  37.  *
  38.  * @author Lakshmi Krishnamurthy
  39.  */

  40. public class StressScenarioDefinition
  41. {

  42.     public static final void main (
  43.         final String[] argumentArray)
  44.         throws Exception
  45.     {
  46.         EnvManager.InitEnv ("");

  47.         PredictorScenarioSpecificationContainer predictorScenarioSpecificationContainer =
  48.             SystemicScenarioDefinitionContextManager.PredictorScenarioSpecificationContainer();

  49.         Map<String, List<String>> categoryPredictorListMap =
  50.             predictorScenarioSpecificationContainer.categoryPredictorListMap();

  51.         System.out.println ("\t|----------------------------------------------------------|");

  52.         System.out.println ("\t|             CATEGORIES AND THEIR PREDICTORS              |");

  53.         System.out.println ("\t|----------------------------------------------------------|");

  54.         for (Map.Entry<String, List<String>> categoryPredictorListMapEntry :
  55.             categoryPredictorListMap.entrySet())
  56.         {
  57.             System.out.println ("\t| CATEGORY => " + categoryPredictorListMapEntry.getKey());

  58.             for (String predictor : categoryPredictorListMapEntry.getValue())
  59.             {
  60.                 System.out.println ("\t| \t" + predictor);
  61.             }

  62.             System.out.println ("\t|----------------------------------------------------------|");
  63.         }

  64.         System.out.println();

  65.         System.out.println ("\t|-----------------------------------------------------------------------------|");

  66.         System.out.println ("\t|                 PREDICTORS AND STRESS SCENARIO DEFINITIONS                  |");

  67.         System.out.println ("\t|-----------------------------------------------------------------------------|");

  68.         for (Map.Entry<String, PredictorScenarioSpecification> predictorScenarioSpecificationMapEntry :
  69.             predictorScenarioSpecificationContainer.predictorScenarioSpecificationMap().entrySet())
  70.         {
  71.             PredictorScenarioSpecification predictorScenarioSpecification =
  72.                 predictorScenarioSpecificationMapEntry.getValue();

  73.             System.out.println (
  74.                 "\t| " + predictorScenarioSpecificationMapEntry.getKey() + " => " +
  75.                     predictorScenarioSpecification.category()
  76.             );

  77.             System.out.println ("\t| ------------------------------------------------------");

  78.             for (Map.Entry<String, StressScenarioSpecification> stressScenarioSpecificationMapEntry :
  79.                 predictorScenarioSpecification.segmentScenarioSpecificationMap().entrySet())
  80.             {
  81.                 StressScenarioSpecification stressScenarioSpecification =
  82.                     stressScenarioSpecificationMapEntry.getValue();

  83.                 StressScenarioQuantification stressScenarioQuantification =
  84.                     stressScenarioSpecification.stressScenarioQuantification();

  85.                 HypotheticalScenarioDefinition hypotheticalScenarioDefinition =
  86.                     stressScenarioSpecification.hypotheticalScenarioDefinition();

  87.                 HistoricalScenarioDefinition historicalScenarioDefinition =
  88.                     stressScenarioSpecification.historicalScenarioDefinition();

  89.                 CapitalBaselineDefinition capitalBaselineDefinition =
  90.                     stressScenarioSpecification.capitalBaselineDefinition();

  91.                 System.out.println (
  92.                     "\t| \t " + stressScenarioSpecificationMapEntry.getKey() + " => "
  93.                 );

  94.                 System.out.println (
  95.                     "\t| \t \t[QUANTIFICATION: " +
  96.                         stressScenarioQuantification.typeOfChange() + " | " +
  97.                         stressScenarioQuantification.unit() +
  98.                     "]"
  99.                 );

  100.                 System.out.println (
  101.                     "\t| \t \t[HYPOTHETICAL SCENARIO: " +
  102.                         FormatUtil.FormatDouble (hypotheticalScenarioDefinition.dollarDecline(), 3, 1, 1.) + " | " +
  103.                         FormatUtil.FormatDouble (hypotheticalScenarioDefinition.lostDecade(), 3, 1, 1.) + " | " +
  104.                         FormatUtil.FormatDouble (hypotheticalScenarioDefinition.interestRateShock(), 3, 1, 1.) + " | " +
  105.                         FormatUtil.FormatDouble (hypotheticalScenarioDefinition.deepDownturn(), 3, 1, 1.) +
  106.                     "]"
  107.                 );

  108.                 System.out.println (
  109.                     "\t| \t \t[HISTORICAL SCENARIO: " +
  110.                         FormatUtil.FormatDouble (historicalScenarioDefinition.fy1974(), 3, 1, 1.) + " | " +
  111.                         FormatUtil.FormatDouble (historicalScenarioDefinition.fy2008(), 3, 1, 1.) +
  112.                     "]"
  113.                 );

  114.                 System.out.println (
  115.                     "\t| \t \t[CAPITAL BASELINE: " +
  116.                         FormatUtil.FormatDouble (capitalBaselineDefinition.fy1974(), 3, 1, 1.) + " | " +
  117.                         FormatUtil.FormatDouble (capitalBaselineDefinition.fy2008(), 3, 1, 1.) +
  118.                     "]"
  119.                 );
  120.             }

  121.             System.out.println ("\t|-----------------------------------------------------------------------------|");
  122.         }

  123.         EnvManager.TerminateEnv();
  124.     }
  125. }