StressScenarioDefinition.java
package org.drip.sample.systemicstress;
import java.util.List;
import java.util.Map;
import org.drip.capital.env.SystemicScenarioDefinitionContextManager;
import org.drip.capital.shell.PredictorScenarioSpecificationContainer;
import org.drip.capital.systemicscenario.CapitalBaselineDefinition;
import org.drip.capital.systemicscenario.HistoricalScenarioDefinition;
import org.drip.capital.systemicscenario.HypotheticalScenarioDefinition;
import org.drip.capital.systemicscenario.PredictorScenarioSpecification;
import org.drip.capital.systemicscenario.StressScenarioQuantification;
import org.drip.capital.systemicscenario.StressScenarioSpecification;
import org.drip.numerical.common.FormatUtil;
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>StressScenarioDefinition</i> zeds the Built-in Stress Scenario Definitions 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 StressScenarioDefinition
{
public static final void main (
final String[] argumentArray)
throws Exception
{
EnvManager.InitEnv ("");
PredictorScenarioSpecificationContainer predictorScenarioSpecificationContainer =
SystemicScenarioDefinitionContextManager.PredictorScenarioSpecificationContainer();
Map<String, List<String>> categoryPredictorListMap =
predictorScenarioSpecificationContainer.categoryPredictorListMap();
System.out.println ("\t|----------------------------------------------------------|");
System.out.println ("\t| CATEGORIES AND THEIR PREDICTORS |");
System.out.println ("\t|----------------------------------------------------------|");
for (Map.Entry<String, List<String>> categoryPredictorListMapEntry :
categoryPredictorListMap.entrySet())
{
System.out.println ("\t| CATEGORY => " + categoryPredictorListMapEntry.getKey());
for (String predictor : categoryPredictorListMapEntry.getValue())
{
System.out.println ("\t| \t" + predictor);
}
System.out.println ("\t|----------------------------------------------------------|");
}
System.out.println();
System.out.println ("\t|-----------------------------------------------------------------------------|");
System.out.println ("\t| PREDICTORS AND STRESS SCENARIO DEFINITIONS |");
System.out.println ("\t|-----------------------------------------------------------------------------|");
for (Map.Entry<String, PredictorScenarioSpecification> predictorScenarioSpecificationMapEntry :
predictorScenarioSpecificationContainer.predictorScenarioSpecificationMap().entrySet())
{
PredictorScenarioSpecification predictorScenarioSpecification =
predictorScenarioSpecificationMapEntry.getValue();
System.out.println (
"\t| " + predictorScenarioSpecificationMapEntry.getKey() + " => " +
predictorScenarioSpecification.category()
);
System.out.println ("\t| ------------------------------------------------------");
for (Map.Entry<String, StressScenarioSpecification> stressScenarioSpecificationMapEntry :
predictorScenarioSpecification.segmentScenarioSpecificationMap().entrySet())
{
StressScenarioSpecification stressScenarioSpecification =
stressScenarioSpecificationMapEntry.getValue();
StressScenarioQuantification stressScenarioQuantification =
stressScenarioSpecification.stressScenarioQuantification();
HypotheticalScenarioDefinition hypotheticalScenarioDefinition =
stressScenarioSpecification.hypotheticalScenarioDefinition();
HistoricalScenarioDefinition historicalScenarioDefinition =
stressScenarioSpecification.historicalScenarioDefinition();
CapitalBaselineDefinition capitalBaselineDefinition =
stressScenarioSpecification.capitalBaselineDefinition();
System.out.println (
"\t| \t " + stressScenarioSpecificationMapEntry.getKey() + " => "
);
System.out.println (
"\t| \t \t[QUANTIFICATION: " +
stressScenarioQuantification.typeOfChange() + " | " +
stressScenarioQuantification.unit() +
"]"
);
System.out.println (
"\t| \t \t[HYPOTHETICAL SCENARIO: " +
FormatUtil.FormatDouble (hypotheticalScenarioDefinition.dollarDecline(), 3, 1, 1.) + " | " +
FormatUtil.FormatDouble (hypotheticalScenarioDefinition.lostDecade(), 3, 1, 1.) + " | " +
FormatUtil.FormatDouble (hypotheticalScenarioDefinition.interestRateShock(), 3, 1, 1.) + " | " +
FormatUtil.FormatDouble (hypotheticalScenarioDefinition.deepDownturn(), 3, 1, 1.) +
"]"
);
System.out.println (
"\t| \t \t[HISTORICAL SCENARIO: " +
FormatUtil.FormatDouble (historicalScenarioDefinition.fy1974(), 3, 1, 1.) + " | " +
FormatUtil.FormatDouble (historicalScenarioDefinition.fy2008(), 3, 1, 1.) +
"]"
);
System.out.println (
"\t| \t \t[CAPITAL BASELINE: " +
FormatUtil.FormatDouble (capitalBaselineDefinition.fy1974(), 3, 1, 1.) + " | " +
FormatUtil.FormatDouble (capitalBaselineDefinition.fy2008(), 3, 1, 1.) +
"]"
);
}
System.out.println ("\t|-----------------------------------------------------------------------------|");
}
EnvManager.TerminateEnv();
}
}