CashExplain.java

  1. package org.drip.sample.allocation;

  2. import java.util.Map;

  3. import org.drip.analytics.support.CaseInsensitiveHashMap;
  4. import org.drip.capital.allocation.CorrelationCategoryBetaManager;
  5. import org.drip.capital.allocation.EntityCapital;
  6. import org.drip.capital.allocation.EntityCapitalAssignmentSetting;
  7. import org.drip.capital.allocation.EntityComponentCapital;
  8. import org.drip.capital.allocation.EntityComponentCapitalAssignment;
  9. import org.drip.capital.allocation.EntityComponentCorrelationCategory;
  10. import org.drip.capital.entity.CapitalUnit;
  11. import org.drip.capital.entity.ManagedSegmentL1;
  12. import org.drip.capital.env.CapitalEstimationContextManager;
  13. import org.drip.capital.explain.CapitalSegmentStandaloneMarginal;
  14. import org.drip.capital.label.BusinessRegionRiskTypeCoordinate;
  15. import org.drip.capital.label.CapitalSegmentCoordinate;
  16. import org.drip.capital.label.Coordinate;
  17. import org.drip.capital.setting.CapitalAllocationControl;
  18. import org.drip.capital.setting.SimulationControl;
  19. import org.drip.capital.setting.SimulationPnLControl;
  20. import org.drip.numerical.common.FormatUtil;
  21. import org.drip.service.env.EnvManager;

  22. /*
  23.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  24.  */

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

  94. /**
  95.  * <i>CashExplain</i> zeds the GOC-Level Stand-alone for the Specified Managed Segment.
  96.  *
  97.  *     MANAGED SEGMENT  - Cash
  98.  *    
  99.  * The References are:
  100.  *
  101.  * <br><br>
  102.  *  <ul>
  103.  *      <li>
  104.  *          Bank for International Supervision(2005): Stress Testing at Major Financial Institutions: Survey
  105.  *              Results and Practice https://www.bis.org/publ/cgfs24.htm
  106.  *      </li>
  107.  *      <li>
  108.  *          Glasserman, P. (2004): <i>Monte Carlo Methods in Financial Engineering</i> <b>Springer</b>
  109.  *      </li>
  110.  *      <li>
  111.  *          Kupiec, P. H. (2000): Stress Tests and Risk Capital <i>Risk</i> <b>2 (4)</b> 27-39
  112.  *      </li>
  113.  *  </ul>
  114.  *
  115.  *  <br><br>
  116.  *  <ul>
  117.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/PortfolioCore.md">Portfolio Core Module</a></li>
  118.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/CapitalAnalyticsLibrary.md">Capital Analytics</a></li>
  119.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/sample/README.md">DROP API Construction and Usage</a></li>
  120.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/sample/allocation/README.md">Managed Segment Capital Allocation Schemes</a></li>
  121.  *  </ul>
  122.  *    
  123.  * @author Lakshmi Krishnamurthy
  124.  */

  125. public class CashExplain
  126. {

  127.     private static final CapitalUnit MakeCapitalUnit (
  128.         final String business,
  129.         final String region,
  130.         final String riskType,
  131.         final double varNotional)
  132.         throws Exception
  133.     {
  134.         Coordinate capitalUnitCoordinate = new BusinessRegionRiskTypeCoordinate (
  135.             business,
  136.             region,
  137.             riskType
  138.         );

  139.         return new CapitalUnit (
  140.             capitalUnitCoordinate,
  141.             CapitalEstimationContextManager.ContextContainer().capitalUnitStressEventContext().capitalUnitEventMap().get
  142.             (
  143.                 capitalUnitCoordinate.fullyQualifiedName()
  144.             ),
  145.             varNotional
  146.         );
  147.     }

  148.     private static final EntityCapitalAssignmentSetting LowUniformBeta()
  149.     {
  150.         return EntityCapitalAssignmentSetting.UniformBeta (
  151.             EntityComponentCorrelationCategory.LOW_CORRELATION,
  152.             EntityComponentCorrelationCategory.LOW_CORRELATION,
  153.             EntityComponentCorrelationCategory.LOW_CORRELATION,
  154.             EntityComponentCorrelationCategory.HIGH_CORRELATION,
  155.             EntityComponentCorrelationCategory.HIGH_CORRELATION
  156.         );
  157.     }

  158.     private static final EntityCapitalAssignmentSetting MediumUniformBeta()
  159.     {
  160.         return EntityCapitalAssignmentSetting.UniformBeta (
  161.             EntityComponentCorrelationCategory.MEDIUM_CORRELATION,
  162.             EntityComponentCorrelationCategory.MEDIUM_CORRELATION,
  163.             EntityComponentCorrelationCategory.MEDIUM_CORRELATION,
  164.             EntityComponentCorrelationCategory.HIGH_CORRELATION,
  165.             EntityComponentCorrelationCategory.HIGH_CORRELATION
  166.         );
  167.     }

  168.     private static final EntityCapitalAssignmentSetting HighUniformBeta()
  169.     {
  170.         return EntityCapitalAssignmentSetting.UniformBeta (
  171.             EntityComponentCorrelationCategory.HIGH_CORRELATION,
  172.             EntityComponentCorrelationCategory.HIGH_CORRELATION,
  173.             EntityComponentCorrelationCategory.HIGH_CORRELATION,
  174.             EntityComponentCorrelationCategory.HIGH_CORRELATION,
  175.             EntityComponentCorrelationCategory.HIGH_CORRELATION
  176.         );
  177.     }

  178.     private static final EntityCapitalAssignmentSetting HighMedumLowUniformBeta()
  179.     {
  180.         double random = Math.random();

  181.         if (random < 13. / 34.)
  182.         {
  183.             return LowUniformBeta();
  184.         }

  185.         return random < 29. / 34. ? MediumUniformBeta() : HighUniformBeta();
  186.     }

  187.     private static final EntityCapitalAssignmentSetting HighLowUniformBeta()
  188.     {
  189.         return Math.random() < 29. / 34. ? LowUniformBeta() : HighUniformBeta();
  190.     }

  191.     private static final void Allocate (
  192.         final CapitalUnit[] capitalUnitArray,
  193.         final CapitalSegmentStandaloneMarginal capitalSegmentStandaloneMarginal,
  194.         final CapitalAllocationControl marginalProRataCapitalAllocationControl,
  195.         final CapitalAllocationControl standaloneProRataCapitalAllocationControl,
  196.         final CapitalAllocationControl fixedFloatFloatCapitalAllocationControl,
  197.         final CapitalAllocationControl fixedFloatCapitalAllocationControl,
  198.         final CapitalAllocationControl floatFloatCapitalAllocationControl)
  199.         throws Exception
  200.     {
  201.         EntityComponentCapitalAssignment marginalProRataEntityComponentCapitalAssignment =
  202.             capitalSegmentStandaloneMarginal.betaAllocation (
  203.                 marginalProRataCapitalAllocationControl
  204.             );

  205.         Map<String, EntityComponentCapital> marginalProRataEntityComponentCapitalMap =
  206.             marginalProRataEntityComponentCapitalAssignment.entityComponentCapitalMap();

  207.         EntityComponentCapitalAssignment standaloneProRataEntityComponentCapitalAssignment =
  208.             capitalSegmentStandaloneMarginal.betaAllocation (
  209.                 standaloneProRataCapitalAllocationControl
  210.             );

  211.         Map<String, EntityComponentCapital> standaloneProRataEntityComponentCapitalMap =
  212.             standaloneProRataEntityComponentCapitalAssignment.entityComponentCapitalMap();

  213.         EntityComponentCapitalAssignment fixedFloatFloatEntityComponentCapitalAssignment =
  214.             capitalSegmentStandaloneMarginal.betaAllocation (
  215.                 fixedFloatFloatCapitalAllocationControl
  216.             );

  217.         Map<String, EntityComponentCapital> fixedFloatFloatEntityComponentCapitalMap =
  218.             fixedFloatFloatEntityComponentCapitalAssignment.entityComponentCapitalMap();

  219.         EntityComponentCapitalAssignment fixedFloatEntityComponentCapitalAssignment =
  220.             capitalSegmentStandaloneMarginal.betaAllocation (
  221.                 fixedFloatCapitalAllocationControl
  222.             );

  223.         Map<String, EntityComponentCapital> fixedFloatEntityComponentCapitalMap =
  224.             fixedFloatEntityComponentCapitalAssignment.entityComponentCapitalMap();

  225.         EntityComponentCapitalAssignment floatFloatEntityComponentCapitalAssignment =
  226.             capitalSegmentStandaloneMarginal.betaAllocation (
  227.                 floatFloatCapitalAllocationControl
  228.             );

  229.         Map<String, EntityComponentCapital> floatFloatEntityComponentCapitalMap =
  230.             floatFloatEntityComponentCapitalAssignment.entityComponentCapitalMap();

  231.         System.out.println (
  232.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  233.         );

  234.         System.out.println (
  235.             "\t|                                                                              CAPITAL UNIT RC ALLOCATION                                                                              ||"
  236.         );

  237.         System.out.println (
  238.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  239.         );

  240.         System.out.println (
  241.             "\t|    L -> R:                                                                                                                                                                           ||"
  242.         );

  243.         System.out.println (
  244.             "\t|            - Marginal Pro-Rata Fractional                                                                                                                                            ||"
  245.         );

  246.         System.out.println (
  247.             "\t|            - Standalone Pro-Rata Fractional                                                                                                                                          ||"
  248.         );

  249.         System.out.println (
  250.             "\t|            - Three-Beta Fixed-Float-Float Fractional                                                                                                                                 ||"
  251.         );

  252.         System.out.println (
  253.             "\t|            - Two-Beta Fixed-Float Fractional                                                                                                                                         ||"
  254.         );

  255.         System.out.println (
  256.             "\t|            - Two-Beta Float-Float Fractional                                                                                                                                         ||"
  257.         );

  258.         System.out.println (
  259.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  260.         );

  261.         System.out.println (
  262.             "\t|            - Marginal Pro-Rata Absolute                                                                                                                                              ||"
  263.         );

  264.         System.out.println (
  265.             "\t|            - Standalone Pro-Rata Absolute                                                                                                                                            ||"
  266.         );

  267.         System.out.println (
  268.             "\t|            - Three-Beta Fixed-Float-Float Absolute                                                                                                                                   ||"
  269.         );

  270.         System.out.println (
  271.             "\t|            - Two-Beta Fixed-Float Absolute                                                                                                                                           ||"
  272.         );

  273.         System.out.println (
  274.             "\t|            - Two-Beta Float-Float Absolute                                                                                                                                           ||"
  275.         );

  276.         System.out.println (
  277.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  278.         );

  279.         System.out.println (
  280.             "\t|            - Capital Unit Coordinate                                                                                                                                                 ||"
  281.         );

  282.         System.out.println (
  283.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  284.         );

  285.         for (int capitalUnitIndex = 0;
  286.             capitalUnitIndex < capitalUnitArray.length;
  287.             ++capitalUnitIndex)
  288.         {
  289.             String capitalUnitFQN = capitalUnitArray[capitalUnitIndex].coordinate().fullyQualifiedName();

  290.             EntityCapital marginalProRataEntityComponentCapitalTotal =
  291.                 marginalProRataEntityComponentCapitalMap.get (
  292.                     capitalUnitFQN
  293.                 ).total();

  294.             EntityCapital standaloneProRataEntityComponentCapitalTotal =
  295.                 standaloneProRataEntityComponentCapitalMap.get (
  296.                     capitalUnitFQN
  297.                 ).total();

  298.             EntityCapital fixedFloatFloatEntityComponentCapitalTotal =
  299.                 fixedFloatFloatEntityComponentCapitalMap.get (
  300.                     capitalUnitFQN
  301.                 ).total();

  302.             EntityCapital fixedFloatEntityComponentCapitalTotal = fixedFloatEntityComponentCapitalMap.get (
  303.                 capitalUnitFQN
  304.             ).total();

  305.             EntityCapital floatFloatEntityComponentCapitalTotal = floatFloatEntityComponentCapitalMap.get (
  306.                 capitalUnitFQN
  307.             ).total();

  308.             System.out.println (
  309.                 "\t|    " +
  310.                 FormatUtil.FormatDouble (
  311.                     marginalProRataEntityComponentCapitalTotal.fractional(), 2, 2, 100.
  312.                 ) + "% | " +
  313.                 FormatUtil.FormatDouble (
  314.                     standaloneProRataEntityComponentCapitalTotal.fractional(), 2, 2, 100.
  315.                 ) + "% | " +
  316.                 FormatUtil.FormatDouble (
  317.                     fixedFloatFloatEntityComponentCapitalTotal.fractional(), 2, 2, 100.
  318.                 ) + "% | " +
  319.                 FormatUtil.FormatDouble (
  320.                     fixedFloatEntityComponentCapitalTotal.fractional(), 2, 2, 100.
  321.                 ) + "% | " +
  322.                 FormatUtil.FormatDouble (
  323.                     floatFloatEntityComponentCapitalTotal.fractional(), 2, 2, 100.
  324.                 ) + "% || " + FormatUtil.FormatDouble (
  325.                     marginalProRataEntityComponentCapitalTotal.absolute(), 10, 2, 1.
  326.                 ) + " | " + FormatUtil.FormatDouble (
  327.                     standaloneProRataEntityComponentCapitalTotal.absolute(), 10, 2, 1.
  328.                 ) + " | " + FormatUtil.FormatDouble (
  329.                     fixedFloatFloatEntityComponentCapitalTotal.absolute(), 10, 2, 1.
  330.                 ) + " | " + FormatUtil.FormatDouble (
  331.                     fixedFloatEntityComponentCapitalTotal.absolute(), 10, 2, 1.
  332.                 ) + " | " + FormatUtil.FormatDouble (
  333.                     floatFloatEntityComponentCapitalTotal.absolute(), 10, 2, 1.
  334.                 ) + " <= " + capitalUnitFQN
  335.             );
  336.         }

  337.         System.out.println (
  338.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  339.         );

  340.         System.out.println (
  341.             "\t|   " +
  342.             FormatUtil.FormatDouble (
  343.                 1., 2, 2, 100.
  344.             ) + "% |" +
  345.             FormatUtil.FormatDouble (
  346.                 1., 2, 2, 100.
  347.             ) + "% |" +
  348.             FormatUtil.FormatDouble (
  349.                 1., 2, 2, 100.
  350.             ) + "% |" +
  351.             FormatUtil.FormatDouble (
  352.                 1., 2, 2, 100.
  353.             ) + "% |" +
  354.             FormatUtil.FormatDouble (
  355.                 1., 2, 2, 100.
  356.             ) + "% || " + FormatUtil.FormatDouble (
  357.                 marginalProRataEntityComponentCapitalAssignment.allocatedTotalCapital(), 10, 2, 1.
  358.             ) + " | " + FormatUtil.FormatDouble (
  359.                 standaloneProRataEntityComponentCapitalAssignment.allocatedTotalCapital(), 10, 2, 1.
  360.             ) + " | " + FormatUtil.FormatDouble (
  361.                 fixedFloatFloatEntityComponentCapitalAssignment.allocatedTotalCapital(), 10, 2, 1.
  362.             ) + " | " + FormatUtil.FormatDouble (
  363.                 fixedFloatEntityComponentCapitalAssignment.allocatedTotalCapital(), 10, 2, 1.
  364.             ) + " | " + FormatUtil.FormatDouble (
  365.                 floatFloatEntityComponentCapitalAssignment.allocatedTotalCapital(), 10, 2, 1.
  366.             ) + " <= TOTAL"
  367.         );

  368.         System.out.println (
  369.             "\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------||"
  370.         );

  371.         System.out.println();
  372.     }

  373.     public static final void main (
  374.         final String[] argumentArray)
  375.         throws Exception
  376.     {
  377.         EnvManager.InitEnv ("");

  378.         double capitalUnitNotional = 10000.;
  379.         String capitalSegmentFQN = "Cash";
  380.         String[] regionArray =
  381.         {
  382.             "ASIA",
  383.             "EMEA",
  384.             "LATIN AMERICA",
  385.             "NORTH AMERICA",
  386.         };
  387.         String[] riskTypeArray =
  388.         {
  389.             "Trading",
  390.             "Trading",
  391.             "Trading",
  392.             "Trading",
  393.         };

  394.         CorrelationCategoryBetaManager proRataCategoryManager =
  395.             CorrelationCategoryBetaManager.TwoBetaFloatFloat (
  396.                 1.0
  397.             );

  398.         CorrelationCategoryBetaManager fixedFloatFloatCategoryManager =
  399.             CorrelationCategoryBetaManager.ThreeBetaFixedFloatFloat (
  400.                 0.8,
  401.                 2.0
  402.             );

  403.         CorrelationCategoryBetaManager fixedFloatCategoryManager =
  404.             CorrelationCategoryBetaManager.TwoBetaFixedFloat (
  405.                 0.8
  406.             );

  407.         CorrelationCategoryBetaManager floatFloatCategoryManager =
  408.             CorrelationCategoryBetaManager.TwoBetaFloatFloat (
  409.                 2.0
  410.             );

  411.         SimulationControl simulationControl = SimulationControl.Standard();

  412.         SimulationPnLControl simulationPnLControl = SimulationPnLControl.Standard();

  413.         Map<String, EntityCapitalAssignmentSetting> proRataEntityCapitalAssignmentSettingMap =
  414.             new CaseInsensitiveHashMap<EntityCapitalAssignmentSetting>();

  415.         Map<String, EntityCapitalAssignmentSetting> fixedFloatFloatEntityCapitalAssignmentSettingMap =
  416.             new CaseInsensitiveHashMap<EntityCapitalAssignmentSetting>();

  417.         Map<String, EntityCapitalAssignmentSetting> fixedFloatEntityCapitalAssignmentSettingMap =
  418.             new CaseInsensitiveHashMap<EntityCapitalAssignmentSetting>();

  419.         Map<String, EntityCapitalAssignmentSetting> floatFloatEntityCapitalAssignmentSettingMap =
  420.             new CaseInsensitiveHashMap<EntityCapitalAssignmentSetting>();

  421.         CapitalUnit[] capitalUnitArray = new CapitalUnit[riskTypeArray.length];

  422.         for (int capitalUnitIndex = 0;
  423.             capitalUnitIndex < riskTypeArray.length;
  424.             ++capitalUnitIndex)
  425.         {
  426.             capitalUnitArray[capitalUnitIndex] = MakeCapitalUnit (
  427.                 capitalSegmentFQN,
  428.                 regionArray[capitalUnitIndex],
  429.                 riskTypeArray[capitalUnitIndex],
  430.                 capitalUnitNotional
  431.             );

  432.             proRataEntityCapitalAssignmentSettingMap.put (
  433.                 capitalUnitArray[capitalUnitIndex].coordinate().fullyQualifiedName(),
  434.                 LowUniformBeta()
  435.             );

  436.             fixedFloatFloatEntityCapitalAssignmentSettingMap.put (
  437.                 capitalUnitArray[capitalUnitIndex].coordinate().fullyQualifiedName(),
  438.                 HighMedumLowUniformBeta()
  439.             );

  440.             fixedFloatEntityCapitalAssignmentSettingMap.put (
  441.                 capitalUnitArray[capitalUnitIndex].coordinate().fullyQualifiedName(),
  442.                 HighLowUniformBeta()
  443.             );

  444.             floatFloatEntityCapitalAssignmentSettingMap.put (
  445.                 capitalUnitArray[capitalUnitIndex].coordinate().fullyQualifiedName(),
  446.                 HighLowUniformBeta()
  447.             );
  448.         }

  449.         CapitalSegmentStandaloneMarginal capitalSegmentStandaloneMarginal = new ManagedSegmentL1 (
  450.             new CapitalSegmentCoordinate (
  451.                 capitalSegmentFQN
  452.             ),
  453.             capitalUnitArray
  454.         ).pathEnsemble (
  455.             simulationControl,
  456.             simulationPnLControl
  457.         ).marginalStandalonePnLAttribution (
  458.             simulationPnLControl.stress().expectedShortfallConfidenceLevel()
  459.         );

  460.         Allocate (
  461.             capitalUnitArray,
  462.             capitalSegmentStandaloneMarginal,
  463.             new CapitalAllocationControl (
  464.                 true,
  465.                 null,
  466.                 proRataCategoryManager,
  467.                 proRataEntityCapitalAssignmentSettingMap
  468.             ),
  469.             new CapitalAllocationControl (
  470.                 false,
  471.                 null,
  472.                 proRataCategoryManager,
  473.                 proRataEntityCapitalAssignmentSettingMap
  474.             ),
  475.             new CapitalAllocationControl (
  476.                 false,
  477.                 null,
  478.                 fixedFloatFloatCategoryManager,
  479.                 fixedFloatFloatEntityCapitalAssignmentSettingMap
  480.             ),
  481.             new CapitalAllocationControl (
  482.                 false,
  483.                 null,
  484.                 fixedFloatCategoryManager,
  485.                 fixedFloatEntityCapitalAssignmentSettingMap
  486.             ),
  487.             new CapitalAllocationControl (
  488.                 false,
  489.                 null,
  490.                 floatFloatCategoryManager,
  491.                 floatFloatEntityCapitalAssignmentSettingMap
  492.             )
  493.         );

  494.         EnvManager.TerminateEnv();
  495.     }
  496. }