CVANORTHAMERICA.java

  1. package org.drip.sample.systemicstress;

  2. import java.util.Map;

  3. import org.drip.capital.entity.CapitalUnitEventContainer;
  4. import org.drip.capital.env.CapitalEstimationContextManager;
  5. import org.drip.capital.shell.CapitalUnitStressEventContext;
  6. import org.drip.capital.stress.Event;
  7. import org.drip.capital.stress.SystemicEventContainer;
  8. import org.drip.capital.stress.PnLSeries;
  9. import org.drip.capital.stress.EventSpecification;
  10. import org.drip.numerical.common.FormatUtil;
  11. import org.drip.service.env.EnvManager;

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

  15. /*!
  16.  * Copyright (C) 2019 Quantitative Risk Analytics
  17.  */

  18. /**
  19.  * <i>CVANORTHAMERICA</i> zeds the Child Coordinates and their corresponding GSST Dump - Scenario Names, Loss
  20.  * Amount, and Probability for the following Coordinates:
  21.  *  
  22.  *    - REGION    == NORTH AMERICA
  23.  *    - RISK TYPE == CVA
  24.  *    
  25.  * The References are:
  26.  *
  27.  * <br><br>
  28.  *  <ul>
  29.  *      <li>
  30.  *          Bank for International Supervision(2005): Stress Testing at Major Financial Institutions: Survey
  31.  *              Results and Practice https://www.bis.org/publ/cgfs24.htm
  32.  *      </li>
  33.  *      <li>
  34.  *          Glasserman, P. (2004): <i>Monte Carlo Methods in Financial Engineering</i> <b>Springer</b>
  35.  *      </li>
  36.  *      <li>
  37.  *          Kupiec, P. H. (2000): Stress Tests and Risk Capital <i>Risk</i> <b>2 (4)</b> 27-39
  38.  *      </li>
  39.  *  </ul>
  40.  *
  41.  * @author Lakshmi Krishnamurthy
  42.  */

  43. public class CVANORTHAMERICA
  44. {

  45.     private static final String DisplayStressEventPnL (
  46.         final PnLSeries stressEventPnL)
  47.         throws Exception
  48.     {
  49.         String stressEventPnLDisplay = " ";

  50.         for (double pnlOutcome : stressEventPnL.outcomeArray())
  51.         {
  52.             stressEventPnLDisplay = stressEventPnLDisplay +
  53.                 FormatUtil.FormatDouble (pnlOutcome, 3, 1, 1.) + " | ";
  54.         }

  55.         return stressEventPnLDisplay + FormatUtil.FormatDouble (stressEventPnL.composite(), 3, 1, 1.);
  56.     }

  57.     private static final void DisplayStressScenario (
  58.         final Map<String, CapitalUnitEventContainer> coordinateStressScenarioMap,
  59.         final java.lang.String coordinateFQN)
  60.         throws Exception
  61.     {
  62.         SystemicEventContainer coordinateStressScenarioEvents =
  63.             coordinateStressScenarioMap.get (coordinateFQN).systemicEventContainer();

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

  65.         System.out.println (
  66.             "\t|[" + coordinateFQN + "] => " +
  67.             coordinateStressScenarioEvents.eventType()
  68.         );

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

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

  71.         Map<String, Event> eventMap = coordinateStressScenarioEvents.eventMap();

  72.         for (Map.Entry<String, Event> eventMapEntry : eventMap.entrySet())
  73.         {
  74.             Event coordinateStressEvent = eventMapEntry.getValue();

  75.             EventSpecification stressEvent = coordinateStressEvent.specification();

  76.             System.out.println (
  77.                 "\t\t[Name => " + stressEvent.name() + "] | " +
  78.                 "[Probability => " + FormatUtil.FormatDouble (stressEvent.probability(), 1, 4, 1.) + "] | " +
  79.                 "[PnL => " + DisplayStressEventPnL (coordinateStressEvent.aggregatePnLSeries()) + "] ||"
  80.             );
  81.         }

  82.         System.out.println ("\t|------------------------------------------------------------------------||");
  83.     }

  84.     public static final void main (
  85.         final String[] argumentArray)
  86.         throws Exception
  87.     {
  88.         EnvManager.InitEnv ("");

  89.         String region = "NORTH AMERICA";
  90.         String riskType = "CVA";

  91.         CapitalUnitStressEventContext gocStressEventContext =
  92.             CapitalEstimationContextManager.ContextContainer().capitalUnitStressEventContext();

  93.         Map<String, CapitalUnitEventContainer> gocEventContainerMap = gocStressEventContext.capitalUnitEventMap();

  94.         for (String fqn : gocStressEventContext.matchingCapitalUnitCoordinateSet (
  95.             region,
  96.             riskType
  97.         ))
  98.         {
  99.             DisplayStressScenario (
  100.                 gocEventContainerMap,
  101.                 fqn
  102.             );
  103.         }

  104.         EnvManager.TerminateEnv();
  105.     }
  106. }