CreditSpreadEventDesign.java
- package org.drip.sample.systemicstress;
- import java.util.Map;
- import org.drip.capital.env.SystemicScenarioDesignContextManager;
- import org.drip.capital.systemicscenario.CreditSpreadEvent;
- import org.drip.capital.systemicscenario.Criterion;
- import org.drip.numerical.common.FormatUtil;
- import org.drip.numerical.common.NumberUtil;
- import org.drip.service.env.EnvManager;
- /*
- * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- */
- /*!
- * Copyright (C) 2019 Quantitative Risk Analytics
- */
- /**
- * <i>CreditSpreadEventDesign</i> zeds the Built-in Credit Spread Events used for GSST Scenario Design. The
- * References are:
- *
- * <br><br>
- * <ul>
- * <li>
- * Bank for International Supervision(2005): Stress Testing at Major Financial Institutions: Survey
- * Results and Practice https://www.bis.org/publ/cgfs24.htm
- * </li>
- * <li>
- * Glasserman, P. (2004): <i>Monte Carlo Methods in Financial Engineering</i> <b>Springer</b>
- * </li>
- * <li>
- * Kupiec, P. H. (2000): Stress Tests and Risk Capital <i>Risk</i> <b>2 (4)</b> 27-39
- * </li>
- * </ul>
- *
- * @author Lakshmi Krishnamurthy
- */
- public class CreditSpreadEventDesign
- {
- private static final String CriterionValue (
- final double value,
- final int lefttOfDecimal,
- final int rightOfDecimal)
- throws Exception
- {
- return !NumberUtil.IsValid (value) ? " N/A" :
- FormatUtil.FormatDouble (value, lefttOfDecimal, rightOfDecimal, 1.);
- }
- private static final void DisplayCriterion (
- final Criterion criterion)
- throws Exception
- {
- System.out.println (
- "\t| - " + criterion.name() + " => " + criterion.description()
- );
- }
- public static final void main (
- final String[] argumentArray)
- throws Exception
- {
- EnvManager.InitEnv ("");
- System.out.println ("\t|---------------------------------------------------------------------------|");
- System.out.println ("\t| GSST SCENARIO DESIGN CREDIT SPREAD EVENTS |");
- System.out.println ("\t|---------------------------------------------------------------------------|");
- boolean headerPass = true;
- for (Map.Entry<Integer, CreditSpreadEvent> creditSpreadEventMapEntry :
- SystemicScenarioDesignContextManager.CreditSpreadEventContainer().creditSpreadEventMap().entrySet())
- {
- CreditSpreadEvent creditSpreadEvent = creditSpreadEventMapEntry.getValue();
- if (headerPass)
- {
- headerPass = false;
- System.out.println ("\t| L -> R:");
- System.out.println ("\t| - Credit Spread Event Index");
- System.out.println ("\t| - Credit Spread Event Scenario Name");
- DisplayCriterion (
- creditSpreadEvent.baaSpreadChange()
- );
- DisplayCriterion (
- creditSpreadEvent.snp500Return()
- );
- DisplayCriterion (
- creditSpreadEvent.ust5YChange()
- );
- DisplayCriterion (
- creditSpreadEvent.ust10YMinus3MChange()
- );
- DisplayCriterion (
- creditSpreadEvent.fxChange()
- );
- DisplayCriterion (
- creditSpreadEvent.wtiSpotReturn()
- );
- DisplayCriterion (
- creditSpreadEvent.snpGSCI()
- );
- System.out.println ("\t|---------------------------------------------------------------------------|");
- }
- System.out.println (
- "\t|" + FormatUtil.FormatDouble (creditSpreadEventMapEntry.getKey(), 2, 0, 1.) + " => " +
- creditSpreadEvent.scenario() + " | " +
- FormatUtil.FormatDouble (creditSpreadEvent.baaSpreadChange().value(), 3, 0, 1., false) + " | " +
- CriterionValue (creditSpreadEvent.snp500Return().value(), 3, 1) + "% | " +
- CriterionValue (creditSpreadEvent.ust5YChange().value(), 3, 0) + " | " +
- CriterionValue (creditSpreadEvent.ust10YMinus3MChange().value(), 3, 0) + " | " +
- CriterionValue (creditSpreadEvent.fxChange().value(), 1, 1) + "% | " +
- CriterionValue (creditSpreadEvent.wtiSpotReturn().value(), 3, 1) + "% | " +
- CriterionValue (creditSpreadEvent.snpGSCI().value(), 2, 1) + "%"
- );
- }
- System.out.println ("\t|---------------------------------------------------------------------------|");
- EnvManager.TerminateEnv();
- }
- }